于 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