Sysadmin/Add resources to a VM

From Sugar Labs
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Hot-adding a virtio volume to a running VM

virsh vol-create-as housetree jita-srv 20G
virsh attach-disk  jita /dev/housetree/jita-srv vdb

Adding memory to a VM

Shutdown the VM

sudo virsh shutdown "name_of_vm"

Edit the configuration of the VM

sudo virsh edit "name_of_vm"
...
  <memory>XXXXXX</memory>    <--- XXXXXX is (number of gigabytes of memory * 1024 * 1024)
  <currentMemory>XXXXXX</currentMemory>    <--- XXXXXX Should be the same as the previous line

Start the VM

sudo virsh start "name_of_vm"

Extending a raw disk image

This procedure applies to full-disk images containing an MBR partition table.

NOTE: The VM using this disk MUST be shut down beforehand - or it will corrupt the filesystem!

First, append some space at the end of the disk:

dd if=/dev/zero bs=1M count=$((1024-256)) >>example-boot.img

Then extend the partition to fill the entire disk:

parted example-boot.img

(parted) resizepart 1
End?  [267MB]? -1

(parted) p
Model:  (file)
Disk /var/lib/libvirt/images/boot/example-boot.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1073MB  1072MB  primary  ext4         boot

(parted) quit

Now create device nodes for the new partition table:

# kpartx -av lightwave-boot-new.img
add map loop7p1 (253:4): 0 2093152 linear 7:7 2048 

Grow the filesystem inside the partition (resize2fs requires an fsck beforehand):

# e2fsck -f /dev/mapper/loop7p1
# resize2fs /dev/mapper/loop7p1

Now loopback-mount your grown up filesystem to check if it's healthy:

# mount /dev/mapper/loop7p1 /mnt
# df -h /mnt
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/loop7p1  986M  112M  820M  12% /mnt

Don't forget to unmount the filesystem and undefine the loopback devices!

umount /mnt
kpartx -d lightwave-boot-new.img

Et voilà!

Extending a QCOW disk file

Create a file containing the amount of space you want to add to the VM

sudo qemu-img create -f raw additional.raw <size>

Shutdown the VM ----- DO NOT SKIP THIS STEP. YOU WILL CORRUPT THE VM IF YOU DO THIS WHILE IT IS RUNNING

sudo virsh shutdown "name_of_vm"

Convert the VM to raw if needed

sudo qemu-img convert -f "name_of_vm".qcow2 -O raw "name_of_vm".raw

Add the additional space to the VM

sudo cat additional.raw >> "name_of_vm".raw