Talvez muitos não saibam libguestfs, uma biblioteca escrita em C e um conjunto de ferramentas que permitem acessar e modificar as imagens de disco virtual usadas em máquinas virtuais. Além disso, você poderá trabalhar com várias plataformas de virtualização baseadas em KVM Linux e as imagens de VM serão montadas diretamente no host usando o módulo FUSE e as ferramentas guestmount/guestunmount.
Outra coisa legal sobre libguestfs é que pode acessar quase qualquer FS, ou sistema de arquivos, e isso inclui todo o Linux (ext2, ext3, ext4, XFS, btrfs,…), MS Windows (VFAT e NTFS), macOS (HFS e HFS+), bem como BSD e até gerenciamento de volume LVM2. Tudo isso em MBR e GPT.
Quanto a tipos de discos virtuais que você pode acessar, pode ser:
- qcow2
- VirtualBox.vdi
- VMWare.vmdk
- Hyper-V .vhd e .vhdx
Você também pode acessar e modificar arquivos, dispositivos locais, imagens ISO, cartões de memória SD ou fazê-lo remotamente via protocolos como:
- FTP
- HTTP
- SSH
- iSCSI
- NBD
- GlusterFS
- ceph
- Cão de guarda
- etc.
Além disso, libguestfs não precisa de privilégios, o que também é interessante. Graças a este projeto, você terá várias ferramentas de linha de comando como guestfish, guestmount, guestunmount, virt-rescue para corrigir VMs não inicializáveis, virt-cat, virt-tar, etc.
libguestfs também atua como uma API para poder vincular programas de gerenciamento em várias linguagens de programação:
- C
- C + +
- Perl
- Python
- Ruby
- Java
- PHP
- Haskell
- Erlang
- Lua
- C#
- etc.
Você também pode use-o a partir de scripts, o que é muito prático na administração de sistemas. Além disso, este projeto de Richard Jones pode ser instalado a partir dos repositórios de muitas das distribuições conhecidas desta maneira:
- Debian / Ubuntu e derivados
sudo apt install libguestfs-tools
- Fedora/CentOS/RHEL e derivados
sudo dnf install libguestfs
- Arch Linux e derivados
sudo pacman -Sy libguestfs
Aliás, se você está usando libvirt e você tentar invocar qualquer um dos utilitários ou ferramentas incluídos no libguestfs, você receberá um erro como esse:
libguestfs: error: could not create appliance through libvirt.
La solução é tão simples quanto exportar uma variável como "direta" assim:
export LIBGUESTFS_BACKEND=direct
Mais informação - Website oficial