Outils pour utilisateurs

Outils du site


sysadmin:linux:virtualisation:kvm:monter-image-disque-qemu

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sysadmin:linux:virtualisation:kvm:monter-image-disque-qemu [2025/12/29 01:52] – supprimée - modification externe (Date inconnue) 127.0.0.1sysadmin:linux:virtualisation:kvm:monter-image-disque-qemu [2026/06/22 04:58] (Version actuelle) yoann
Ligne 1: Ligne 1:
 +{{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 :
 +
 +<code bash>
 +qemu-img info afile.img
 +</code>
 +
 +<note>
 +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.
 +</note>
 +  
 +
 +===== Utiliser guestfish =====
 +
 +<code bash>
 +sudo apt install -y guestfish
 +</code>
 +
 +**guestfish** est un interpréteur de commandes, ici on l'utilise en mode interactif :
 +
 +<note>
 +Comme pour le Bash, on dispose d'une auto-complétion sur la ligne de commande via la touche <key>TAB</key> et d'une aide via la commande ''help''
 +</note>
 +
 +
 +<code bash>
 +# Passer dans le groupe effectif libvirt-qemu
 +newgrp libvirt-qemu
 +</code>
 +
 +<code bash>
 +
 +# Lancer l'interpréteur de commandes
 +guestfish
 +
 +
 +add-ro disk.img
 +run
 +list-filesystems
 +
 +mount /dev/vg_guest/lv_root /
 +cat /etc/fstab
 +
 +quit
 +</code>
 +
 +===== Utiliser guestmount =====
 +
 +Installer le paquet ''libguestfs-tools'' :
 +
 +<code bash>
 +sudo apt install -y libguestfs-tools
 +</code>
 +
 +:TODO_DOCUPDATE:
 +
 +On peut monter le système de fichier en spécifiant la VM (domain) ou en utilisant directement un fichier disque.
 +
 +
 +
 +===== 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 :
 +
 +<file>
 +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.
 +</file> 
 +
 +En relancant guestfish avec les variables proposées :
 +<code bash>
 +LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1 guestfish
 +</code>
 +
 +Parmi les traces, on peut voir le message d'erreur suivant :
 +
 +<code>
 +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
 +</code>
 +
 +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 :
 +
 +<code bash>
 +setfacl -m 'u:username:r' /boot/vmlinuz-6.17.0-29-generic
 +</code>
 +
 +
 +
 +
 +
 +===== 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/