通常情况下,当您要访问 NAS 文件系统数据时,需要先创建 NAS 文件系统并完成挂载操作。本文介绍如何在 NAS 控制台创建 NFS 文件系统,并在专有网络下通过 ECS 实例(CentOS 8.2)挂载 NFS 文件系统并实现数据上传与下载。

# 准备工作

已开通文件存储 NAS 服务。
已购买华东 1(杭州)地域(地域更具需求自行选择)ECS 实例(CentOS 8.2)。

# 创建文件系统

# 参数说明

参数 描述
云服务商 提供对象存储基础设施的云服务商
地域 云服务商的地域
文件系统类型 阿里云文件系统分为两种通用型 NAS 和极速型 NAS 华为云只有通用型 NAS
可用区 文件系统的可用区
存储类型 不同可用区下存储类型不同,通用型 NAS 下有容量型和性能型两种存储类型,极速型 NAS 下有高级型和标准型两种
协议类型 文件系统协议类型:NFS 和 SMB
加密类型 不加密和静态加密两种类型,SMB 协议不支持加密
网络类型 VPC 专有网络
VPC 网络 专有网络 ID
子网 该专有网络下的子网

# 挂载文件系统

# 配置 Linux ECS 实例

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

  1. 连接 ECS 实例,通过 ssh 连接或者 VNC 进行远程连接

  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的根目录(/)或任意子目录(例如:/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命令,查看挂载结果 如果返回信息包含如下类似信息,说明挂载成功。

    img

    挂载成功后,您还可以执行 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 服务自动启动会失败。 如果您是在 CentOS 6.x 系统中配置自动挂载,您还需执行以下操作。

    1) 执行chkconfig netfs on命令,确保 netfs 服务开机自启动。

    2) 打开/etc/netconfig 配置文件,注释掉 inet6 相关的内容(如下图所示)。

    img

  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
      
  3. 执行reboot命令,重启云服务器 ECS。

# 步骤四:卸载文件系统

# 云服务器 ECS(Linux 系统)中卸载文件系统

  1. 登录云服务器 ECS。

  2. 执行umount /mnt命令,卸载 NFS 文件系统。其中,/mnt 目录请使用实际值替换。

    说明 建议您不要指定任何其他 umount 选项,并避免修改任何其他 umount 选项的默认值。

    在卸载过程中,如果提示 device is busy,则需要先结束正在使用此 NAS 的进程,步骤如下:

    1) 安装 fuser。

    • CentOS、Redhat、Aliyun Linux 操作系统自带 fuser,无需安装。
    • Ubuntu 或 Debian 操作系统:执行apt install -y fuser命令进行安装。

    2) 执行fuser -mv <挂载点本地路径>命令,查看当前正在使用此 NAS 的进程 pid(pid 为 kernel 的进程不需要处理)。

    3) 执行kill <pid>命令,结束进程。

  3. 执行mount -l命令,查看卸载结果。

    如果回显中未找到您挂载的 NAS 文件系统信息,表示该文件系统已卸载成功。