快速入门(CPFS-POSIX)
以 Alibaba Cloud Linux为例,介绍如何创建 CPFS 文件系统并通过 CPFS-POSIX 客户端完成挂载。CPFS-POSIX 客户端可同时连接多个存储节点,对上层应用提供标准 POSIX 和 MPI-IO 接口,兼具高性能与应用接口兼容性。
-
CPFS-POSIX 客户端的 I/O 性能优于 CPFS-NFS 客户端。创建 POSIX 挂载点时,系统会在您的阿里云账号下自动创建 3 个按量付费的ECS实例用于管理 CPFS-POSIX 客户端集群,实例规格为 ecs.g*.large(g6 及以上),费用按所在地域ECS计费标准收取。请确认您的阿里云账号可在目标可用区购买该规格实例。详细价格,请参见云服务器ECS产品定价。
-
如果对性能无极致要求,建议在控制台开启通用型协议服务,改用 CPFS-NFS 客户端访问 CPFS。NFS 方式无需额外的 3 个ECS实例。关于协议服务的更多信息,请参见协议服务。
前提条件
开始前,请确认以下准备工作已完成:
-
开通 CPFS 服务:首次登录CPFS 控制台时,根据页面引导完成开通。
-
ECS 实例:已创建一个运行 CPFS-POSIX 客户端支持的操作系统的ECS实例。支持的操作系统和实例要求,请参见创建ECS实例。
操作系统类型
发行版
内核版本
Alibaba Cloud Linux
Alibaba Cloud Linux 2.1903 64位
4.19.91-27.4.al7.x86_64及以下版本
RHEL或CentOS
8.4
4.18.0-305.19.1.el8_4
8.3
4.18.0-240.22.1.el8_3
8.2
4.18.0-193.28.1.el8_2
8.1
4.18.0-147.8.1.el8_1
8.0
4.18.0-80.11.2.el8_0
7.9
3.10.0-1160.42.2.el7
7.8
3.10.0-1127.19.1.el7
7.7
3.10.0-1062.18.1.el7
7.6
3.10.0-957.54.1.el7
7.5
3.10.0-862.14.4.el7
7.4
3.10.0-693.2.2.el7
7.3
3.10.0-514.26.2.el7
7.2
3.10.0-514.26.2.el7
Ubuntu
20.04.3 LTS
5.4.0-86-generic
说明CPFS-POSIX客户端软件需要最少2个CPU核、4 GiB内存确保正常运行。
如果您的操作系统内核版本不属于POSIX客户端支持的内核版本,建议您使用NFS客户端访问CPFS。
使用CentOS的用户,由于CentOS官方宣布了停止维护CentOS Linux的计划,阿里云上CentOS Linux公共镜像来源于CentOS官方,当CentOS Linux停止维护后,阿里云将会同时停止对该操作系统的支持。为了避免操作系统停止维护带来的影响,建议您及时更换操作系统。关于更换操作系统的详细信息,请参见操作系统迁移。
本文使用的ECS实例配置如下:
-
操作系统:Alibaba Cloud Linux 2.1903 LTS 64位
-
内核版本:4.19.91-27.4.al7.x86_64
-
vCPU:2 vCPU
-
内存:8 GiB
-
地域:华东2(上海)
-
可用区:上海可用区B
-
内网IP地址:192.168.1.249
使用流程
完整部署流程分为五个阶段:
-
创建 CPFS 文件系统 — 在目标地域和可用区创建文件系统。
-
添加 POSIX 挂载点并加入仲裁节点安全组 — 创建挂载点,并将ECS实例加入仲裁节点安全组,确保客户端可连接控制面。
-
安装 CPFS-POSIX 客户端 — 配置免密登录并运行远程安装脚本。
-
挂载文件系统 — 在ECS实例上执行挂载命令。
-
验证挂载 — 确认文件系统可正常访问。
步骤一:创建文件系统
步骤二:添加POSIX挂载点和添加管理节点安全组
-
在左侧导航栏,选择文件系统 > 文件系统列表,单击刚创建的文件系统名称。
-
在文件系统详情页面,单击挂载使用页签。
-
添加 POSIX 客户端挂载点。
-
单击添加POSIX客户端挂载点,配置以下必要参数。其他参数根据业务需求配置或保留默认值。
参数
说明
交换机交换机
选择与ECS实例在同一VPC下的交换机。
-
单击确定。
-
-
获取仲裁节点安全组信息。
-
在客户端管理节点区域,单击列表中的第一个ECS实例,进入该实例详情页面。
-
在该ECS实例详情页面,单击安全组页签,记录安全组信息。

-
-
将目标ECS实例加入仲裁节点安全组。
-
在左侧导航栏,选择实例与镜像 > 实例。
-
单击待挂载 CPFS 文件系统的ECS实例 ID,进入实例详情页面。
-
单击安全组页签,再单击对话框的安全组下拉列表中,选择上一步记录的仲裁节点安全组(<FSID>-<GENID>-qr-sg),单击确定。
-

-
步骤三:安装CPFS-POSIX客户端
-
在左侧导航栏,选择实例与镜像 > 实例。
-
在 CPFS-POSIX 客户端安装节点 ECS(cpfs-****-000001-qr-001)的操作列,单击远程连接,登录该ECS实例。连接方式,请参见连接实例。
第一个ECS实例的登录密码,可在 NAS 控制台对应文件系统的挂载使用页面的客户端管理节点区域查看。

-
配置管理节点到目标ECS实例的免密登录。
说明为多个ECS实例配置免密登录前,建议将所有目标ECS实例的登录密码设置为相同密码。否则,您需要为每个实例单独创建 client.list 并重复执行步骤6~步骤8的操作。
-
创建 client.list 文件并添加目标ECS实例的内网IP地址。
-
创建 client.list 文件。
touch client.list -
打开 client.list 文件,添加目标ECS实例的内网IP地址。
192.168.1.249说明如需添加多个ECS实例,每个内网IP地址单独占一行。
-
保存并退出。
-
-
创建 qr.list 文件并添加仲裁节点IP地址。
-
创建 qr.list 文件。
touch qr.list -
打开 qr.list 文件,添加仲裁节点IP地址。示例如下:
192.168.*.*** 192.168.*.*** 192.168.*.***仲裁节点IP地址可在控制台客户端管理节点区域查看。
-
保存并退出。
-
-
创建并配置 auto_ssh.sh 脚本。
-
创建 auto_ssh.sh 文件。
touch auto_ssh.sh -
打开 auto_ssh.sh 文件,添加以下内容。
#!/usr/bin/expect set timeout 10 set username [lindex $argv 0] set password [lindex $argv 1] set hostname [lindex $argv 2] spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $username@$hostname expect { #first connect, no public key in ~/.ssh/known_hosts "Are you sure you want to continue connecting (yes/no)?" { send "yes\r" expect "password:" send "$password\r" } #already has public key in ~/.ssh/known_hosts "password:" { send "$password\r" } "Now try logging into the machine" { #it has authorized, do nothing! } "already exist on the remote" { #it has authorized, do nothing! } } expect eof -
保存并退出。
-
-
-
为 auto_ssh.sh 文件添加执行权限。
chmod +x auto_ssh.sh -
设置目标ECS实例的登录密码变量。
PASSWD='yourpassword'说明如果各ECS实例的登录密码不同,需要为每个实例单独创建 client.list 并重复执行步骤6~步骤8的操作。
-
配置仲裁节点免密登录。
cat client.list | xargs -I {} ./auto_ssh.sh root $PASSWD {} -
为 client.list 中的ECS实例远程安装 CPFS 客户端。回显
Complete!表示安装成功。region_id=`curl http://100.100.100.200/latest/meta-data/region-id`; wget https://cpfs-${region_id}-pre.oss-${region_id}-internal.aliyuncs.com/cpfs/CPFS2.3.4-CentOS.tar.gz -O /root/CPFS2.3.4-CentOS.tar.gz; cat client.list | xargs -I {} scp /root/CPFS2.3.4-CentOS.tar.gz {}:/root/ pssh -ih client.list "tar xzvf /root/CPFS2.3.4-CentOS.tar.gz" pssh -ih client.list "cd /root/CPFS2.3.4-CentOS/CentOS7;yum install -y gpfs.adv-*.x86_64.rpm gpfs.base-*.x86_64.rpm gpfs.docs-*.noarch.rpm gpfs.gpl-*.noarch.rpm gpfs.gskit-*.x86_64.rpm gpfs.gss.pmsensors-*.x86_64.rpm gpfs.license.dm-*.x86_64.rpm gpfs.msg.en_US-*.noarch.rpm" -
为 client.list 中的ECS实例远程编译内核扩展。
pssh -ih client.list "/usr/bin/yum -y install cpp gcc-c++ elfutils-libelf-devel" pssh -ih client.list "export LINUX_DISTRIBUTION=KERNEL_ORG_LINUX; /usr/lpp/mmfs/bin/mmbuildgpl"环境配置完成后,可将该环境制作为自定义镜像。后续新增访问 CPFS 文件系统的ECS实例时,无需重复配置,直接使用镜像创建实例即可。关于如何制作自定义镜像,请参见自定义镜像概述。
步骤四:挂载CPFS文件系统
-
执行以下命令,更新管理节点和目标ECS实例的hosts文件。
pssh -ih client.list "hostname;ifconfig eth0 | grep -v inet6 | grep inet | awk '{print \$2}'" | grep -v SUCC | sed 'N;s/\n/ /' > /tmp/ip-host-client.list pssh -ih qr.list "hostname;ifconfig eth0 | grep -v inet6 | grep inet | awk '{print \$2}'" | grep -v SUCC | sed 'N;s/\n/ /' > /tmp/ip-host-qr.list cat /tmp/ip-host-client.list | awk '{print $2,$1,$1"t_MAGICTAG"}' > /etc/client-hosts.append cat /tmp/ip-host-qr.list | awk '{print $2,$1,$1"t_MAGICTAG"}' > /etc/qr-hosts.append pssh -ih client.list "cp /etc/hosts hosts.bak" pssh -ih qr.list "cp /etc/hosts hosts.bak" cat client.list | xargs -I {} scp /etc/client-hosts.append {}:/etc/ cat client.list | xargs -I {} scp /etc/qr-hosts.append {}:/etc/ cat qr.list | xargs -I {} scp /etc/client-hosts.append {}:/etc/ pssh -ih client.list "cat /etc/client-hosts.append >> /etc/hosts" pssh -ih client.list "cat /etc/qr-hosts.append >> /etc/hosts" pssh -ih qr.list "cat /etc/client-hosts.append >> /etc/hosts" -
执行以下命令,将目标ECS实例加入到CPFS集群。
-
执行命令
mmaddnode -N client.list mmchlicense client --accept -N client.list mmchnode --perfmon -N client.list mmstartup -N client.list mmgetstate -a -
返回示例
当目标ECS实例节点状态变为
active时,则表示该节点成功加入CPFS集群。Node number Node name GPFS state --------------------------------------------------------------- 1 cpfs-2989198****323d3-000001-qr-001 active 2 cpfs-2989198****323d3-000001-qr-002 active 3 cpfs-2989198****323d3-000001-qr-003 active 4 iZ0jl91t3p5kehvr6i5**** active
-
-
执行以下命令,确认node列表中已包含目标ECS实例。
-
执行命令
mmlscluster -
返回示例
Node Daemon node name IP address Admin node name Designation ----------------------------------------------------------------------------------------------------------- 1 cpfs-2989198****323d3-000001-qr-001 192.168.3.57 cpfs-2989198****323d3-000001-qr-001 quorum-manager-perfmon 2 cpfs-2989198****323d3-000001-qr-002 192.168.3.58 cpfs-2989198****323d3-000001-qr-002 quorum-manager-perfmon 3 cpfs-2989198****323d3-000001-qr-003 192.168.3.56 cpfs-2989198****323d3-000001-qr-003 quorum-manager-perfmon 4 iZ0jl91t3p5kehvr6i5**** 192.168.3.59 iZ0jl91t3p5kehvr6i5**** perfmon
-
步骤五:验证挂载
挂载成功后,CPFS 文件系统以普通目录的形式挂载到ECS实例上,可直接进行文件读写。
-
连接目标ECS实例。连接方式,请参见连接ECS实例。
-
执行以下命令,确认挂载点已列出。
df -h返回结果示例如下:
Filesystem Size Used Avail Use% Mounted on devtmpfs 7.6G 0 7.6G 0% /dev tmpfs 7.6G 0 7.6G 0% /dev/shm tmpfs 7.6G 512K 7.6G 1% /run tmpfs 7.6G 0 7.6G 0% /sys/fs/cgroup /dev/vda1 40G 3.4G 37G 9% / tmpfs 1.6G 0 1.6G 0% /run/user/0 01a392bac3****-000001 3.6T 432M 3.6T 1% /cpfs/01a392bac3****-000001其中,*/cpfs/01a392bac3****-000001* 即为查询到的挂载点。
-
执行以下命令,进入 CPFS 文件系统目录。
cd <挂载点>此时,CPFS 文件系统可作为普通目录进行访问和文件操作。