What is segment size?
A segment is the amount of data in kilobytes (KiB) that is stored on a drive before the storage array moves to the next drive in the stripe (RAID group). Segment size applies only to volume groups, not pools.
Segment size is defined by the number of data blocks it contains. For example:
-
64 KiB segment = 128 data blocks
-
512 KiB segment = 1024 data blocks
When determining segment size, you must know what type of data you will store in a volume. If an application typically uses small, random reads and writes (IOPS), a smaller segment size typically works better. Alternatively, if the application has large, sequential reads and writes (throughput), a large segment size is generally better.
Whether an application uses small random reads and writes, or large sequential reads and writes, the storage array performs better if the segment size is larger than the typical data block chunk size. This normally makes it easier and faster for the drives to access the data, which is important for better storage array performance.
In an environment where IOPS performance is important
In an I/O operations per second (IOPS) environment, the storage array performs better if you use a segment size that is larger than the typical data block size (“chunk”) that is read/written to a drive. This ensures that each chunk is written to a single drive.
In an environment where throughput is important
In a throughput environment, the segment size should be an even fraction of the total drives for data and the typical data chunk size (I/O size). This spreads the data as a single stripe across the drives in the volume group leading to faster reads and writes.
For example, in a 5-drive RAID 5 volume group (4+1), if the typical read/write “chunk” size is 2 MiB, a segment size of 512 KiB (an even fraction [1/4] of the total chunk size) would be the best choice for the application's volume segment size because it ensures that each read/write is written as a single stripe of the volume group drives.