CPFS支持NFS协议访问。您需要先安装CPFS-NFS客户端,然后运行CPFS-NFS执行mount命令挂载从而访问CPFS文件系统。

前提条件

CPFS-NFS客户端说明

支持的操作系统

操作系统类型操作系统版本
Alibaba Cloud Linux
  • Alibaba Cloud Linux 3.2104 64位
  • Alibaba Cloud Linux 2.1903 64位
CentOS
  • CentOS 8.x 64位
  • CentOS 7.x 64位
Ubuntu
  • Ubuntu 20.04 64位
  • Ubuntu 18.04 64位
  • Ubuntu 16.04 64位
Debian
  • Debian 10.x 64位
  • Debian 9.x 64位
  • Debian 8.x 64位

IP地址和端口

CPFS-NFS客户端会占用一个本地IP地址127.0.1.255,以及该地址上30000~60000的TCP端口,用于挂载时的端口映射。

如果127.0.1.255 IP地址,或者该地址上的30000~60000端口段已被其他软件使用,您需要修改CPFS-NFS客户端配置。具体操作,请参见CPFS-NFS客户端配置

文件目录

安装CPFS-NFS客户端后,会在ECS上生成CPFS-NFS客户端配置文件目录(/etc/aliyun/cpfs)、运行目录(/var/run/cpfs)、日志目录(/var/log/aliyun/cpfs/)。

进程

通过CPFS-NFS客户端挂载CPFS后,会在ECS上启动haproxy进程用于IO访问,同时启动watchdog进程用于监控CPFS-NFS客户端的健康状态。

步骤一:下载与安装CPFS-NFS客户端

  1. 下载CPFS-NFS客户端。
    操作系统下载命令
    Alibaba Cloud Linux
    wget https://cpfs-hangzhou-nfs-client.oss-cn-hangzhou.aliyuncs.com/aliyun-alinas-utils-latest.al.noarch.rpm
    CentOS
    wget https://cpfs-hangzhou-nfs-client.oss-cn-hangzhou.aliyuncs.com/aliyun-alinas-utils-latest.el.noarch.rpm
    Ubuntu
    sudo wget https://cpfs-hangzhou-nfs-client.oss-cn-hangzhou.aliyuncs.com/aliyun-alinas-utils-latest.deb -O /tmp/aliyun-alinas-utils-latest.deb
    Debian
  2. 安装CPFS-NFS客户端。
    操作系统安装命令
    Alibaba Cloud Linux
    sudo yum install aliyun-alinas-utils-*.rpm
    CentOS
    Ubuntu依次执行以下安装命令:
    1. sudo apt-get update
    2. sudo apt-get install /tmp/aliyun-alinas-utils-latest.deb 
    Debian
  3. 检查CPFS-NFS客户端安装结果。
    which mount.cpfs-nfs
    成功返回示例如下:
    /usr/sbin/mount.cpfs-nfs

步骤二:使用CPFS-NFS客户端挂载文件系统

  1. 挂载CPFS文件系统。
    sudo mount -t cpfs-nfs -o vers=3,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.cpfs.aliyuncs.com:/share/path /mnt
    挂载命令中的参数说明如下表所示。
    参数描述
    file-system-id.region.cpfs.aliyuncs.com:/share/path /mnt表示<挂载地址>:<CPFS文件系统目录> <当前服务器上待挂载的本地路径>,请根据实际情况替换。
    • 挂载地址:您可以在文件存储NAS控制台文件系统列表页面,单击目标文件系统后的管理,进入协议服务页面,在操作列,单击导出目录,进入导出目录面板获取挂载地址。
    • CPFS文件系统目录:CPFS的根目录(/share)或任意子目录(例如:/share/path),如果是子目录,请您确保子目录是CPFS文件系统中实际已存在的目录。
      说明 CPFS的共享目录必须以/share开头,例如:/share/share/subdir
    • 当前服务器上待挂载的本地路径:Linux ECS实例的根目录(/)或任意子目录(例如:/mnt),如果是子目录,请您确保子目录已存在。
    vers文件系统版本。CPFS仅支持NFSv3协议挂载文件系统。
    挂载选项挂载文件系统时,可选择多种挂载选项,挂载选项使用半角逗号(,)分隔,说明如下:
    • rsize:定义数据块的大小,用于客户端与文件系统之间读取数据。建议值:1048576。
    • wsize:定义数据块的大小,用于客户端与文件系统之间写入数据。建议值:1048576。
      说明 如果您需要更改IO大小参数(rsize和wsize),建议您尽可能使用最大值(1048576),以避免性能下降。
    • hard:在文件存储CPFS暂时不可用的情况下,使用文件系统上某个文件的本地应用程序时会停止并等待至该文件系统恢复在线状态。建议启用该参数。
    • timeo:指定时长,单位为0.1秒,即CPFS-NFS客户端在重试向文件系统发送请求之前等待响应的时间。建议值:600(60秒)。
      说明 如果您必须更改超时参数(timeo),建议您使用150或更大的值。该timeo参数的单位为0.1秒,因此150表示的时间为15秒。
    • retrans:CPFS-NFS客户端重试请求的次数。建议值:2。
    • noresvport:在网络重连时使用新的TCP端口,保障在网络发生故障恢复时不会中断连接。建议启用该参数。
      重要
      • 不建议使用soft选项,有数据一致性风险。如果您要使用soft选项,相关风险需由您自行承担。
      • 避免设置不同于默认值的任何其他挂载选项。如果更改读或写缓冲区大小或禁用属性缓存,可能会导致性能下降。
  2. 执行mount -l命令,查看挂载结果。

    挂载成功后,您可以执行df -h命令,查看当前文件系统的容量信息。

  3. 可选:配置开机时自动挂载。

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

    1. 打开/etc/fstab配置文件,添加挂载配置。
      file-system-id.region.nas.aliyuncs.com:/share/path /mnt cpfs-nfs vers=3,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
      示例中主要参数说明,请参见挂载命令参数说明。其余参数说明如下。
      参数说明
      _netdev防止客户端在网络就绪之前开始挂载文件系统。
      0(noresvport后第一项)非零值表示文件系统应由dump备份。对于CPFS NFS文件系统而言,此值默认为0。
      0(noresvport后第二项)该值表示fsck在启动时检查文件系统的顺序。对于CPFS NFS文件系统而言,此值默认为0,表示fsck不应在启动时运行。
    2. 执行reboot命令,重启ECS实例。
      说明 在重启ECS实例前,请确认手动挂载成功,避免ECS实例重启失败。另外,如果自动挂载配置成功,在ECS实例重启后,可以通过df -h命令查看到挂载的CPFS NFS文件系统。

CPFS-NFS客户端配置

配置文件

如果您需要修改CPFS-NFS客户端配置,请联系CPFS技术支持团队,并在团队指导下修改配置文件,否则可能会影响IO访问。配置文件路径:/etc/aliyun/cpfs/cpfs-utils.conf。配置示例如下:
[DEFAULT]
logging_level = INFO
logging_max_bytes = 1048576
logging_file_count = 10

[mount]
stunnel_debug_enabled = false

# Validate the certificate hostname on mount. This option is not supported by certain stunnel versions.
stunnel_check_cert_hostname = false

# Use OCSP to check certificate validity. This option is not supported by certain stunnel versions.
stunnel_check_cert_validity = false
proxy_port = 12049

cpfs_proxy_addr = 127.0.1.255
cpfs_proxy_port_min = 30000
cpfs_proxy_port_max = 60000

[mount-watchdog]
poll_interval_sec = 1
unmount_grace_period_sec = 30
dns_refresh_interval = 60

[client-tool]
配置文件中的重要参数说明如下:
参数说明
logging_level日志级别。默认为INFO。
logging_max_bytes日志文件的最大容量。默认为1048576字节,即单个日志文件最大为1 MiB。
logging_file_count日志文件的最大保留数量。默认为10,即最多保留10个日志文件。
cpfs_proxy_addrCPFS客户端proxy IP地址,默认为127.0.1.255。
cpfs_proxy_port_minCPFS客户端proxy端口范围最小值,默认为30000。
cpfs_proxy_port_maxCPFS客户端proxy端口范围最大值,默认为60000。
poll_interval_sec后台watchdog服务检测时间,默认为1s。
unmount_grace_period_sec执行umount CPFS-NFS挂载点后,清理对应的配置文件静默时间,默认为30s。
dns_refresh_interval后台watchdog服务检测DNS对应当前连接的主备节点是否可用,默认为60s。

haproxy配置

CPFS-NFS客户端在挂载时自动生成haproxy配置文件,并启动haproxy进程,请勿修改该配置文件,否则会影响IO访问。您可通过查看/var/run/cpfs/haproxy-config.dns配置文件,示例如下。
global
    maxconn 4096

defaults
    mode    tcp
    balance leastconn
    timeout client      60s
    timeout server      60s
    timeout connect     3s
    retries 3

frontend cpfs2049
    bind 127.0.1.255:30000
    default_backend bk2049

backend bk2049
    server cpfs_primary 172.27.1.189:2049 maxconn 2048 check port 2049 inter 2s fall 5 rise 30 on-marked-up shutdown-backup-sessions
    server cpfs_backup  172.27.0.214:2049 maxconn 2048 check port 2049 inter 2s fall 5 rise 30 backup
重要参数说明如下:
参数说明
defaults默认参数值不建议修改。
frontendhaproxy代理本地IP地址和端口。默认选择127.0.1.255,端口选择范围为30000~60000
backendCPFS-NFS服务后端对应的IP地址,其中cpfs_primary为主节点,cpfs_backup为备节点。

客户端日志

您可以通过访问/var/log/aliyun/cpfs/路径下的CPFS-NFS客户端日志定位挂载报错信息。同时可以通过修改日志配置文件/etc/aliyun/cpfs/cpfs-utils.conf中的参数,定制CPFS-NFS客户端日志内容。修改配置文件后,请您执行sudo service aliyun-cpfs-mount-watchdog restart命令,重启后端watchdog进程。