Recherche de site Web

Comment monter un répertoire hôte à l’intérieur d’une machine virtuelle KVM


Lors de l’utilisation de QEMU/KVM, il existe de nombreuses méthodes pour partager des données entre le système hôte et les machines virtuelles invitées. Dans ce tutoriel, nous nous concentrons sur la création d’un passthrough de système de fichiers, à l’aide de virt-manager ou en modifiant manuellement une définition de machine virtuelle, et nous apprenons à monter un répertoire hôte à l’intérieur d’un invité virtualisé.

Dans ce tutoriel, vous allez apprendre :

  • Comment créer un passthrough de système de fichiers à l’aide de virt-manager
  • Comment créer un relais de système de fichiers en modifiant manuellement une définition XML de machine virtuelle
  • Comment monter un répertoire hôte sur un système invité virtualisé

Introduction

Nous avons parlé des machines virtuelles dans les tutoriels précédents, lorsque nous avons vu comment créer et gérer des machines virtuelles KVM à partir de la ligne de commande et comment créer des instantanés de systèmes virtualisés. Dans certaines situations, nous pouvons avoir besoin de partager des données entre l’hôte et un système invité. Il existe de nombreuses solutions possibles à ce problème ; L’une consiste en la création d’un passthrough de système de fichiers. Cela n’est toutefois possible que sur un système virtualisé via l’instance libvirtd « system » (qemu:///system) ; Il ne fonctionne pas sur les instances de « session » libvirTD non privilégiées (qemu:///session).

Création d’un passthrough de système de fichiers à l’aide de virt-manager

Afin de créer un passthrough de système de fichiers dans un système invité QEMU/KVM déjà existant en utilisant virt-manager , nous cliquons sur l’icône « lamp » dans la barre d’outils de la fenêtre du visualiseur de machine virtuelle. Cela nous donnera accès aux détails de configuration de la machine virtuelle :

La première chose que nous devons faire est de cliquer sur l’entrée « Mémoire » dans la colonne de gauche, puis de cocher la case « Activer la mémoire partagée » et d’appliquer le changement en cliquant sur le bouton « Appliquer », en bas à droite de la page. Si la machine virtuelle est en cours d’exécution, virt-manager nous informera que les modifications prendront effet après le prochain arrêt :

Il faut maintenant cliquer sur le bouton « Ajouter du matériel » en bas à gauche de la page, puis sur « Système de fichiers » dans la colonne de gauche de la fenêtre qui s’ouvrira. Pour créer le passthrough du système de fichiers, nous devons fournir un chemin source et un chemin cible. Le chemin source est le répertoire de la machine hôte que nous voulons monter à l’intérieur du système invité ; le chemin cible, en revanche, n’est pas vraiment un chemin, mais l’étiquette que nous utilisons pour référencer le relais de la machine virtuelle.

Dans l’exemple ci-dessous, nous partageons le répertoire /home/doc/Downloads sur la machine hôte et utilisons l’étiquette « host_doc_downloads » pour le référencer. Si nous voulons que le répertoire soit accessible en mode lecture seule, peut-être pour des raisons de sécurité, nous pouvons cocher la case « Exporter le système de fichiers en tant que montage en lecture seule ». Lorsque nous sommes prêts, nous cliquons sur le bouton « Terminer » et confirmons que nous voulons rendre l’appareil disponible.

Le passthrough sera disponible après le prochain « bon » arrêt du système (nous devons effectivement arrêter la machine ; un redémarrage ne sera pas effectif).

Création d’un relais de système de fichiers en modifiant le fichier XML de la machine virtuelle

Si nous n’utilisons pas virt-manager, nous pouvons créer un passthrough de système de fichiers directement en éditant la définition XML de la machine virtuelle. Afin d’obtenir la liste de toutes les machines virtuelles existantes, nous pouvons utiliser le script virsh :

sudo virsh list --all

Dans ce cas, la commande renvoie le résultat suivant :

Id Name    State
--------------------------
8 debian12 running

Pour modifier la définition de la machine virtuelle, nous pouvons utiliser la commande virsh-edit, en passant le nom de la machine virtuelle comme argument :

sudo virsh edit debian12

Le fichier XML sera ouvert dans l’éditeur par défaut. Pour activer la mémoire partagée, nous ajoutons le code suivant sous la section « domaine » :

<memoryBacking> 
  <source type="memfd"/> 
  <access mode="shared"/> 
</memoryBacking>

Ensuite, pour ajouter le passthrough du répertoire, nous ajoutons le code suivant, cette fois à l’intérieur de la section « devices » :

<filesystem type="mount" accessmode="passthrough">
  <driver type="virtiofs"/> <source dir="/home/doc/Downloads"/>
  <target dir="host_doc_downloads"/>
  <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
</filesystem>

Une fois prêt, nous enregistrons et fermons le fichier. Pour que la configuration soit efficace, nous devons arrêter le système invité :

sudo virsh shutdown debian12

Montage du répertoire hôte

Une fois que nous avons créé le passthrough du système de fichiers, nous pouvons monter le répertoire host avec la commande « mount », en spécifiant « virtiofs » comme type de système de fichiers, et comme nous l’avons dit précédemment, en référençant le chemin de l’hôte partagé via l’étiquette que nous avons utilisée dans la configuration. Dans ce cas, pour monter le répertoire host sur /mnt, à l’intérieur du système invité, nous exécuterions :

sudo mount -t virtiofs host_doc_downloads /mnt

Conclusions

Dans ce tutoriel, nous avons appris à créer un relais de système de fichiers et à monter un répertoire hôte à l’intérieur d’un invité QEMU/KVM. Nous avons vu comment créer le passthrough à l’aide de virt-manager ou en éditant directement la définition XML du système virtualisé avec la commande virsh edit. Enfin, nous avons vu comment monter le répertoire partagé à l’intérieur du système invité.

Articles connexes: