Mdadm
Jump to navigation
Jump to search
Optimal chunksizes for raid5,6
ext3,4 optimal formatting values
ext2, ext3, and ext4 There are special options available when formatting RAID-4 or -5 devices with mke2fs or mkfs. The -E stride=nn,stripe-width=mm options will allow mke2fs to better place different ext2/ext3 specific data-structures in an intelligent way on the RAID device. Note: The commands mkfs or mkfs.ext3 or mkfs.ext2 are all versions of the same command, with the same options; use whichever is supported, and decide whether you are using ext2 or ext3 (non-journaled vs journaled). See the two versions of the same command below; each makes a different filesystem type. Here is an example, with its explanation below: mke2fs -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/md0 or mkfs.ext3 -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/md0 Options explained: The first command makes a ext2 filesystem, the second makes a ext3 filesystem -v verbose -m .1 leave .1% of disk to root (so it doesnt fill and cause problems) -b 4096 block size of 4kb (recommended above for large-file systems) -E stride=32,stripe-width=64 see below calculation Calculation chunk size = 128kB (set by mdadm cmd, see chunk size advise above) block size = 4kB (recommended for large files, and most of time) stride = chunk / block = 128kB / 4k = 32 stripe-width = stride * ( (n disks in raid5) - 1 ) = 32 * ( (3) - 1 ) = 32 * 2 = 64 If the chunk-size is 128 kB, it means, that 128 kB of consecutive data will reside on one disk. If we want to build an ext2 filesystem with 4 kB block-size, we realize that there will be 32 filesystem blocks in one array chunk. stripe-width=64 is calculated by multiplying the stride=32 value with the number of data disks in the array. A raid5 with n disks has n-1 data disks, one being reserved for parity. (Note: the mke2fs man page incorrectly states n+1; this is a known bug in the man-page docs that is now fixed.) A raid10 (1+0) with n disks is actually a raid 0 of n/2 raid1 subarrays with 2 disks each.