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
oubridge
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
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) :
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
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
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)
NotePour 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
, etanongid
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.
Exporter le système de fichiers mis à jour :
# exportfs -a
Démarrez le service
nfs-server
:# systemctl start nfs-server
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
.
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 VMNoteLe point de montage doit être un répertoire vide.
-
Pour monter le répertoire partagé sur une VM Windows comme indiqué dans le fichier
/etc/exports
:- Ouvrez une invite PowerShell en tant qu'administrateur.
Installez le paquet
NFS-Client
sur Windows.Pour l'installation sur une version serveur, entrez :
# Install-WindowsFeature NFS-Client
Pour l'installer sur une version de bureau, entrez :
# Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestart
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.NoteVous 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