{{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/