[dm-devel] Queuing of dm-raid1 resyncs to the same underlying block devices
Heinz Mauelshagen
heinzm at redhat.com
Thu Oct 1 10:09:44 UTC 2015
On 10/01/2015 12:20 AM, Neil Brown wrote:
> Heinz Mauelshagen <heinzm at redhat.com> writes:
>> BTW:
>> When you create a raid1/4/5/6/10 LVs _and_ never read what you have not
>> written,
>> "--nosync" can be used anyway in order to avoid the initial
>> resynchronization load
>> on the devices. Any data written in that case will update all
>> mirrors/raid redundancy data.
>>
> While this is true for RAID1 and RAID10, and (I think) for the current
> implementation of RAID6, it is definitely not true for RAID4/5.
Thanks for the clarification.
I find that to be really bad situation.
>
> For RAID4/5 a single-block write will be handled by reading
> old-data/parity, subtracting the old data from the parity and adding the
> new data, then writing out new data/parity.
Obviously for optimization reasons.
> So if the parity was wrong before, it will be wrong afterwards.
So even overwriting complete stripes in raid4/5/(6)
would not ensure correct parity, thus always requiring
initial sync.
We should think about a solution to avoid it in lieu
of growing disk/array sizes.
Heinz
>
> If the device that new data was written to then fails, the data on it is
> lost.
>
> So do this for RAID1/10 if you like, but not for other levels.
>
> NeilBrown
More information about the dm-devel
mailing list