[libvirt] libvirt and clustered volume group problems

Osier Yang jyang at redhat.com
Tue Oct 25 01:37:59 UTC 2011


于 2011年10月25日 00:56, Rommer 写道:
> Hello,
>
> Description of problem:
> a) libvirt should use vgchange -aly/-aln instead of vgchange -ay/-an 
> for clustered volume groups
> b) libvirt should skip not activated/suspended volumes during 
> pool-create/pool-refresh for logical pools
>
> Version-Release number of selected component (if applicable):
> libvirt-0.9.6
>
> How reproducible:
> always
>
> Steps to Reproduce:
>
> a) vgchange -ay/-an
> 1. Build 2-node cluster
> 2. Create clustered volume group
> 3. Create logical storage pool in libvirt
> 4. Open/mount any volume on the first node
> 5. Try to destroy storage pool on the second node
>
> b) not activated volumes:
> 1. Build 2-node cluster
> 2. Create clustered volume group
> 3. Activate exclusively any volume on the first node
> 4. Try to create pool on the second node
>
> Actual results:
>
> a) vgchange -ay/-an
> # virsh pool-destroy vg
> error: Failed to destroy pool vg
> error: internal error '/sbin/vgchange -an vg' exited with non-zero 
> status 5 and
> signal 0: Error locking on node node1: LV vg/lv1 in use: not deactivating
>
> b) not activated volumes:
> # virsh pool-create vg.xml
> error: Failed to create pool from vg.xml
> error: internal error lvs command failed
>
> Expected results:
>
> a) vgchange -ay/-an
> # virsh pool-destroy vg
> Pool vg destroyed
>
> b) not activated volumes:
> # virsh pool-create vg.xml
> Pool vg created from vg.xml
>
> Additional info:
> Attached patch fix problem for me.
> Original bug report: https://bugzilla.redhat.com/show_bug.cgi?id=748437
> a) https://bugzilla.redhat.com/show_bug.cgi?id=748248
> b) https://bugzilla.redhat.com/show_bug.cgi?id=748282

Hi, Rommer

The patch is not made against upstream libvirt, there is conflicts with
commit 82c1740ab9.

Looks like just changing "-an/-ay" into "-aln-/aly" will fix both a) and b).

The codes for skipping the inactive vols are after "lvs" command, so
that's not the acual fix for b). (there is error "lvs command failed"). b)
works with the fix is just because the pool is activated by "vgchange -aly".

Or do you have an aditional purpose (skip the inactive vols for logical
pool)? which I guess is not right, we allows inactive logical vols exists
for the pool. However, we might need to expose the active/inactive
info as an extent info in the vol XML, and introduce new internal API
for logical backend and supports activate/deactivate logical vols.

But I might be wrong, as did no testing.

Osier




More information about the libvir-list mailing list