本页面介绍如何在同一 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选项:选项 说明 hardNFS 客户端无限期地重试 NFS 请求。为降低 Filestore 实例重启时出现 I/O 中断的可能性,我们建议为 Linux 和 Windows 客户端使用 hard装载选项。timeo=600NFS 客户端会等待 600 分秒(60 秒)后再重试 NFS 请求。 retrans=3NFS 客户端会尝试 NFS 请求三次,再执行进一步的恢复操作。 rsize=524288对于每个 READ请求,NFS 客户端最多可以从 NFS 服务器接收 524,288 个字节。
注意:对于基本级实例,请将rsize值设置为1048576。wsize=524288对于每个 WRITE请求,NFS 客户端最多可以向 NFS 服务器发送 524,288 个字节。resvport与 NFS 服务器就此装载装点进行通信时,NFS 客户端会使用特权源端口。 asyncNFS 客户端延迟向 NFS 服务器发送应用程序写入,直到满足某些条件。
注意:使用sync选项会大大降低性能。- 为了降低装载延迟时间,请指定
-o tcp选项。 如果要将区域级、可用区级或企业级实例装载到运行 Linux 内核版本 5.3 及更高版本的客户端虚拟机,请考虑指定
nconnect装载选项来提高 NFS 性能。对于特定服务层级,我们建议指定以下客户端与服务器之间的连接数:层级 容量 连接数 区域级、可用区级 1-9.75 TiB nconnect=2区域级、可用区级 10-100 TiB nconnect=7企业 - nconnect=2大规模 SSD - nconnect=7一般来说,文件共享容量越大,连接的客户端虚拟机越少,通过使用
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以降低装载和卸载的延迟时间。 - 如果您要将区域级、地区级或企业级实例装载到运行 Linux 内核版本 5.3 及更高版本的客户端虚拟机上,请考虑指定
nconnect装载选项来提高 NFS 性能。对于特定服务层级,我们建议指定以下客户端与服务器之间的连接数:
层级 容量 连接数 区域级、可用区级 1-9.75 TiB nconnect=2区域级、可用区级 10-100 TiB nconnect=7企业 - nconnect=2大规模 SSD - nconnect=7一般来说,文件共享容量越大,连接的客户端虚拟机越少,通过使用
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 autofsRHEL/CentOS
sudo yum install autofsSUSE
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以降低装载和卸载的延迟时间。 - 如果您要将区域级、地区级或企业级实例装载到运行 Linux 内核版本 5.3 及更高版本的客户端虚拟机上,请考虑指定
nconnect装载选项来提高 NFS 性能。对于特定服务层级,我们建议指定以下客户端与服务器之间的连接数:
层级 容量 连接数 区域级、可用区级 1-9.75 TiB nconnect=2区域级、可用区级 10-100 TiB nconnect=7企业 - nconnect=2大规模 SSD - nconnect=7一般来说,文件共享容量越大,连接的客户端虚拟机越少,通过使用
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,以确保 NFS 访问权限正常。
在 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 DWORDNew-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" ` -Name "AnonymousGid" -Value "0" -PropertyType DWORD重启 NFS 客户端服务:
nfsadmin client stopnfsadmin 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)配置防火墙规则。确保 Windows NFS 客户端已配置为使用预留端口,方法是在 PowerShell 中运行类似于以下内容的命令:
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/nfs10.0.0.2是 Filestore 实例的 IP 地址。vol1是文件共享的名称。nfs是文件共享子目录。/mnt/nfs是文件共享子目录nfs映射到的客户端虚拟机上的目录。
后续步骤
- 了解如何将数据复制到已装载的文件共享。
- 了解如何在远程网络的客户端上装载文件共享。
- 排查与 Filestore 相关的装载问题。