本文介绍如何通过阿里云Linux ECS实例挂载NFS文件系统。在Linux ECS实例中,安装NFS客户端后,可以通过手动或自动方式挂载NFS文件系统。

前提条件

配置Linux ECS实例

在Linux系统挂载NFS文件系统时,需要配置Linux ECS实例。请您确保每台Linux服务器执行一次配置即可,不需要在每次挂载时都执行。

  1. 连接ECS实例,具体连接方式请参见连接ECS实例
  2. 安装NFS客户端。
    • 如果您使用CentOS、Redhat、Aliyun Linux操作系统,请执行以下命令。
      sudo yum install nfs-utils
    • 如果您使用Ubuntu或Debian操作系统,请执行以下命令。
      sudo apt-get update
      sudo apt-get install nfs-common
  3. 增加同时发起的NFS请求的数量。
    请执行以下命令,将同时发起的NFS请求数量修改为128。详情请参见如何修改同时发起的NFS请求数量
    sudo echo "options sunrpc tcp_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf
    sudo echo "options sunrpc tcp_max_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf

手动挂载NFS文件系统

您可以使用文件系统的挂载地址,将NFS文件系统挂载至Linux ECS实例。

  1. 挂载NFS文件系统。
    • 如果您使用的是容量型或性能型NAS,请执行以下命令。
      说明
      • 推荐您通过NFS v3协议挂载文件系统,以获得最佳性能。
      • 如果您的应用依赖文件锁,即需要使用多台Linux ECS实例同时编辑一个文件,请使用NFS v4协议挂载文件系统。
      使用NFS v3协议挂载文件系统:
      sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.nas.aliyuncs.com:/ /mnt
      使用NFS v4协议挂载文件系统:
      sudo mount -t nfs -o vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.nas.aliyuncs.com:/ /mnt                                
    • 如果您使用的是极速型NAS,请执行以下命令。
      sudo mount -t nfs -o vers=3,nolock,noacl,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.extreme.nas.aliyuncs.com:/share /mnt
    挂载命令中的参数说明如下表所示。
    参数 描述
    容量型或性能型NAS:file-system-id.region.nas.aliyuncs.com:/ /mnt

    极速型NAS:file-system-id.region.extreme.nas.aliyuncs.com:/share /mnt

    表示<挂载地址>:<NAS文件系统目录> <当前服务器上待挂载的本地路径>,请根据实际情况替换。
    • 挂载地址:您可以在文件存储NAS控制台文件系统列表页面,单击目标文件系统后的管理,进入挂载使用页面获取挂载地址。详情请参见管理挂载点
    • NAS文件系统目录:NAS的根目录(/)或任意子目录(例如:/share),如果是子目录,请您确保子目录已存在。
      说明 极速型NAS的共享目录必须以/share开头,例如:/share/share/subdir
    • 当前服务器上待挂载的本地路径:Linux ECS实例的根目录(/)或任意子目录(例如:/mnt),如果是子目录,请您确保子目录已存在。
    vers 文件系统版本。
    • vers=3:使用NFS v3协议挂载文件系统。
    • vers=4:使用NFS v4协议挂载文件系统。
    说明
    • 容量型或性能型NAS:支持NFS v3和NFS v4。
    • 极速型NAS:只支持NFS v3,不支持NFS v4。
    挂载选项

    挂载文件系统时,可选择多种挂载选项,挂载选项使用英文逗号(,)分隔,说明如下:

    • rsize:定义数据块的大小,用于客户端与文件系统之间读取数据。建议值:1048576。
    • wsize:定义数据块的大小,用于客户端与文件系统之间写入数据。建议值:1048576。
      说明 如果您需要更改IO大小参数(rsize和wsize),建议您尽可能使用最大值(1048576),以避免性能下降。
    • hard:在文件存储NAS暂时不可用的情况下,使用文件系统上某个文件的本地应用程序时会停止并等待至该文件系统恢复在线状态。建议启用该参数。
    • timeo:指定时长,单位为0.1秒,即NFS客户端在重试向文件系统发送请求之前等待响应的时间。建议值:600(60秒)。
      说明 如果您必须更改超时参数(timeo),建议您使用150或更大的值。该timeo参数的单位为0.1秒,因此150表示的时间为15秒。
    • retrans:NFS客户端重试请求的次数。建议值:2。
    • noresvport:在网络重连时使用新的TCP端口,保障在网络发生故障恢复时不会中断连接。建议启用该参数。
    注意
    • 不建议使用soft选项,有数据一致性风险。如果您要使用soft选项,相关风险需由您自行承担。
    • 避免设置不同于默认值的任何其他挂载选项。如果更改读或写缓冲区大小或禁用属性缓存,可能会导致性能下降。
  2. 执行mount -l命令,查看挂载结果。
    如果返回信息包含如下类似信息,说明挂载成功。查看挂载结果挂载成功后,您还可以执行df -h命令,查看当前文件系统的容量信息。

    如果挂载失败,请进行问题排查,详情请参见挂载失败的排查与处理方法

  3. 挂载成功后,您可以在Linux ECS上访问NAS文件系统,执行读取或写入操作。
    您可以把NAS文件系统当作一个普通的目录来访问和使用,示例如下:读写操作

自动挂载NFS文件系统

为避免已挂载文件系统的云服务器ECS重启后,挂载信息丢失,您可以通过在Linux ECS实例中配置/etc/fstab文件,实现在云服务器ECS设置重启时NFS文件系统自动挂载。

说明 在配置自动挂载前,请先确认手动挂载成功,避免ECS启动失败。
  1. 如果您使用的是极速型NAS,请执行以下命令。
    如果您使用的是容量型或性能型NAS,请跳过此步骤,直接执行步骤2
    vi /etc/systemd/system/sockets.target.wants/rpcbind.socket
    打开/etc/systemd/system/sockets.target.wants/rpcbind.socket文件后,需要注释IPv6相关的rpcbind参数(如下图所示),否则NFS的rpcbind服务自动启动会失败。注释rpcbind参数
    如果您是在CentOS 6.x系统中配置自动挂载,您还需执行以下操作。
    1. 执行chkconfig netfs on命令,确保netfs服务开机自启动。
    2. 打开/etc/netconfig配置文件,注释掉inet6相关的内容(如下图所示)。注释inet6相关内容
  2. 打开/etc/fstab配置文件,添加挂载配置。
    • 如果您使用的是容量型或性能型NAS,配置示例如下。
      • 使用NFS v3协议挂载文件系统:
        file-system-id.region.nas.aliyuncs.com:/ /mnt nfs vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
      • 使用NFS v4协议挂载文件系统:
        file-system-id.region.nas.aliyuncs.com:/ /mnt nfs vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
    • 如果您使用的是极速型NAS,配置示例如下。
      file-system-id.region.extreme.nas.aliyuncs.com:/share /mnt nfs vers=3,nolock,noacl,proto=tcp,noresvport,_netdev 0 0
    说明
    • 如果您是在CentOS 6.x系统中配置自动挂载,您需先执行chkconfig netfs on命令,确保netfs服务开机自启动。
    • 如果您是在Ubuntu系统中配置自动挂载,请先执行以下命令:
      [ ! -f /etc/rc.local ] && echo '#!/bin/bash' > /etc/rc.local; echo "mount -a -t nfs" >> /etc/rc.local; chmod +x /etc/rc.local
      并在自动挂载参数noresvport后面紧跟着加入,x-systemd.automount,并且后面保留“ 0 0”,否则自动挂载可能不生效。
    • 如果您是在Aliyun Linux系统中配置自动挂载,请先执行以下命令:
      [ ! -f /etc/rc.local ] && echo '#!/bin/bash' > /etc/rc.local; echo "mount -a -t nfs" >> /etc/rc.local; chmod +x /etc/rc.local
      并在自动挂载参数noresvport后面紧跟着加入,x-systemd.automount,x-systemd.requires=systemd-resolved.service,x-systemd.after=systemd-resolved.service,并且后面保留“ 0 0”,否则自动挂载可能不生效。
    示例中主要参数说明,请参见挂载命令参数说明表。其余参数说明如下。
    参数 说明
    _netdev 防止客户端在网络就绪之前开始挂载文件系统。
    0(noresvport后第一项) 非零值表示文件系统应由dump备份。对于NAS文件系统而言,此值默认为0。
    0(noresvport后第二项) 该值表示fsck在启动时检查文件系统的顺序。对于NAS文件系统而言,此值默认为0,表示fsck不应在启动时运行。
  3. 执行reboot命令,重启云服务器ECS。
    说明 在重启云服务器ECS前,请确认手动挂载成功,避免ECS重启失败。另外,如果自动挂载配置成功,在ECS重启后的一分钟内,可以通过df -h命令查看到挂载的NAS文件系统。