{{tag>sysadmin linux montage virtualisation qemu kvm disque stockage}}
:TODO_DOCUPDATE:
====== Monter un disque virtuel QEMU sur le système hôte ======
Il est possible d'accéder au contenu d'un disque virtuel directement depuis le système hôte en montant la ou les partitions présentes dans l'image disque d'une VM. Pour les cas évoqués dans cette note, le système invité ne s'exécute pas.
Plusieurs possibilités :
* Utiliser le shell **guestfish** ;
* Utiliser la commande **guestmount** ;
* Utiliser directement la commande **mount** en déterminant au préalable l'**offset** (pour une image de type **RAW** uniquement).
===== Déterminer le type de l'image disque =====
La commande **qemu-img** avec l'argument ''info'' retourne les informations sur le fichier disque :
qemu-img info afile.img
Une image de type **RAW** pourra être utilisée par les outils ''guestfish'' et ''guestmount'' ou montée directement avec ''mount''. A contrario, la commande mount ne pourra pas utiliser directement une image **QCOW2**. Le format **QCOW2** intègre des fonctionnalités avancées comme les snapshots, le **COW**((**C**opy **O**n **W**rite)) et la compression et ne peut pas être utilisé directement par mount ou losetup.
===== Utiliser guestfish =====
sudo apt install -y guestfish
**guestfish** est un interpréteur de commandes, ici on l'utilise en mode interactif :
Comme pour le Bash, on dispose d'une auto-complétion sur la ligne de commande via la touche TAB et d'une aide via la commande ''help''
A corriger :
Pour pouvoir utiliser sans erreur les fichiers disques, l'utilisateur doit faire parti du group lib
confère note
# Passer dans le groupe effectif libvirt-qemu
newgrp libvirt-qemu
# Lancer l'interpréteur de commandes
guestfish
#
add-ro disk.img
run
list-filesystems
mount /dev/vg_guest/lv_root /
cat /etc/fstab
quit
===== Utiliser guestmount =====
Installer le paquet libguestfs-tools :
sudo apt install -y libguestfs-tools
===== Convertir QCOW2 vers RAW =====
Confère note [[sysadmin:linux:virtualisation:kvm:conversions-raw-qcow2|conversions RAW <-> QCOW2]]
===== Monter une image RAW =====
==== Montage depuis l'espace utilisateur ====
Pour les systèmes s'appuyant sur **FUSE**((**F**ilesystem in **U**ser **S**pac**E**))
===== Dépannage =====
==== guestfish : Erreur systématique au montage des systèmes de fichiers ====
Lors de toute tentative de montage d'un système de fichier avec guesfish, on obtient le message d'erreur suivant :
libguestfs : erreur : /usr/bin/supermin s'est terminé avec l'état d'erreur 1.
To see full error messages you may need to enable debugging.
Do:
export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
and run the command again. For further information, read:
http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
You can also run 'libguestfs-test-tool' and post the *complete* output
into a bug report or message to the libguestfs mailing list.
En relancant guestfish avec les variables proposées :
LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1 guestfish
Parmi les traces, on peut voir le message d'erreur suivant :
cp: cannot open '/boot/vmlinuz-6.17.0-29-generic' for reading: Permission denied
supermin: cp -p '/boot/vmlinuz-6.17.0-29-generic' '/var/tmp/.guestfs-1000/appliance.d.jukqktdx/kernel': command failed, see earlier errors
libguestfs : erreur : /usr/bin/supermin s'est terminé avec l'état d'erreur 1, voir les messages de débogage ci-dessus
Dans le cas reporté ici, l'utilisateur exécutant guestfish n'a pas le droit de lecture sur le fichier ''/boot/vmlinuz-6.17.0-29-generic''. On peut [[sysadmin:linux:permissions-acces-avancees-via-acl|utiliser les ACL]] pour autoriser spécifiquement le droit de lecture à notre utilisateur :
setfacl -m 'u:username:r' /boot/vmlinuz-6.17.0-29-generic
===== Références =====
* [[https://www.howtogeek.com/devops/how-to-mount-a-qemu-virtual-disk-image/|Comment monter une image disque QEMU ? (howtogeek.com) (en)]]
* [[https://www.baeldung.com/linux/mount-qcow2-image|Monter une image au format QCOW2 (baeldung.com) (en)]]
* [[https://www.qemu.org/2021/08/22/fuse-blkexport/|Présenter l'image disque d'un système invité comme un fichier raw via FUSE (qemu.org) (en)]]
* https://computingforgeeks.com/how-to-modify-vm-images-with-guestfish/