libguestfs: accede y modifica imágenes de disco de máquinas virtuales

marzo 04, 2022 , 0 Comments

libguestfs

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


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.