[linux-lvm] Mirror resync direction

Jonathan E Brassow jbrassow at redhat.com
Thu Oct 26 21:14:34 UTC 2006

On Oct 26, 2006, at 3:17 PM, Paul LeoNerd Evans wrote:

> I'm running kernel 2.6.17 using the lvm2 package currently in debian
> testing (2.02.06-3). I use it to set up a VG containing two
> PVs, /dev/sda2 and /dev/sdb2. I create a mirror LV using corelog:
>   lvcreate --mirror 1 --corelog ...
> I create a filesystem on it, and populate it with files. I then try
> testing how it copes with drive failures, by simulating a replaced 
> disk.
> To do this, I zero out one of the sides using
>   dd if=/dev/zero of=/dev/sda2

This doesn't really reflect what would happen if you replaced a disk, I 
don't think.  With this, you are simply going around mirror's back to 
write data to a device which it controls.

In real life, I think you would have a disk failure (which would force 
you to run 'vgreduce --removemissing vg'), then you would insert a new 
block device, pvcreate/vgextend/lvconvert.

(When dmeventd is properly running, it should take care of the steps 
that are currently manual.)

> Having done that, I do the usual restore method
>   pvcreate --uuid 'whatever' /dev/sda2
>   vgcfgrestore vg
>   vgchange -a y
> And I note that it starts to resync the mirror. But it goes in the
> "wrong" direction - sda2's PV is the master, but that's been zeroed 
> out.
> sdb2's is the slave but contains the real data. The block copying goes 
> in
> the wrong direction here, copying the master's zeroes over the good 
> data
> in the slave.

Again, mirror has no idea that you did this.  The act of dd'ing to an 
underlying device is like dd'ing to a device under a file system - it 
doesn't know you are doing it and causes corruption.

> Is this a bug in the LVM2 tools, or the dm-mirror target, or what? Is 
> it
> perhaps a limitation of --corelog; in which case, how can I protect
> against that?

LVM2 mirroring is still a work in progress (trying to get the right 
pieces upstream).  Depending on the version of LVM2 and the kernel 
patches you have, it may not work.

The use of --corelog simply means that the mirror device will be 
resynchronized every time the device is activated.  The persistent log 
(disk log) tracks what resynchronization has been done and can avoid 
all complete resyncs.


More information about the linux-lvm mailing list