Install.
# apt-get install libguestfs-tools # apt-get install guestfish
guestfish
The libguestfs Filesystem Interactive SHell.
An example: explore, read and write to disk image file within the libguestfs VM.
# guestfish --rw -a /home/vm/anaxagoras.qcow2 >run 100% ⟦▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓⟧ 00:00 > list-filesystems /dev/vda1: ext4 /dev/vda2: unknown /dev/vda5: swap > mount /dev/vda1 /
Add a file to the disk image file system.
>touch /etc/guestfish_play > edit /etc/guestfish_play > quit #
virt-cat
Display files in a virtual machine.
eg:
# virsh list Id Name State ---------------------------------------------------- 9 anaxagoras running # virt-cat anaxagoras /etc/issue Debian GNU/Linux 7 \n \l # virt-cat anaxagoras /etc/hostname anaxagoras
guestmount
Mount a guest filesystem on the host using FUSE and libguestfs
Install
# apt-get install guestmount
Mount rw a filesystem contained in a disk image file.
# mkdir /mnt/anax # guestmount -a /home/vm/anaxagoras.qcow2 -m /dev/vda1 --rw /mnt/anax/
# cat /mnt/anax/etc/guestfish_play hi # echo "hi kosme" > /mnt/anax/etc/guestfish_play # mv /mnt/anax/etc/guestfish_play /mnt/anax/etc/guestmount_play # umount /mnt/anax
guestmount is and looks traditionally-scriptable. However, guestfish is as or more scriptable. Also, libguestfs has cute C , Perl and Python APIs.
virt-df
List free space on virtual filesystems.
# virt-df anaxagoras Filesystem 1K-blocks Used Available Use% anaxagoras:/dev/sda1 19751804 840608 17907832 5%
virt-filesystems
List filesystems, partitions, block devices, LVM in a virtual machine or a disk image file.
eg:
# virt-filesystems --long --parts --blkdevs -a /home/vm/anaxagoras.qcow2 -h Name Type MBR Size Parent /dev/sda1 partition 83 19G /dev/sda /dev/sda2 partition 05 1.0K /dev/sda /dev/sda5 partition 82 880M /dev/sda /dev/sda device - 20G -
or
# virt-filesystems --long -h --all -a anaxagoras.qcow2 Name Type VFS Label MBR Size Parent /dev/sda1 filesystem ext4 - - 19G - /dev/sda2 filesystem unknown - - 1.0K - /dev/sda5 filesystem swap - - 880M - /dev/sda1 partition - - 83 19G /dev/sda /dev/sda2 partition - - 05 1.0K /dev/sda /dev/sda5 partition - - 82 880M /dev/sda /dev/sda device - - - 20G -
virt-list-filesystems
List filesystems in a virtual machine or disk image.
eg:
# virt-list-filesystems anaxagoras.qcow2 /dev/sda1 # virt-list-filesystems anaxagoras /dev/sda1
virt-resize
Resize a virtual disk image file.
Eg: Expand the 20GB anaxagoras qcow2 disk image file to a 30GB qcow2 disk image file.
# truncate -r anaxagoras.qcow2 anaxagoras30G.qcow2 # truncate -s +10G anaxagoras30G.qcow2 # virt-resize --expand /dev/sda1 anaxagoras.qcow2 anaxagoras30G.qcow2 Examining anaxagoras.qcow2 ... ********** Summary of changes: /dev/sda1: This partition will be resized from 19.1G to 29.1G. The filesystem ext4 on /dev/sda1 will be expanded using the 'resize2fs' method. /dev/sda2: This partition will be left alone. ********** Setting up initial partition table on anaxagoras30G.qcow2 ... Copying /dev/sda1 ... 100% ⟦▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓⟧ 00:00 Copying /dev/sda2 ... 100% ⟦▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓⟧ 00:00 Expanding /dev/sda1 using the 'resize2fs' method ... Resize operation completed with no errors. Before deleting the old disk, carefully check that the resized disk boots and works correctly.Test resized image.
# cd /etc/libvirt/qemu/ # stor anaxagoras.xml # virsh virsh # edit anaxagoras virsh # define anaxagoras.xml virsh # start anaxagoras virsh # quit # ssh anaxagoras root@anaxagoras:~# df -h Filesystem Size Used Avail Use% Mounted on rootfs 29G 822M 27G 3% / udev 10M 0 10M 0% /dev tmpfs 202M 172K 202M 1% /run /dev/disk/by-uuid/8ca4bd34-120c-45ff-bd0b-86d8de552d10 29G 822M 27G 3% / tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 579M 0 579M 0% /run/shm
More virt-.* tools.
virt-alignment-scan virt-filesystems virt-ls virt-tar-in virt-cat virt-format virt-make-fs virt-tar-out virt-clone virt-host-validate virt-pki-validate virt-viewer virt-convert virt-image virt-rescue virt-win-reg virt-copy-in virt-inspector virt-resize virt-xml-validate virt-copy-out virt-install virt-sparsify virt-df virt-list-filesystems virt-sysprep virt-edit virt-list-partitions virt-tar
The system used.
# cat /etc/debian_version /etc/issue 7.6 Debian GNU/Linux 7 \n \l
libguestfs basics