[dm-devel] [PATCH v2] DM RAID: Add support for MD RAID10

Brassow Jonathan jbrassow at redhat.com
Thu Jul 12 19:00:35 UTC 2012


Thanks for the suggestion.  The documentation is correct, as far as I can tell.  What you take issue with is that a higher level of redundancy can be achieved by laying down the copies differently.  Neil touched on that in this message:
	http://marc.info/?l=linux-raid&m=134136516029779&w=2

When it is available to MD, I'll make it available to dm-raid also.

 brassow


On Jul 12, 2012, at 11:22 AM, keld at keldix.com wrote:

> On Wed, Jul 11, 2012 at 08:36:41PM -0500, Jonathan Brassow wrote:
>> +        [raid10_copies   <# copies>]
>> +        [raid10_format   <near|far|offset>]
>> +		These two options are used to alter the default layout of
>> +		a RAID10 configuration.  The number of copies is can be
>> +		specified, but the default is 2.  There are also three
>> +		variations to how the copies are laid down - the default
>> +		is "near".  Near copies are what most people think of with
>> +		respect to mirroring.  If these options are left unspecified,
>> +		or 'raid10_copies 2' and/or 'raid10_format near' are given,
>> +		then the layouts for 2, 3 and 4 devices	are:
>> +		2 drives         3 drives          4 drives
>> +		--------         ----------        --------------
>> +		A1  A1           A1  A1  A2        A1  A1  A2  A2
>> +		A2  A2           A2  A3  A3        A3  A3  A4  A4
>> +		A3  A3           A4  A4  A5        A5  A5  A6  A6
>> +		A4  A4           A5  A6  A6        A7  A7  A8  A8
>> +		..  ..           ..  ..  ..        ..  ..  ..  ..
>> +		The 2-device layout is equivalent 2-way RAID1.  The 4-device
>> +		layout is what a traditional RAID10 would look like.  The
>> +		3-device layout is what might be called a 'RAID1E - Integrated
>> +		Adjacent Stripe Mirroring'.
>> +
>> +		If 'raid10_copies 2' and 'raid10_format far', then the layouts
>> +		for 2, 3 and 4 devices are:
>> +		2 drives             3 drives             4 drives
>> +		--------             --------------       --------------------
>> +		A1  A2               A1   A2   A3         A1   A2   A3   A4
>> +		A3  A4               A4   A5   A6         A5   A6   A7   A8
>> +		A5  A6               A7   A8   A9         A9   A10  A11  A12
>> +		..  ..               ..   ..   ..         ..   ..   ..   ..
>> +		A2  A1               A3   A1   A2         A4   A1   A2   A3
>> +		A4  A3               A6   A4   A5         A8   A5   A6   A7
>> +		A6  A5               A9   A7   A8         A12  A9   A10  A11
> 
> The trick here for 4 drives is to keep the array running even if some 2 drives fail.
> Your layout does not so so. Only one drive may fail at any time.
> 
> I think a better layout is (for 4 drives)
> 
>          A1  A2  A3  A4
>          A5  A6  A7  A8
> 
>          .................
> 
>          A2  A1  A4  A3  (Swich in pairs for N=2)
>          A6  A5  A8  A7
> 
> Here all of the drive combinations 1+3, 1+4, 2+3, 2+4 may fail, and the array should
> still be running.. 1+2 and 3+4 could not fail without destroying the array.
> This would give a 66,7 % chance of the array surviving 2 disk crashes.
> That is better than the 0 % that the documented scheme has.
> 
> the same scheme could go for all even numbers of N in a raid10,far layout.
> consider the drives in pairs, and switch the blocks within a pair.
> 
> I think this could be generalized to N-copies: treat every group N drives,
> as N copies of the same set of selection of blocks.
> Then any N-1 of the disks in the group could fail and the arry still
> be running. Works then for arrays with straight multipla of N disks .
> 
> I am not sure that ordinary raid10 does so, but Neil has indicated so.
> I would be grateful if you could check this, and
> also test what happens with your code if you have any combination of 2 drives
> fail for the 4 drive case.
> 
>> +
>> +		If 'raid10_copies 2' and 'raid10_format offset', then the
>> +		layouts for 2, 3 and 4 devices are:
>> +		2 drives       3 drives           4 drives
>> +		--------       ------------       -----------------
>> +		A1  A2         A1  A2  A3         A1  A2  A3  A4
>> +		A2  A1         A3  A1  A2         A4  A1  A2  A3
>> +		A3  A4         A4  A5  A6         A5  A6  A7  A8
>> +		A4  A3         A6  A4  A5         A8  A5  A6  A7
>> +		A5  A6         A7  A8  A9         A9  A10 A11 A12
>> +		A6  A5         A9  A7  A8         A12 A9  A10 A11
> 
> The same problem here with 2 failing drives (for the 4 drive case).
> However I dont see an easy solution to this problem.
> 
>> +		Here we see layouts closely akin to 'RAID1E - Integrated
>> +		Offset Stripe Mirroring'.
>> +
>> +		Thanks wikipedia 'Non-standard RAID levels' for the layout
>> +		figures:
>> +		http://en.wikipedia.org/wiki/Non-standard_RAID_levels
> 
> Wikipedia may be in error wrt. the block orders.
> 
> besT regards
> Keld





More information about the dm-devel mailing list