21.8. virt-resize: Resizing Guest Virtual Machines Offline This section provides information about resizing offline guest virtual machines. 21.8.1. Introduction This section describes virt-resize , a tool for expanding or shrinking guest virtual machines. It only works for guest virtual machines that are offline (shut down). It works by copying the guest virtual machine image and leaving the original disk image untouched. This is ideal because you can use the original image as a backup, however there is a trade-off as you need twice the amount of disk space. 21.8.2. Expanding a Disk Image This section demonstrates a simple case of expanding a disk image: Locate the disk image to be resized. You can use the command virsh dumpxml GuestName for a libvirt guest virtual machine. Decide on how you wish to expand the guest virtual machine. Run virt-df -h and virt-filesystems on the guest virtual machine disk, as shown in the following output: The following example demonstrates how to: Increase the size of the first (boot) partition, from approximately 100MB to 500MB. Increase the total disk size from 8GB to 16GB. Expand the second partition to fill the remaining space. Expand /dev/VolGroup00/LogVol00 to fill the new space in the second partition. Make sure the guest virtual machine is shut down. Rename the original disk as the backup. How you do this depends on the host physical machine storage environment for the original disk. If it is stored as a file, use the mv command. For logical volumes (as demonstrated in this example), use lvrename : Create the new disk. The requirements in this example are to expand the total disk size up to 16GB. Since logical volumes are used here, the following command is used: The requirements from step 2 are expressed by this command: The first two arguments are the input disk and output disk. --resize /dev/sda1=500M resizes the first partition up to 500MB. --expand /dev/sda2 expands the second partition to fill all remaining space. --LV-expand /dev/VolGroup00/LogVol00 expands the guest virtual machine logical volume to fill the extra space in the second partition. virt-resize describes what it is doing in the output: Try to boot the virtual machine. If it works (and after testing it thoroughly) you can delete the backup disk. If it fails, shut down the virtual machine, delete the new disk, and rename the backup disk back to its original name. Use virt-df or virt-filesystems to show the new size: Note that resizing guest virtual machines in some cases may become problematic. If virt-resize fails, there are a number of tips that you can review and attempt in the virt-resize(1) man page. For some older Red Hat Enterprise Linux guest virtual machines, you may need to pay particular attention to the tip regarding GRUB.

Commands:
virt-df -h -a /dev/vg_guests/RHEL6 Filesystem Size Used Available Use% RHEL6:/dev/sda1 98.7M 10.0M 83.6M 11% RHEL6:/dev/VolGroup00/LogVol00 6.8G 2.2G 4.3G 32% virt-filesystems -a disk.img --all --long -h /dev/sda1 ext3 101.9M /dev/sda2 pv 7.9G
lvrename /dev/vg_guests/RHEL6 /dev/vg_guests/RHEL6.backup
lvcreate -L 16G -n RHEL6 /dev/vg_guests Logical volume "RHEL6" created
virt-resize /dev/vg_guests/RHEL6.backup /dev/vg_guests/RHEL6 --resize /dev/sda1=500M --expand /dev/sda2 --LV-expand /dev/VolGroup00/LogVol00
Summary of changes: /dev/sda1: partition will be resized from 101.9M to 500.0M /dev/sda1: content will be expanded using the 'resize2fs' method /dev/sda2: partition will be resized from 7.9G to 15.5G /dev/sda2: content will be expanded using the 'pvresize' method /dev/VolGroup00/LogVol00: LV will be expanded to maximum size /dev/VolGroup00/LogVol00: content will be expanded using the 'resize2fs' method Copying /dev/sda1 [#####################################################] Copying /dev/sda2 [#####################################################] Expanding /dev/sda1 using the 'resize2fs' method Expanding /dev/sda2 using the 'pvresize' method Expanding /dev/VolGroup00/LogVol00 using the 'resize2fs' method
virt-df -h -a /dev/vg_pin/RHEL6 Filesystem Size Used Available Use% RHEL6:/dev/sda1 484.4M 10.8M 448.6M 3% RHEL6:/dev/VolGroup00/LogVol00 14.3G 2.2G 11.4G 16%