What is the optimal raid 0 striping block size?

jnguyen4007

Distinguished
Mar 28, 2007
9
0
18,510
I put together my new 680i gaming system last night. I want to set it up primarily as a gaming system so I set the raid to raid 0. What is the optimal or good striping block size that I should set it to, 16K, 32K 64K or 128K? I know that the larger the striping block, the more wasted space it will be on the hard drive.
 

SomeJoe7777

Distinguished
Apr 14, 2006
1,081
0
19,280
I put together my new 680i gaming system last night. I want to set it up primarily as a gaming system so I set the raid to raid 0. What is the optimal or good striping block size that I should set it to, 16K, 32K 64K or 128K? I know that the larger the striping block, the more wasted space it will be on the hard drive.

64K is a good all-around size. Some people have reported excellent results with 32K as well. 128K would generally be used only for applications where large files are being used like video editing.

The stripe size has nothing to do with wasted space. High stripe sizes do not waste anything.
 

jnguyen4007

Distinguished
Mar 28, 2007
9
0
18,510
I thought that the larger the stripe size, say 128K, means that for every data saved on the hard drive it saves in 128K block increment. So if the file size, is 64K, it still saves as 128k? Or am i confusing this with something else?
 

SomeJoe7777

Distinguished
Apr 14, 2006
1,081
0
19,280
No, the RAID controller does not save things in increments. The RAID controller has nothing to do with file allocation, that is a function of the file system and it's allocation size.

You are thinking of allocation size (also called cluster size), which is a file system parameter. Higher allocation sizes result in wasted space because files smaller than the allocation unit use an entire allocation unit regardless. For example, in the old FAT and FAT32 file systems, allocation unit size was sometimes set high in order to accomodate large disks, like 32K for example. Then, any file smaller than 32K still uses 32K of disk space.

This wasted space (sometimes called cluster waste or cluster slack) is generally not a problem anymore with NTFS. First, the default allocation unit size with NTFS is 4K, even for extremely large disks. Second, files smaller than about 768 bytes can be stored directly in NTFS's MFT structure on the disk, and therefore use no clusters at all.

But the stripe size is a parameter of the RAID controller at the block level, and has nothing to do with files. It only describes the grouping of blocks into the stripes which will be simultaneously read by the controller. The issue here is that files smaller than the stripe size will not receive the benefit of the simultaneous reads - more blocks of their data will be on one drive than the other. Files smaller than (stripe size)/n (where n=number of drives in the RAID 0) will generally reside only on one drive, and won't get any read speed benefit. But in no case are any sectors on the drive wasted at the RAID controller level. When the NTFS file system goes to allocate clusters for another file, the RAID controller will stack those directly behind the last sectors, regardless of the stripe size.