= Guest Disk Resize SOP

Resize disks in our kvm guests

== Contents

* <<_contact_information>>
* <<_how_to_do_it>>
** <<_kvmlibvirt_guests>>

== Contact Information

Owner:::
  Fedora Infrastructure Team
Contact:::
  #fedora-admin, sysadmin-main
Location:::
  PHX, Tummy, ibiblio, Telia, OSUOSL
Servers:::
  All xen servers, kvm/libvirt servers.
Purpose:::
  Resize guest disks

== How to do it

=== KVM/libvirt Guests

[arabic]
. SSH to the kvm server and resize the guest's logical volume. If you
  want to be extra careful, make a snapshot of the LV first:
+
....
lvcreate -n [guest name]-snap -L 10G -s /dev/VolGroup00/[guest name] 
....
+
Optional, but always good to be careful

. Shutdown the guest:
+
....
sudo virsh shutdown [guest name]
....

. Disable the guests lv:
+
....
lvchange -an /dev/VolGroup00/[guest name]
....

. Resize the lv:
+
....
lvresize -L [NEW TOTAL SIZE]G /dev/VolGroup00/[guest name]

or

lvresize -L +XG /dev/VolGroup00/[guest name]
(to add X GB to the disk)
....
. Enable the lv:
+
....
lvchange -ay /dev/VolGroup00/[guest name]
....

. Bring the guest back up:
+
....
sudo virsh start [guest name]
....
. Login into the guest:
+
....
sudo virsh console [guest name]
You may wish to boot single user mode to avoid services coming up and going down again
....

. On the guest, run:
+
....
fdisk /dev/vda
....

. Delete the the LVM partition on the guest you want to add space to and
recreate it with the maximum size. Make sure to set its type to LV (8e):
+
....
p to list partitions
d to delete selected partition
n to create new partition (default values should be ok)
t to change partition type (set to 8e)
w to write changes 
....

. Run partprobe:
+
....
partprobe
....

. Check the size of the partition:
+
....
fdisk -l /dev/vdaN
....
+
If this still reflects the old size, then reboot the guest and verify
that its size changed correctly when it comes up again.

. Login to the guest again, and run:
+
....
pvresize /dev/vdaN
....

. A vgs should now show the new size. Use lvresize to resize the root
lv:
+
....
lvresize -L [new root partition size]G /dev/GuestVolGroup00/root

(pvs will tell you how much space is available)
....

. Finally, resize the root partition:
+
....
resize2fs /dev/GuestVolGroup00/root
(If the root fs is ext4)

or

xfs_growfs /dev/GuestVolGroup00/root
(if the root fs is xfs)
....
+
verify that everything worked out, and delete the snapshot you made if
you made one.
