GNU/Linux >> Tutoriels Linux >  >> Linux

Configurer un dossier partagé entre l'hôte KVM et l'invité

Après avoir créé une nouvelle machine virtuelle, vous souhaiterez peut-être partager des fichiers et des dossiers entre l'hôte KVM et la machine virtuelle KVM. Dans ce bref guide, nous verrons comment configurer un dossier partagé entre l'hôte KVM et la machine virtuelle invitée à l'aide de Virt-manager sous Linux.

Avant de configurer un dossier partagé, assurez-vous d'avoir installé Virt-manager sur votre hôte KVM.

  • Comment gérer les machines virtuelles KVM avec Virt-Manager

Si vous avez déjà installé le groupe complet de packages de virtualisation KVM, vous n'avez pas besoin d'installer Virt-manager séparément. Virt-manager fait partie du groupe de packages de virtualisation KVM. Sinon, vous devrez peut-être l'installer comme indiqué dans le lien ci-dessus.

Créez une nouvelle machine virtuelle à partir de l'interface Virt-manager. C'est très simple et simple ! Ne démarrez pas encore la VM. Nous devons créer un dossier partagé dans notre hôte KVM.

Créer des dossiers partagés dans l'hôte KVM

Créez un nouveau dossier partagé dans votre système hôte KVM que vous souhaitez partager avec les machines invitées.

Pour les besoins de ce guide, j'ai créé un dossier partagé nommé "KVM_Share " dans mon $HOME répertoire.

[[email protected] ~]$ mkdir ~/KVM_Share

Ensuite, configurez les autorisations requises pour le dossier partagé. Je voulais éditer et modifier le contenu de ce dossier partagé à partir de mes machines virtuelles invitées, j'ai donc donné toutes les autorisations au dossier partagé.

[[email protected] ~]$ chmod 777 ~/KVM_Share

Définissez ensuite le type SELinux correct pour le dossier partagé KVM :

$ sudo semanage fcontext -a -t svirt_image_t "/home/sk/KVM_Share(/.*)?"

Cette commande définit le contexte de fichier par défaut pour tout ce qui se trouve sous et y compris le dossier partagé, c'est-à-dire /home/sk/KVM_Share dans notre cas.

Après avoir exécuté la commande ci-dessus, elle ajoute une ligne au /etc/selinux/targeted/contexts/files/file_contexts.local fichier qui rend la modification persistante.

La ligne ajoutée peut ressembler à ceci :

$ cat /etc/selinux/targeted/contexts/files/file_contexts.local
 This file is auto-generated by libsemanage
 Do not edit directly.
 /usr/lib/chromium-browser    system_u:object_r:bin_t:s0
 /usr/lib/chromium-browser/chromium-browser.sh    system_u:object_r:bin_t:s0
 /usr/lib/chrome-sandbox    system_u:object_r:chrome_sandbox_exec_t:s0
 /home/sk/KVM_Share(/.*)?    system_u:object_r:svirt_image_t:s0

Ensuite, exécutez la commande suivante pour indiquer à SELinux de restaurer les contextes de fichiers sur tout ce qui se trouve sous le répertoire partagé à ce que nous avons par défaut (c'est-à-dire ce que semanage change).

$ sudo restorecon -vR /home/sk/KVM_Share

Si vous ne définissez pas le bon type SELinux pour le dossier partagé KVM, vous rencontrerez l'erreur suivante lors du démarrage de la machine virtuelle.

Error starting domain: internal error: qemu unexpectedly closed the monitor: 2021-05-06T09:30:21.239353Z qemu-system-x86_64: -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=/hostshare,bus=pci.5,addr=0x0: cannot initialize fsdev 'fsdev-fs0': failed to open '/home/sk/KVM_Share': Permission denied
 Traceback (most recent call last):
   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in cb_wrapper
     callback(asyncjob, *args, *kwargs)   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 101, in tmpcb     callback(args, **kwargs)
   File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 57, in newfn
     ret = fn(self, *args, **kwargs)
   File "/usr/share/virt-manager/virtManager/object/domain.py", line 1329, in startup
     self._backend.create()
   File "/usr/lib64/python3.9/site-packages/libvirt.py", line 1353, in create
     raise libvirtError('virDomainCreate() failed')
 libvirt.libvirtError: internal error: qemu unexpectedly closed the monitor: 2021-05-06T09:30:21.239353Z qemu-system-x86_64: -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=/hostshare,bus=pci.5,addr=0x0: cannot initialize fsdev 'fsdev-fs0': failed to open '/home/sk/KVM_Share': Permission denied

Il est maintenant temps de configurer le dossier partagé dans Virt-manager.

Configurer un dossier partagé entre l'hôte KVM et l'invité

Ouvrez Virt-manager et assurez-vous que le système invité est désactivé. Sélectionnez la machine invitée et cliquez sur Ouvrir dans la barre de menus pour afficher la console et les détails de la machine virtuelle.

Dans la fenêtre suivante, cliquez sur "Afficher les détails du matériel virtuel" dans la barre de menu et cliquez sur "Ajouter du matériel" bouton dans le volet de gauche.

Cliquez sur l'onglet "Système de fichiers" dans le volet de gauche et entrez l'emplacement du dossier partagé dans le chemin source et entrez la balise de montage sous le chemin cible. Ici, je partage "~/KVM_Share" répertoire et ma balise de montage est /hostshare . Vous pouvez spécifier le nom de mount_tag comme vous le souhaitez. Veuillez noter que mount_tag n'est pas un chemin. Le mount_tag est juste un nom utilisé pour identifier le partage de l'hôte. Cliquez sur Terminer et appliquer pour mettre à jour les modifications.

Une dernière chose que vous devez faire est de sélectionner le mode d'accès approprié pour accéder au dossier partagé.

Il y a trois valeurs possibles. Ils sont passthrough , mapped et squash .

  • intercommunication - Spécifie que la source (c'est-à-dire le dossier partagé) est accessible avec les paramètres d'autorisation de l'utilisateur qui sont définis depuis l'intérieur de la machine virtuelle invitée. c'est-à-dire que les fichiers sont stockés en utilisant les mêmes informations d'identification qu'ils sont créés sur l'invité. C'est le mode d'accès par défaut si aucun n'est spécifié.
  • mappé - Spécifie que la source est accessible avec les paramètres d'autorisation de l'hyperviseur. Si vous souhaitez avoir un accès en lecture et en écriture depuis la machine invitée, vous devez choisir ce mode.
  • courge - Semblable à 'passthrough', l'exception est que l'échec des opérations privilégiées comme chown sont ignorés. Cela rend un mode de type passthrough utilisable pour les personnes qui exécutent l'hyperviseur en tant que non root.

Après avoir sélectionné votre mode d'accès préféré, cliquez sur le bouton Appliquer. Nous avons maintenant configuré le dossier partagé pour l'hôte KVM et le système invité à partir de Virt-manager.

Maintenant, allumez la machine virtuelle invitée et créez un point de montage sur votre machine invitée pour monter le dossier partagé du système hôte KVM :

[[email protected] ~]$ mkdir ~/hostfiles

Enfin, montez le dossier partagé sur la machine invitée à l'aide de la commande :

[[email protected] ~]$ sudo mount -t 9p -o trans=virtio /hostshare hostfiles/

Le dossier partagé ~/KVM_Share est monté sur les hostfiles répertoire de votre machine virtuelle. Désormais, vous pouvez accéder au contenu du dossier partagé depuis votre machine virtuelle invitée. Vous pouvez également modifier et supprimer le contenu du dossier partagé sur les systèmes hôte et invité KVM.

Pour monter automatiquement le dossier partagé à chaque fois au démarrage, ajoutez la ligne suivante à /etc/fstab fichier dans votre système invité :

/hostshare /hostfiles 9p trans=virtio,version=9p2000.L,rw 0 0

J'espère que cela vous aidera.


Linux
  1. Différence entre le pare-feu matériel partagé et le pare-feu matériel dédié

  2. Windows - Dossier partagé entre l'invité Windows Qemu et l'hôte Linux ?

  3. Différence entre Qemu et KVM

  4. Différence entre les objets partagés (.so), les bibliothèques statiques (.a) et les DLL (.so) ?

  5. script pour surveiller les nouveaux fichiers dans un dossier partagé (hôte Windows, invité Linux)

Dossier partagé dans Virtualbox (ubuntu et Windows 7) ?

Comment copier des fichiers entre l'hôte et le conteneur Docker

Comment configurer les ajouts d'invités et le réseau de VirtualBox

Comment envoyer/télécharger un fichier du système d'exploitation hôte vers le système d'exploitation invité dans KVM ? (pas de partage de dossier)

différence copier le dossier de contenu entre /. et /* sous linux

Configurez IPTables sur l'hôte KVM pour bloquer le trafic du pont invité