web-dev-qa-db-fra.com

Comment afficher le système de fichiers en direct de QEMU / KVM VM en externe?

J'ai besoin de visualiser le système de fichiers d'un QEMU/KVM (avec virt-manager comme interface graphique) Ubuntu VM avec des mises à jour en direct des informations. Bien que j'aie besoin de voir cette information en externe à partir de la VM (dans l'hôte). En d’autres termes, il ne serait pas pratique de la visualiser depuis la machine virtuelle, mais plutôt depuis l’hôte. Y a-t-il une manière de faire ça? L’hôte et l’invité seront Ubuntu GNOME 16.10 avec GNOME 3.22.

Bien que ce soit à des fins de test de pénétration, l’invité peut varier, même s’il est probable qu’il ne concerne que les saveurs Ubuntu.

1
user364819

Lorsque vous êtes dans virt-manager, vous pouvez trouver le chemin du fichier correspondant dans la configuration de la VM/du disque (quelque chose comme "chemin source"); Le chemin par défaut est /var/lib/libvirt/images/. Découvrez le nom de l'image du disque virtuel.

Disons que le chemin de l'image est /var/lib/libvirt/images/disk1.qcow2 (je suppose que le format qcow2 ici).

Tout d'abord, installez libguestfs-tools sur l'hôte:

Sudo apt-get install libguestfs-tools

Vous pouvez ensuite monter le disque virtuel en

Sudo guestmount -a <image-file> -m <device> --ro /mnt

<image-file> représente le chemin d'accès complet à l'image disque et <device> le nom de périphérique de la partition à monter. Si vous ne connaissez pas le nom du périphérique, vous pouvez donner un nom quelconque pour répertorier les périphériques valides, par exemple.

Sudo guestmount -a /var/lib/libvirt/images/disk1.qcow2 -m any --ro /mnt

Cela vous donnera quelque chose comme

libguestfs: error: mount_options: mount_options_stub: any: expecting a device name
guestmount: 'any' could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
guestmount:     /dev/sda1 (ext2)
guestmount:     /dev/sda2 (ext2)

Pour monter la première partition, vous devez ensuite émettre

Sudo guestmount -a /var/lib/libvirt/images/disk1.qcow2 -m /dev/sda1 --ro /mnt

Vous pouvez maintenant accéder au système de fichiers en mode lecture seule dans/mnt.

Important: Lorsque vous montez le disque d’un VM en cours d’utilisation, vous devez spécifier "--ro", ce qui signifie lecture seule, sinon le système de fichiers peut être endommagé.

Au lieu d'utiliser le nom du fichier disque virtuel, vous pouvez entrer le nom du domaine virtuel, s'il existe plusieurs disques. Disons que le nom de votre domaine virtuel est myvm, vous pouvez émettre

Sudo guestmount -d myvm -m any --ro /mnt

ce qui va vous donner quelque chose comme

guestmount: 'any' could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
guestmount:     /dev/sdb (iso9660)
guestmount:     /dev/sda1 (ext4)
guestmount:     /dev/sda2 (unknown)
guestmount:     /dev/sda5 (swap)
guestmount:     /dev/sdc1 (ext4)
guestmount:     /dev/sdc2 (unknown)
guestmount:     /dev/sdc5 (swap)
guestmount:     /dev/sdd1 (ext2)
guestmount:     /dev/sdd2 (ext2)

alors maintenant, pour monter/dev/sdc1 (vue de votre ordinateur virtuel), vous pouvez émettre

Sudo guestmount -d myvm -m /dev/sdc1 --ro /mnt

Cela devrait faire l'affaire.

5
ridgy