[lvm-devel] master - pvmove: reinstantiate clustered pvmove

Zdenek Kabelac zkabelac at redhat.com
Wed Feb 7 16:49:33 UTC 2018


Dne 7.2.2018 v 08:17 Eric Ren napsal(a):
> Hello Zdenek,
> 
> I've tried this patch with clvmd and cmirrord running, and all LVs in 
> clustered VG being activated
> on both nodes. But, pvmove still cannot work as expect - move data on 
> underlying PV of the the
> non-exclusive activated LV.
> 
> ==========
> tw1:~ # pgrep -a mirrord
> 11931 cmirrord
> tw1:~ # pgrep -a clvmd
> 11748 /usr/sbin/clvmd -T90 -d0
> 
> tw1:~ # vgs -o+vg_clustered vgtest2
>      VG      #PV #LV #SN Attr   VSize VFree Clustered
>      vgtest2   2   2   0 wz--nc 9.30g 6.30g  clustered
> tw1:~ # lvs -o+lv_active_exclusively,lv_active_locally vgtest2
>      LV   VG      Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync 
> Convert ActExcl    ActLocal
>      lv1  vgtest2 -wi-a----- 2.00g active locally
>      lv2  vgtest2 -wi-a----- 1.00g active locally
> tw1:~ # pvs -S vg_name=vgtest2
>      PV         VG      Fmt  Attr PSize PFree
>      /dev/vdb1  vgtest2 lvm2 a--  4.65g 4.65g
>      /dev/vdb2  vgtest2 lvm2 a--  4.65g 1.65g
> 
> tw1:~ # pvmove /dev/vdb2
>      Cannot move in clustered VG vgtest2, clustered mirror (cmirror) not 
> detected and LVs are activated non-exclusively.
> ============
> 
> 
> GDB it a little bit. The problem seems because:
> 
> _pvmove_target_present(cmd, 1)
> 
> 
> will always return 0 - "not found".
> 
> During one pvmove command, the _pvmove_target_present() is invoked twice. At 
> first call,
> "segtype->ops->target_present()", i.e _mirrored_target_present() will set 
> "_mirrored_checked = 0".
> 
> At the second call, _mirrored_target_present() will not go through the 
> following code to get the
> "_mirror_attributes":
> 


Hi

I think I've intentionally kept away locally active LVs,
but in your case where LV is locally active just on a single node,
it still possible we can use such LV for pvmove - although during
pvmove 'restart' it  will be only  'exclusively' activated.

I'll try to think how to 'integrate' back support for  locally
active LVs on a single node back as well.


Regards

Zdenk




More information about the lvm-devel mailing list