第 15 章 在主机及其虚拟机间共享文件
您可能需要在主机系统和其运行的虚拟机(VM)之间共享数据。要快速高效地完成此操作,您可以在系统上设置 NFS 文件共享。
15.1. 使用 NFS 在主机及其虚拟机间共享文件
为了在 RHEL 8 主机系统和虚拟机(VM)之间进行有效的文件共享,您可以导出一个虚拟机可以挂载和访问的 NFS 共享。
先决条件
nfs-utils
软件包已安装在主机上。# yum install nfs-utils -y
-
NAT
或bridge
类型的虚拟网络被配置为将主机与虚拟机相连。 - 可选:为了提高安全性,请确保您的虚拟机与 NFS 版本 4 或更高版本兼容。
流程
在主机上,导出带有您要共享为网络文件系统(NFS)的文件的目录:
与虚拟机共享一个现有目录。如果您不想共享任何现有目录,请创建一个新目录:
# mkdir shared-files
获取每个虚拟机的 IP 地址,以便共享主机中的文件,如 testguest1 和 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
编辑主机上的
/etc/exports
文件,并添加包含您要共享的目录、要共享的虚拟机 IP 以及附加选项的行:/home/<username>/Downloads/<shared_directory>/ <VM1-IP(options)> <VM2-IP(options)> ...
以下示例将主机上的
/usr/local/shared-files
目录与 testguest1 和 testguest2 共享,并允许虚拟机编辑目录的内容:/usr/local/shared-files/ 192.0.2.2(rw,sync) 192.0.2.3(rw,sync)
注意要与 Windows 虚拟机共享一个目录,您需要确保 Windows NFS 客户端在共享目录中有写权限。您可以在
/etc/exports
文件中使用all_squash
、anonuid
和anongid
选项。/usr/local/shared-files/ 192.0.2.2(rw,sync,all_squash,anonuid=<directory-owner-UID>,anongid=<directory-owner-GID>)
& lt;directory-owner-UID & gt; 和 <directory-owner-GID > 是拥有主机上共享目录的本地用户的 UID 和 GID。
对于管理 NFS 客户端权限的其他选项,请按照 确保 NFS 服务安全 指南进行操作。
导出更新的文件系统:
# exportfs -a
启动
nfs-server
服务:# systemctl start nfs-server
获取主机系统的 IP 地址,以在虚拟机上挂载共享目录:
# 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 ...
请注意,相关的网络将主机与虚拟机连接,以共享文件。通常,这是
virbr0
。
在
/etc/exports
文件中指定的 Linux 虚拟机上挂载共享目录:# mount 192.0.2.1:/usr/local/shared-files /mnt/host-share
-
192.0.2.1
:主机的 IP 地址。 -
/usr/local/shared-files
:主机上导出的目录的文件系统路径。 /mnt/host-share
:虚拟机上的挂载点注意挂载点必须是空目录。
-
如
/etc/exports
文件中所述,要在 Windows 虚拟机上挂载共享目录:- 以 Administrator 身份打开 PowerShell shell 提示符。
在 Windows 上安装
NFS-Client
软件包。要在服务器版本上安装,请输入:
# Install-WindowsFeature NFS-Client
要在桌面版本上安装,请输入:
# Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestart
在 Windows 虚拟机上挂载主机导出的目录:
# C:\Windows\system32\mount.exe -o anon \\192.0.2.1\usr\local\shared-files Z:
在本例中:
-
192.0.2.1
:主机的 IP 地址。 -
/usr/local/shared-files
:主机上导出的目录的文件系统路径。 Z:
: 挂载点的驱动器盘符。注意您必须选择一个没有在系统中使用的驱动器符。
-
验证
列出虚拟机上共享目录的内容,以便您可以在主机和虚拟机之间共享文件:
$ ls <mount_point> shared-file1 shared-file2 shared-file3
在这个示例中,将 <mount_point> 替换为挂载的共享目录的文件系统路径。
其它资源