Chapitre 20. Partage de fichiers entre l'hôte et ses machines virtuelles


Il se peut que vous ayez souvent besoin de partager des données entre votre système hôte et les machines virtuelles (VM) qu'il exécute. Pour le faire rapidement et efficacement, vous pouvez configurer des partages de fichiers NFS sur votre système. Vous pouvez également utiliser le site virtiofs pour partager des données avec vos machines virtuelles Linux et Windows.

20.1. Partage de fichiers entre l'hôte et ses machines virtuelles à l'aide de NFS

Pour un partage efficace des fichiers entre le système hôte RHEL 9 et les machines virtuelles (VM), vous pouvez exporter un partage NFS que les VM peuvent monter et auquel elles peuvent accéder.

Cependant, avec les VM Linux, il est généralement plus pratique d'utiliser la fonction virtiofs fonctionnalité.

Conditions préalables

  • Le paquetage nfs-utils est installé sur l'hôte.

    # dnf install nfs-utils -y
  • Un réseau virtuel de type NAT ou bridge est configuré pour connecter un hôte aux machines virtuelles.
  • Optional: Pour une meilleure sécurité, assurez-vous que vos machines virtuelles sont compatibles avec la version 4 ou ultérieure de NFS.

Procédure

  1. Sur l'hôte, exportez un répertoire contenant les fichiers que vous souhaitez partager en tant que système de fichiers réseau (NFS) :

    1. Partager un répertoire existant avec les machines virtuelles. Si vous ne souhaitez partager aucun des répertoires existants, créez-en un nouveau :

      # mkdir shared-files
    2. Obtenez l'adresse IP de chaque VM pour partager des fichiers à partir de l'hôte, par exemple, testguest1 et testguest2:

      # virsh domifaddr testguest1
      Name       MAC address          Protocol     Address
      ----------------------------------------------------------------
      vnet0      52:53:00:84:57:90    ipv4         192.0.2.2/24
      
      # virsh domifaddr testguest2
      Name       MAC address          Protocol     Address
      ----------------------------------------------------------------
      vnet1      52:53:00:65:29:21    ipv4         192.0.2.3/24
    3. Modifiez le fichier /etc/exports sur l'hôte et ajoutez une ligne indiquant le répertoire que vous souhaitez partager, les adresses IP des machines virtuelles à partager et des options supplémentaires :

      /home/<username>/Downloads/<shared_directory>/ <VM1-IP(options)> <VM2-IP(options)>
      ...

      L'exemple suivant partage le répertoire /usr/local/shared-files sur l'hôte avec testguest1 et testguest2, et permet aux machines virtuelles de modifier le contenu du répertoire :

      /usr/local/shared-files/ 192.0.2.2(rw,sync) 192.0.2.3(rw,sync)
      Note

      Pour partager un répertoire avec une VM Windows, vous devez vous assurer que le client NFS Windows dispose des droits d'écriture sur le répertoire partagé. Vous pouvez utiliser les options all_squash, anonuid, et anongid dans le fichier /etc/exports.

      /usr/local/shared-files/ 192.0.2.2(rw,sync,all_squash,anonuid=<directory-owner-UID>,anongid=<directory-owner-GID>)

      <directory-owner-UID> et <directory-owner-GID> sont l'UID et le GID de l'utilisateur local qui possède le répertoire partagé sur l'hôte.

      Pour d'autres options de gestion des autorisations des clients NFS, consultez le guide Sécuriser le service NFS.

    4. Exporter le système de fichiers mis à jour :

      # exportfs -a
    5. Démarrez le service nfs-server:

      # systemctl start nfs-server
    6. Obtenez l'adresse IP du système hôte pour monter le répertoire partagé sur les machines virtuelles :

      # ip addr
      ...
      5: virbr0: [BROADCAST,MULTICAST,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP group default qlen 1000
      link/ether 52:54:00:32:ff:a5 brd ff:ff:ff:ff:ff:ff
      inet 192.0.2.1/24 brd 192.0.2.255 scope global virbr0
      valid_lft forever preferred_lft forever
      ...

      Notez que le réseau concerné relie l'hôte aux machines virtuelles pour le partage des fichiers. En général, il s'agit de virbr0.

  2. Monter le répertoire partagé sur une VM Linux spécifiée dans le fichier /etc/exports:

    # mount 192.0.2.1:/usr/local/shared-files /mnt/host-share
    • 192.0.2.1: L'adresse IP de l'hôte.
    • /usr/local/shared-files: Chemin d'accès du système de fichiers au répertoire exporté sur l'hôte.
    • /mnt/host-share: Un point de montage sur la VM

      Note

      Le point de montage doit être un répertoire vide.

  3. Pour monter le répertoire partagé sur une VM Windows comme indiqué dans le fichier /etc/exports:

    1. Ouvrez une invite PowerShell en tant qu'administrateur.
    2. Installez le paquet NFS-Client sur Windows.

      1. Pour l'installation sur une version serveur, entrez :

        # Install-WindowsFeature NFS-Client
      2. Pour l'installer sur une version de bureau, entrez :

        # Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestart
    3. Monter le répertoire exporté par l'hôte sur une VM Windows :

      # C:\Windows\system32\mount.exe -o anon \\192.0.2.1\usr\local\shared-files Z:

      Dans cet exemple :

      • 192.0.2.1: L'adresse IP de l'hôte.
      • /usr/local/shared-files: Chemin d'accès au système de fichiers vers le répertoire exporté sur l'hôte.
      • Z:: La lettre du lecteur pour un point de montage.

        Note

        Vous devez choisir une lettre de lecteur qui n'est pas utilisée sur le système.

Vérification

  • Répertoriez le contenu du répertoire partagé sur la VM afin de pouvoir partager des fichiers entre l'hôte et la VM :

    $ ls <mount_point>
    shared-file1  shared-file2  shared-file3

    Dans cet exemple, remplacez <mount_point> par un chemin d'accès au répertoire partagé monté.

Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.