To resize a virtual drive

From DISI
Jump to navigation Jump to search

Resizing a virtual drive (machine must be off): 0) Read man page

man virt-resize

1) Shut Machine down

   virsh shutdown myvm

2) Be extra safe and make a copy of the disk (space permitting)

   cp myvm-disk1 myvm-disk1~preresize

3) Examine virtual drive's structure

virt-filesystems --long -h --all -a myvm-disk1~preresize

4) Create new drive (this uses the QCOW2 format. Multiple options available)

qemu-img create -f qcow2 -o preallocation=metadata myvm-disk1~postresize 15G

5) Use vm resize command to populate new disk with expanded partitions (and also expand LVM if applicable)

virt-resize --expand /dev/sda2 --lv-expand /dev/vg_myvm/root_lv myvm-disk1~preresize myvm-disk1~postresize

6) To expand more than 1 LVM partition, repeat the process

qemu-img create -f qcow2 -o preallocation=metadata myvm-disk1~postresize2 25G
virt-resize --expand /dev/sda2 --lv-expand /dev/vg_myvm/var_lv myvm-disk1~postresize myvm-disk1~postresize2

7) Swap file names around

mv myvm-disk1 myvm-disk1~original
mv myvm-disk1~postresize2 myvm-disk1

8) Start virtual machine

virsh start myvm

9) Cross fingers There may be a permissions problem that causes the following error message upon starting the resized VM

[root@tet qemu]# virsh start tau
error: Failed to start domain tau
error: internal error Process exited while reading console log output: 2016-10-05T16:12:09.032816Z qemu-kvm: -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/tau.monitor,server,nowait: socket bind failed: Permission denied
2016-10-05T16:12:09.033101Z qemu-kvm: -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/tau.monitor,server,nowait: chardev: opening backend "socket" failed

To address this, change /var/lib/libvirt/qemu to be owned by qemu and under qemu group.

10) If all is OK, clear out old and temporary disks

rm myvm-disk1~postresize
rm myvm-disk1~original

Alternative Resize method

This method is for resizing a VM's image file directly. It only works on certain image files.
1) Shutdown the vm

virsh shutdown <vm-name>

2) Find the VM's image file on the hypervisor (Typically somewhere under /var/lib/libvirt/images)

3) Apply an image resize:

qemu-img resize <vm-disk-image> <+/- amount of HDD space to add/subtract>

4) Start VM and re-partition once it is on.