Martin T
2014-Mar-08 02:23 UTC
Re: questions regarding file-system optimization for sortware-RAID array
Andreas, why is it relevant only in case of RAID5 or RAID6? regards, Martin On Fri, Mar 7, 2014 at 5:57 PM, Andreas Dilger <adilger@dilger.ca> wrote:> Note that stride and stripe width only make sense for RAI-5/6 arrays. > For RAID-1 it doesn't really matter. > > Cheers, Andreas > >> On Mar 6, 2014, at 13:46, Martin T <m4rtntns@gmail.com> wrote: >> >> Hi, >> >> I created a RAID1 array of two physical HDD's with chunk size of 64KiB under Debian "wheezy" using mdadm. As a next step, I would like to create an ext3(or ext4) file-system to this RAID1 array using mke2fs utility. According to RAID-related tutorials, I should create the file-system like this: >> >> # mkfs.ext3 -v -L myarray -m 0.5 -b 4096 -E stride=16,stripe-width=32 /dev/md0 >> >> >> Questions: >> >> 1) According to manual of mke2fs, value of the "stride" has to be the RAID chunk size in clusters. As I use chunk size of 64KiB, then I have to use "stride" value of 16(16*4096=65536). Why is it important for file-system to know the size of chunk used in RAID array? I know it improves the I/O performance, but why is this so? >> >> 2) If the "stride" size in my case is 16, then the "stripe_width=" is 32 because there are two drives in the array which contain the actual data. Manual page of the mke2fs explain this option as "This allows the block allocator to prevent read-modify-write of the parity in a RAID stripe if possible when the data is written.". How to understand this? What is this "read-modify-write" behavior? Could somebody explain this with an example? >> >> >> regards, >> Martin >> _______________________________________________ >> Ext3-users mailing list >> Ext3-users@redhat.com >> https://www.redhat.com/mailman/listinfo/ext3-users
Andreas Dilger
2014-Mar-08 17:20 UTC
Re: questions regarding file-system optimization for sortware-RAID array
The stripe and stride options do two things: - shift block and inode bitmaps in each group to be on different disks - align the block allocation to the stripe and stride boundaries to avoid read-modify-write in RAID The first one is irrelevant if the flex_bg option is used, since it already packs the bitmaps together and achieves the same effect. The second is meaningless for RAID-1 since writes go to every disk and there is no parity or read-modify-write for small or unaligned writes. Cheers, Andreas> On Mar 7, 2014, at 19:23, Martin T <m4rtntns@gmail.com> wrote: > > Andreas, > > why is it relevant only in case of RAID5 or RAID6? > > > regards, > Martin > >> On Fri, Mar 7, 2014 at 5:57 PM, Andreas Dilger <adilger@dilger.ca> wrote: >> Note that stride and stripe width only make sense for RAID-5/6 arrays. >> For RAID-1 it doesn't really matter. >> >> Cheers, Andreas >> >>> On Mar 6, 2014, at 13:46, Martin T <m4rtntns@gmail.com> wrote: >>> >>> Hi, >>> >>> I created a RAID1 array of two physical HDD's with chunk size of 64KiB under Debian "wheezy" using mdadm. As a next step, I would like to create an ext3(or ext4) file-system to this RAID1 array using mke2fs utility. According to RAID-related tutorials, I should create the file-system like this: >>> >>> # mkfs.ext3 -v -L myarray -m 0.5 -b 4096 -E stride=16,stripe-width=32 /dev/md0 >>> >>> >>> Questions: >>> >>> 1) According to manual of mke2fs, value of the "stride" has to be the RAID chunk size in clusters. As I use chunk size of 64KiB, then I have to use "stride" value of 16(16*4096=65536). Why is it important for file-system to know the size of chunk used in RAID array? I know it improves the I/O performance, but why is this so? >>> >>> 2) If the "stride" size in my case is 16, then the "stripe_width=" is 32 because there are two drives in the array which contain the actual data. Manual page of the mke2fs explain this option as "This allows the block allocator to prevent read-modify-write of the parity in a RAID stripe if possible when the data is written.". How to understand this? What is this "read-modify-write" behavior? Could somebody explain this with an example? >>> >>> >>> regards, >>> Martin >>> _______________________________________________ >>> Ext3-users mailing list >>> Ext3-users@redhat.com >>> https://www.redhat.com/mailman/listinfo/ext3-users
Martin T
2014-Mar-12 14:30 UTC
Re: questions regarding file-system optimization for sortware-RAID array
Stephen, thank you for the reply! I made a drawing based on your answer: http://s21.postimg.org/kcn4q92rr/fs_and_chunk_size.png As you can see, there are two scenario described- first one where I modify f1, f2, f3 and f4 files on a file-system which does not take the RAID chunk-size into account and second scenario where ext3/ext4 file-system is aware of the RAID chunk-size. Please confirm, that I understand you correctly. Andreas, what does this "read-modify-write" behavior mean? regards, Martin On 3/8/14, Andreas Dilger <adilger@dilger.ca> wrote:> The stripe and stride options do two things: > - shift block and inode bitmaps in each group to be on different disks > - align the block allocation to the stripe and stride boundaries to > avoid read-modify-write in RAID > > The first one is irrelevant if the flex_bg option is used, since it already > packs > the bitmaps together and achieves the same effect. > > The second is meaningless for RAID-1 since writes go to every disk and > there is no parity or read-modify-write for small or unaligned writes. > > Cheers, Andreas > >> On Mar 7, 2014, at 19:23, Martin T <m4rtntns@gmail.com> wrote: >> >> Andreas, >> >> why is it relevant only in case of RAID5 or RAID6? >> >> >> regards, >> Martin >> >>> On Fri, Mar 7, 2014 at 5:57 PM, Andreas Dilger <adilger@dilger.ca> >>> wrote: >>> Note that stride and stripe width only make sense for RAID-5/6 arrays. >>> For RAID-1 it doesn't really matter. >>> >>> Cheers, Andreas >>> >>>> On Mar 6, 2014, at 13:46, Martin T <m4rtntns@gmail.com> wrote: >>>> >>>> Hi, >>>> >>>> I created a RAID1 array of two physical HDD's with chunk size of 64KiB >>>> under Debian "wheezy" using mdadm. As a next step, I would like to >>>> create an ext3(or ext4) file-system to this RAID1 array using mke2fs >>>> utility. According to RAID-related tutorials, I should create the >>>> file-system like this: >>>> >>>> # mkfs.ext3 -v -L myarray -m 0.5 -b 4096 -E stride=16,stripe-width=32 >>>> /dev/md0 >>>> >>>> >>>> Questions: >>>> >>>> 1) According to manual of mke2fs, value of the "stride" has to be the >>>> RAID chunk size in clusters. As I use chunk size of 64KiB, then I have >>>> to use "stride" value of 16(16*4096=65536). Why is it important for >>>> file-system to know the size of chunk used in RAID array? I know it >>>> improves the I/O performance, but why is this so? >>>> >>>> 2) If the "stride" size in my case is 16, then the "stripe_width=" is 32 >>>> because there are two drives in the array which contain the actual data. >>>> Manual page of the mke2fs explain this option as "This allows the block >>>> allocator to prevent read-modify-write of the parity in a RAID stripe if >>>> possible when the data is written.". How to understand this? What is >>>> this "read-modify-write" behavior? Could somebody explain this with an >>>> example? >>>> >>>> >>>> regards, >>>> Martin >>>> _______________________________________________ >>>> Ext3-users mailing list >>>> Ext3-users@redhat.com >>>> https://www.redhat.com/mailman/listinfo/ext3-users >
Reasonably Related Threads
- Re: questions regarding file-system optimization for sortware-RAID array
- Re: questions regarding file-system optimization for sortware-RAID array
- questions regarding file-system optimization for sortware-RAID array
- Calculating stride values?
- Format details for a raid partition....