=========================================== LVM vs S/W mirroring comparison environment =========================================== Environment ----------- * Test environment consists of a Centos 6.3 Kernel Virtual Machine (guest). * Two virtual disks, hdb and hdc, 10 gigs each. Set up ------ * guest shut down: :: # virsh list --all Id Name State ---------------------------------------------------- 9 guest1 running 10 python running - guest shut off * Verify no pre-existing disks: :: # virsh vol-list default Name Path ----------------------------------------- guest.img /var/lib/libvirt/images/guest.img guest1.img /var/lib/libvirt/images/guest1.img python.img /var/lib/libvirt/images/python.img * Create volumes, add them to guest, and restart guest :: for x in 1 2 do echo virsh vol-create-as default guest-${x}.img 10g virsh vol-create-as default guest-${x}.img 10g done virsh vol-create-as default guest-1.img 10g Vol guest-1.img created . virsh vol-create-as default guest-2.img 10g Vol guest-2.img created . # virsh vol-list default | grep guest guest-1.img /var/lib/libvirt/images/guest-1.img guest-2.img /var/lib/libvirt/images/guest-2.img guest.img /var/lib/libvirt/images/guest.img guest1.img /var/lib/libvirt/images/guest1.img . # virsh attach-disk guest /var/lib/libvirt/images/guest-1.img hdb --persistent Disk attached successfully . # virsh attach-disk guest /var/lib/libvirt/images/guest-2.img hdc --persistent Disk attached successfully . # virsh domblklist guest Target Source ------------------------------------------------ hda /var/lib/libvirt/images/guest.img hdb /var/lib/libvirt/images/guest-1.img hdc /var/lib/libvirt/images/guest-2.img . # virsh start guest Domain guest started * Verify new disks on guest :: # h guest # grep sd /proc/partitions | sort -k 4 8 0 20971520 sda 8 1 512000 sda1 8 2 20458496 sda2 8 16 10485760 sdb 8 32 10485760 sdc Script ------ Straight forward scrpt to ensure repeatability: :: #!/bin/ksh # shut down guest if required: echo 'Checking if guest is running' virsh list --all | grep -i guest | grep -v guest1 | \ grep -qi running && virsh destroy guest # remove disks from guest: echo 'Removing test disks from guest' for pv in $(virsh domblklist guest | grep ^hd | \ grep -v hda | awk '{print $1}') do virsh detach-disk guest ${pv} --persistent done # delete disk images: echo 'Deleting test disks' for img in $(virsh vol-list default | grep guest- | awk '{print $NF}') do virsh vol-delete ${img} default done # recreat test disks echo 'Recreating test disks' for x in 1 2 do virsh vol-create-as default guest-${x}.img 10g done # attaching test disks to guest: echo 'Attaching test disks to guest' virsh attach-disk guest /var/lib/libvirt/images/guest-1.img hdb --persistent virsh attach-disk guest /var/lib/libvirt/images/guest-2.img hdc --persistent # restart guest echo 'restart guest' virsh start guest