Red Hat Training
A Red Hat training course is available for RHEL 8
第 14 章 在主机及其虚拟机间共享文件
您可能需要在主机系统和其运行的虚拟机(VM)之间共享数据。要快速高效地完成此操作,您可以在系统上设置 NFS 文件共享。
14.1. 使用 NFS 在主机及其虚拟机间共享文件
为了在 RHEL 8 主机系统和连接到的虚拟机(VM)间有效文件共享,您可以导出虚拟机可以挂载和访问的 NFS 共享。
先决条件
nfs-utils
软件包已安装在主机上。# yum install nfs-utils -y
要与虚拟机共享的目录。如果您不想共享任何现有目录,请创建一个新目录,例如: shared-files。
# mkdir shared-files
- 当连接到虚拟机时,主机通过网络可见并可访问。如果虚拟机使用虚拟网络的 NAT 和 bridge 类型,则通常是这种情况。
- 可选: 为了提高安全性,请确保您的虚拟机与 NFS 版本 4 或更高版本兼容。
流程
在主机上,将您要共享的文件的目录导出为网络文件系统(NFS)。
获取您要共享文件的每个虚拟机的 IP 地址。以下示例获取 testguest1 和 testguest2 的 IP 地址。
# virsh domifaddr testguest1 Name MAC address Protocol Address ---------------------------------------------------------------- vnet0 52:53:00:84:57:90 ipv4 192.168.124.220/24 # virsh domifaddr testguest2 Name MAC address Protocol Address ---------------------------------------------------------------- vnet1 52:53:00:65:29:21 ipv4 192.168.124.17/24
编辑主机上的
/etc/exports
文件,并添加一行,其中包含您要共享的目录、您要共享它的虚拟机 IP,以及共享选项。<shared_directory> <VM1-IP(options)> <VM2-IP(options)> [...]
例如,以下命令在 testguest1 和 testguest2 主机上共享了
/usr/local/shared-files
目录,使虚拟机能够编辑该目录的内容:/usr/local/shared-files/ 192.168.124.220(rw,sync) 192.168.124.17(rw,sync)
注意如果要与 Windows 虚拟机共享目录,您必须确保 Windows NFS 客户端在共享目录中具有写入权限。执行此操作的一种简单方法是,使用
/etc/exports
文件中的all_squash
、sonuid
和anongid
选项。例如:
/usr/local/shared-files/ 192.168.124.220(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.168.124.1/24 brd 192.168.124.255 scope global virbr0 valid_lft forever preferred_lft forever [...]
请注意,相关的网络是您要与之共享文件的虚拟机用于连接主机的网络。通常,这是
virbr0
。
将共享目录挂载到
/etc/exports
文件中指定的 Linux 虚拟机上。# mount 192.168.124.1:/usr/local/shared-files /mnt/host-share
在本例中:
-
192.168.124.1
是主机的 IP 地址。 -
/usr/local/shared-files
是主机上导出的目录的文件系统路径。 -
/mnt/host-share
是虚拟机的挂载点。挂载点必须是空目录。
-
要在
/etc/exports
文件中指定的 Windows 虚拟机上挂载共享目录:- 以管理员身份打开 PowerShell shell 提示符。
安装
NFS-Client
软件包。对于 Windows 的服务器和桌面版本,安装命令会有所不同。在 Windows 的服务器中:
# Install-WindowsFeature NFS-Client
在 Windows 的桌面版本中:
# Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestart
将主机导出的目录挂载到 Windows 虚拟机上。
# C:\Windows\system32\mount.exe -o anon \\192.168.124.1\usr\local\shared-files Z:
在本例中:
-
192.168.124.1
是主机的 IP 地址。 -
/usr/local/shared-files
是主机上导出的目录的文件系统路径。 -
z:
是将用作挂载点的驱动器符。您必须选择一个没有在系统中使用的驱动器符。
-
验证
要验证您可以在主机和虚拟机间共享文件,请列出虚拟机上共享目录的内容。在以下示例中,将 < ;mount_point > 替换为挂载的共享目录的文件系统路径。
$ ls <mount_point> shared-file1 shared-file2 shared-file3