本页面介绍如何在同一 Google Cloud 项目和 VPC 网络中的 Compute Engine 虚拟机 (VM) 实例上装载 Filestore 文件共享。要了解如何在远程网络中的客户端上装载文件共享,请参阅在远程客户端上装载文件共享。如果您希望改为从 Google Kubernetes Engine 集群访问 Filestore 实例,请参阅使用 Filestore CSI 驱动程序访问 Filestore 实例。
准备工作
确保已正确配置网络防火墙,以便与 Filestore 搭配使用。如需了解详情,请参阅配置防火墙规则。
在 Compute Engine 虚拟机实例上装载文件共享
使用以下一种过程在 Compute Engine 虚拟机上装载 Filestore 文件共享。我们建议装载到 n1-standard-8
虚拟机或具有更高配置的虚拟机,以获得最佳性能。
Linux:装载
要将文件共享手动装载到 Linux 客户端虚拟机:
在 Google Cloud 控制台中,前往“虚拟机实例”页面。
找到您要用作客户端的 Linux 虚拟机,然后点击 SSH 打开该虚拟机上的终端。
可选:通过次要网络在具有多个网络接口的客户端虚拟机上装载文件共享。
详细信息(点击可展开)
如果要通过次要网络(即
nic0
以外的接口)装载文件共享,则必须修改客户端虚拟机的路由政策。运行:sudo ip route \ add filestore-reserved-address-range \ via default-gateway-of-nic-to-filestore
其中:
filestore-reserved-address-range
是 Filestore 实例使用的预留地址范围。default-gateway-of-nic-to-filestore
是连接到与 Filestore 实例共享的 VPC 网络的 NIC 的默认网关 IP 地址。
如需详细了解如何将 Compute Engine 实例与多个 NIC 配合使用,请参阅为额外的网络接口配置路由。
安装 NFS:
Debian/Ubuntu
使用以下命令在 Debian 或 Ubuntu 上安装 NFS。
sudo apt-get -y update &&
sudo apt-get install nfs-commonRHEL/CentOS
使用以下命令在 Red Hat Enterprise Linux 或 CentOS 上安装 NFS。
sudo yum update &&
sudo yum install nfs-utilsSUSE
使用以下命令在 SUSE 上安装 NFS。
sudo zypper update &&
sudo zypper -n install nfs-client使本地目录映射到 Filestore 文件共享:
sudo mkdir -p mount-point-directory
其中
mount-point-directory
是要创建的目录(例如/mnt/filedir
)。通过运行
mount
命令从 Filestore 实例装载文件共享。您可以使用任何 NFS 装载选项。为了获得最佳性能,我们建议使用以下 NFSmount
选项:选项 说明 hard
NFS 客户端会无限期地重试 NFS 请求。为了降低 Filestore 实例重新启动时 I/O 中断的可能性,我们建议为 Linux 和 Windows 客户端使用 hard
挂载选项。timeo=600
NFS 客户端会等待 600 分秒(60 秒)后再重试 NFS 请求。 retrans=3
NFS 客户端会尝试 NFS 请求三次,再执行进一步的恢复操作。 rsize=262144
对于每个 READ
请求,NFS 客户端最多可以从 NFS 服务器接收 262,144 个字节。
注意:对于基础层级实例,请将rsize
值设置为1048576
。wsize=1048576
对于每个 WRITE
请求,NFS 客户端最多可以从 NFS 服务器接收 1048576 个字节。resvport
与 NFS 服务器就此装载装点进行通信时,NFS 客户端会使用特权源端口。 async
NFS 客户端延迟向 NFS 服务器发送应用程序写入,直到满足某些条件。
注意:使用sync
选项会大大降低性能。- 为了缩短挂载延迟时间,请指定
-o tcp
选项。 - 如果您要将企业版或区域级(以前称为“大规模 SSD”)实例装载到运行 Linux 内核版本 5.3 及更高版本的客户端虚拟机上,请考虑指定
nconnect
装载选项来提高 NFS 性能。对于区域级层级,建议最多指定7
个连接;对于地区级和企业级层级,建议最多指定2
个连接。一般来说,文件共享容量越大,连接的客户端虚拟机越少,通过使用nconnect
指定额外连接即可提升性能。
使用您的首选选项运行
mount
命令,类似于以下内容:sudo mount -o rw ip-address:/file-share mount-point-directory
其中:
ip-address
是 Filestore 实例的 IP 地址。file-share
是实例上的文件共享的名称。mount-point-directory
是您要将 Filestore 文件共享映射到的路径。
您可以从以下任何来源获取实例的 IP 地址和文件共享名称:
Filestore 实例页面。
filestore instances list
命令所返回的结果中的IP_ADDRESS
字段。filestore instances describe
命令所返回的结果中的ipAddresses
部分。
例如,假定 Filestore 实例的 IP 地址为
10.0.1.2
且文件共享名为share1
,则以下命令会将文件共享装载到本地装载点目录/mnt/render
:sudo mount 10.0.1.2:/share1 /mnt/render
- 为了缩短挂载延迟时间,请指定
可选:运行
chmod
来设置对装载目录的权限,使根用户以外的其他用户可向其写入数据。如需设置目录权限,请运行以下命令:sudo chmod permissions mount-point-directory
其中:
permissions
是要授予的一组权限。例如,chmod go+rw
将使得拥有目录的群组中的成员和所有其他用户可读写目录。如需详细了解如何设置权限,请参阅配置文件共享的访问权限。mount-point-directory
是 Filestore 文件共享所在目录的路径。
可选:确认已装载 Filestore 文件共享:
df -h --type=nfs
输出应包含如下所示的条目:
Filesystem Size Used Avail Use% Mounted on 10.0.1.2:/share1 1018G 76M 966G 1% /mnt/render 10.0.2.2:/vol3 1018G 76M 966G 1% /mnt/filestore3
如果您需要使用 NFS 文件锁定,则可能需要设置
statd
和nlockmgr
守护程序使用的端口,并配置防火墙规则以打开这些端口。
Linux:/etc/fstab
您可以通过修改客户端的 /etc/fstab
文件,在启动时自动将文件共享装载到客户端虚拟机:
在 Google Cloud 控制台中,前往“虚拟机实例”页面。
找到您要用作客户端的 Linux 虚拟机,然后点击 SSH 打开该虚拟机上的终端。
可选:通过次要网络在具有多个网络接口的客户端虚拟机上装载文件共享。
详细信息(点击可展开)
如果要通过次要网络(即
nic0
以外的接口)装载文件共享,则必须修改客户端虚拟机的路由政策:- 在
/etc/default/instance_configs.cfg
中,将NetworkInterfaces
的setup
标志设置为false
:[NetworkInterfaces] dhclient_script = /sbin/google-dhclient-script dhcp_command = ip_forwarding = true setup = false
在
/etc/network/interfaces
中,添加以下行:auto eth1 iface eth1 inet dhcp up ip route add filestore-reserved-address-range via default-gateway-of-nic-to-filestore
其中:
filestore-reserved-address-range
是 Filestore 实例使用的预留地址范围。default-gateway-of-nic-to-filestore
是连接到与 Filestore 实例共享的 VPC 网络的 NIC 的默认网关 IP 地址。
如需详细了解如何将 Compute Engine 实例与多个 NIC 配合使用,请参阅为额外的网络接口配置路由。
- 在
安装 NFS:
Debian/Ubuntu
使用以下命令在 Debian 或 Ubuntu 上安装 NFS。
sudo apt-get -y update &&
sudo apt-get install nfs-commonRHEL/CentOS
使用以下命令在 Red Hat Enterprise Linux 或 CentOS 上安装 NFS。
sudo yum update &&
sudo yum install nfs-utilsSUSE
使用以下命令在 SUSE 上安装 NFS。
sudo zypper update &&
sudo zypper -n install nfs-client使本地目录映射到 Filestore 文件共享:
sudo mkdir -p mount-point-directory
其中
mount-point-directory
是要创建的目录(例如/mnt/filedir
)。打开
/etc/fstab
文件:sudo vim /etc/fstab
在
/etc/fstab
文件中添加以下行:ip-address:/file-share mount-point-directory nfs options,_netdev 0 0
其中:
ip-address
是 Filestore 实例的 IP 地址。file-share
是实例上的文件共享的名称。mount-point-directory
是要将 Filestore 文件共享映射到的路径。options
是 NFS 装载选项。建议保留默认的 NFS 装载选项,但存在以下例外情况:- 对于自动装载,我们建议指定
-o tcp
以降低装载和卸载的延迟时间。 - 如果您要将地区(以前称为“大规模 SSD”)实例装载到运行 Linux 内核版本 5.3 及更高版本的客户端虚拟机,请考虑指定
nconnect
装载选项来提高 NFS 性能。对于可用区级,建议最多指定7
个连接;对于区域级和企业级,建议最多指定2
个连接。一般来说,文件共享容量越大,连接的客户端虚拟机越少,通过使用nconnect
指定额外连接即可提升性能。
- 对于自动装载,我们建议指定
示例:
/etc/fstab
中的以下行使用默认装载选项,将 IP 地址为10.0.0.2
的 Filestore 实例的文件共享vol1
装载到装载点目录/mnt
中:10.0.0.2:/vol1 /mnt nfs defaults,_netdev 0 0
在
/etc/fstab
中装载所有内容:sudo mount -a
每当客户端虚拟机启动时,系统现在都会自动装载文件共享。
Linux:autofs
您可以将 autofs
配置为仅在有人访问时才自动装载文件共享,并在未使用时将其卸载。与在 /etc/fstab
中静态装载文件共享相比,此方法有助于在客户端需要映射到多个装载点时节省客户端虚拟机资源。
在客户端虚拟机上安装 NFS
和 autofs
在 Google Cloud 控制台中,前往“虚拟机实例”页面。
找到您要用作客户端的 Linux 虚拟机,然后点击 SSH 打开该虚拟机上的终端。
可选:通过次要网络在具有多个网络接口的客户端虚拟机上装载文件共享。
详细信息(点击可展开)
如果要通过次要网络(即
nic0
以外的接口)装载文件共享,则必须修改客户端虚拟机的路由政策:- 在
/etc/default/instance_configs.cfg
中,将NetworkInterfaces
的setup
标志设置为false
:[NetworkInterfaces] dhclient_script = /sbin/google-dhclient-script dhcp_command = ip_forwarding = true setup = false
在
/etc/network/interfaces
中,添加以下行:auto eth1 iface eth1 inet dhcp up ip route add filestore-reserved-address-range via default-gateway-of-nic-to-filestore
其中:
filestore-reserved-address-range
是 Filestore 实例使用的预留地址范围。default-gateway-of-nic-to-filestore
是连接到与 Filestore 实例共享的 VPC 网络的 NIC 的默认网关 IP 地址。
如需详细了解如何将 Compute Engine 实例与多个 NIC 配合使用,请参阅为额外的网络接口配置路由。
- 在
运行以下命令安装 NFS:
Debian/Ubuntu
使用以下命令在 Debian 或 Ubuntu 上安装 NFS。
sudo apt-get -y update &&
sudo apt-get install nfs-commonRHEL/CentOS
使用以下命令在 Red Hat Enterprise Linux 或 CentOS 上安装 NFS。
sudo yum update &&
sudo yum install nfs-utilsSUSE
使用以下命令在 SUSE 上安装 NFS。
sudo zypper update &&
sudo zypper -n install nfs-client在客户端虚拟机的终端窗口中,安装
autofs
:Debian/Ubuntu
sudo apt-get install autofs
RHEL/CentOS
sudo yum install autofs
SUSE
sudo zypper -n install autofs
配置 autofs
以将文件共享动态装载到客户端虚拟机
启用
autofs
:sudo systemctl enable --now autofs
使本地目录映射到 Filestore 文件共享:
sudo mkdir -p mount-point-directory
其中
mount-point-directory
是要创建的目录。它不得包含任何子目录。在本指南中,我们使用/nfs
作为装载点目录。打开
/etc/auto.master
文件:sudo vim /etc/auto.master
在
/etc/auto.master
文件中添加以下行:/nfs /etc/auto.nfs --timeout seconds
其中
seconds
是装载超时之前的秒数。 默认值为300
。如果将此值设置为0
,则会停用autofs
卸载。创建名为
/etc/auto.nfs
的文件:sudo vim /etc/auto.nfs
在
/etc/auto.nfs
文件中添加以下行:mount-point-subdir options ip-address:/file-share
其中:
mount-point-subdir
是要将 Filestore 文件共享映射到的/nfs
中的子目录。此子目录是动态生成的,不会存在于客户端虚拟机中。options
是 NFS 装载选项。建议保留默认的 NFS 装载选项,但存在以下例外情况:- 对于自动装载,我们建议指定
-o tcp
以降低装载和卸载的延迟时间。 - 如果您要将地区(以前称为“大规模 SSD”)实例装载到运行 Linux 内核版本 5.3 及更高版本的客户端虚拟机,请考虑指定
nconnect
装载选项来提高 NFS 性能。对于可用区级,建议最多指定7
个连接;对于区域级和企业级,建议最多指定2
个连接。一般来说,文件共享容量越大,连接的客户端虚拟机越少,通过使用nconnect
指定额外连接即可提升性能。 ip-address
是 Filestore 实例的 IP 地址。file-share
是实例上的文件共享的名称。
- 对于自动装载,我们建议指定
示例:
/etc/auto.nfs
中的以下行使用授予的read/write
访问权限,将 IP 地址为10.0.0.2
的 Filestore 实例的文件共享vol1
装载到动态生成的子目录file-shares
中:file-shares -rw 10.0.0.2:/vol1
测试配置
如果已装载文件共享,则需要将其卸载:
sudo umount mount-point-directory
其中
mount-point-directory
是将 Filestore 文件共享映射到的路径。如果存在在系统启动时装载文件共享的
/etc/fstab
条目,请务必将其移除。重新加载
autofs
:sudo service autofs reload
确认您的配置有效:
ls mount-point-directory/mount-point-subdir
其中:
mount-point-directory
是/etc/auto.master
文件中指明的装载点目录。mount-point-subdir
是/etc/auto.nfs
文件中指明的装载点子目录。
在本示例中,命令将是:
ls /nfs/file-shares
如果自动装载配置正确,系统将先装载文件共享,然后返回
ls
命令的结果。系统会在一段闲置期间(由/etc/auto.master
文件中指定的timeout
值定义)后自动卸载文件共享。
Windows
连接到 Windows 虚拟机
在 Google Cloud 控制台中,前往“虚拟机实例”页面。
找到要用作客户端的 Windows 虚拟机,然后点击 RDP 以打开连接到该虚拟机的远程桌面连接。如需了解详情,请参阅连接到 Windows 实例。
在 Windows 虚拟机上安装 NFS
- 在 Windows 虚拟机上,以管理员身份打开 PowerShell。
在 PowerShell 中,安装 NFS 客户端:
Install-WindowsFeature -Name NFS-Client
根据提示重启 Windows 虚拟机实例,然后打开一个新的远程桌面连接。
配置 NFS 客户端使用的用户 ID
在
PowerShell
中,运行以下命令以创建两个新的注册表项:AnonymousUid
和AnonymousGid
:New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" ` -Name "AnonymousUid" -Value "0" -PropertyType DWORD
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" ` -Name "AnonymousGid" -Value "0" -PropertyType DWORD
重启 NFS 客户端服务:
nfsadmin client stop
nfsadmin client start
将文件共享映射到 Windows 虚拟机
退出
PowerShell
:exit
可选:通过次要网络在具有多个网络接口的客户端虚拟机上装载文件共享。
详细信息(点击可展开)
如果要通过次要网络(即
nic0
以外的接口)装载文件共享,则必须修改客户端虚拟机的路由政策。运行:route -p ^ add filestore-reserved-address-range ^ mask address-range-subnet-mask ^ default-gateway-of-nic-to-filestore
其中:
filestore-reserved-address-range
是 Filestore 实例使用的预留地址范围。address-range-subnet-mask
是filestore-reserved-address-range
的子网掩码。例如,/29 预留地址范围会使用 255.255.255.248 子网掩码。default-gateway-of-nic-to-filestore
是连接到与 Filestore 实例共享的 VPC 网络的 NIC 的默认网关 IP 地址。
示例:
route -p add 10.65.21.176 mask 255.255.255.248 10.128.0.1
如需详细了解如何将 Compute Engine 实例与多个 NIC 配合使用,请参阅为额外的网络接口配置路由。
在
Command Prompt
中,将文件共享映射到驱动器盘符:net use drive-letter: \\filestore-ip\file-share-name
其中:
- filestore-ip 是 Filestore 实例的 IP 地址。
- file-share-name 是 Filestore 实例上的文件共享的名称。
- drive-letter 是您要为映射分配的云端硬盘的字母。
示例
以下命令会将 IP 地址为
10.0.0.2
的 Filestore 实例上的文件共享vol1
映射到客户端 Windows 虚拟机上的驱动器z:
:net use Z: \\10.0.0.2\vol1
可选:如需使用 NFS 文件锁定功能,请验证以下内容:
确保为所有必需的 NFS 端口(包括
statd
和nlockmgr
)配置了防火墙规则。确保在 PowerShell 中使用类似于以下命令配置 Windows NFS 客户端,以使用预留端口:
nfsadmin client config protocol=tcp UseReservedPorts=yes nfsadmin client stop nfsadmin client start
在文件共享上创建和装载子目录
将文件共享装载到客户端虚拟机上后,您可以在文件共享上创建子目录,然后客户端便可直接装载这些目录,而无需装载整个文件共享:
要在装载的文件共享上创建子目录,请运行以下命令:
sudo mkdir -p mount-point-directory/file-share-sub-dir
其中:
mount-point-directory
是文件共享映射到的路径。file-share-sub-dir
是您要在文件共享中创建的子目录的路径。
此命令会同时在客户端虚拟机和文件共享上创建子目录。例如,如果您已将文件共享
10.0.0.2:/vol1
装载到客户端虚拟机上的目录/mnt
,则sudo mkdir -p /mnt/nfs
命令会在文件共享上创建10.0.0.2:/vol1/nfs
并在客户端虚拟机上创建/mnt/nfs
。可选:如果要将文件共享子目录装载到装载文件共享的客户端虚拟机上的目录,则必须先卸载文件共享:
sudo umount mount-point-directory
其中,
mount-point-directory
是文件共享映射到的目录。装载子目录:
sudo mount ip-address:/file-share/file-share-sub-dir mount-point-directory
其中:
ip-address
是 Filestore 实例的 IP 地址。file-share
是实例上的文件共享的名称。file-share-sub-dir
是要装载的文件共享中的子目录路径。mount-point-directory
是您要将 Filestore 文件共享映射到的路径。
示例:在以下命令中:
sudo mount 10.0.0.2:/vol1/nfs /mnt/nfs
10.0.0.2
是 Filestore 实例的 IP 地址。vol1
是文件共享的名称。nfs
是文件共享子目录。/mnt/nfs
是文件共享子目录nfs
映射到的客户端虚拟机上的目录。
后续步骤
- 了解如何将数据复制到已装载的文件共享。
- 了解如何在远程网络的客户端上装载文件共享。
- 排查与 Filestore 相关的装载问题。