libguestfs: accede y modifica imágenes de disco de máquinas virtuales
Quizás no muchos conocen libguestfs, una biblioteca escrita en C y un conjunto de herramientas que te permiten acceder y modificar las imágenes de disco virtual empleadas en las máquinas virtuales. Además, podrás trabajar con varias plataformas de virtualización basadas en KVM de Linux, y las imágenes de las MV se montarán directamente sobre el host haciendo uso del módulo FUSE y con las herramientas guestmount/guestunmount.
Otro detalle positivo de libguestfs es que puede acceder a casi cualquier FS, o sistema de archivos, y eso incluye todos los de Linux (ext2, ext3, ext4, XFS, btrfs,…), los de MS Windows (VFAT y NTFS), los de macOS (HFS y HFS+), así como los de BSD, e incluso gestión de volúmenes LVM2. Todo eso tanto en MBR como en GPT.
En cuanto a los tipos de discos virtuales a los que puede acceder, pueden ser:
- qcow2
- VirtualBox .vdi
- VMWare .vmdk
- Hyper-V .vhd y .vhdx
También puede acceder y modificar archivos, dispositivos locales, imágenes ISO, tarjetas de memoria SD, o hacerlo de forma remota a través de protocolos como:
- FTP
- HTTP
- SSH
- iSCSI
- NBD
- GlusterFS
- Ceph
- Sheepdog
- etc.
Por otro lado, libguestfs no necesita privilegios, lo que también resulta interesante. Gracias a este proyecto, tendrás varias herramientas de línea de comandos como guestfish, guestmount, guestunmount, virt-rescue para reparar las MV que no arrancan, virt-cat, virt-tar, etc.
libguestfs también actúa como una API para poder vincular programas de administración en diversos lenguajes de programación:
- C
- C++
- Perl
- Python
- Ruby
- Java
- PHP
- Haskell
- Erlang
- Lua
- C#
- etc.
También puedes usarlo desde scripts, lo que resulta muy práctico a la hora de administrar sistemas. Además, este proyecto de Richard Jones se puede instalar desde los repos de muchas de las distros conocidas de esta forma:
- Debian/Ubuntu y derivados
sudo apt install libguestfs-tools
- Fedora/CentOS/RHEL y derivados
sudo dnf install libguestfs
- Arch Linux y derivados
sudo pacman -Sy libguestfs
Por cierto, si estás usando libvirt y tratas de invocar a alguna de las utilidades o herramientas incluidas en libguestfs, vas a recibir un error como este:
libguestfs: error: could not create appliance through libvirt.
La solución es tan simple como exportar una variable como «direct» así:
export LIBGUESTFS_BACKEND=direct
Más información – Sitio web oficial