快速入门(CPFS-POSIX)

更新时间:
复制为 MD 格式

以 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及以下版本

    RHELCentOS

    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客户端软件需要最少2CPU核、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

使用流程

完整部署流程分为五个阶段:

  1. 创建 CPFS 文件系统 — 在目标地域和可用区创建文件系统。

  2. 添加 POSIX 挂载点并加入仲裁节点安全组 — 创建挂载点,并将ECS实例加入仲裁节点安全组,确保客户端可连接控制面。

  3. 安装 CPFS-POSIX 客户端 — 配置免密登录并运行远程安装脚本。

  4. 挂载文件系统 — 在ECS实例上执行挂载命令。

  5. 验证挂载 — 确认文件系统可正常访问。

步骤一:创建文件系统

  1. 登录CPFS控制台

  2. 概览页面的文件系统选型区域,单击CPFS下方的创建

  3. 创建面板,按如下说明配置必要参数。其他参数请您根据实际业务需求选择或选用默认配置。更多信息,请参见创建文件系统

    配置项

    说明

    地域

    在下拉列表中,选择华东2(上海)

    可用区

    选择上海可用区B。与ECS实例同一可用区。

    类型

    选择100 MB/s/TiB基线

    CPFS配置容量

    选择文件系统存储容量。本示例选择容量为3600 GiB

    专有网络

    选择已创建的VPC网络。

    虚拟交换机

    选择VPC网络下创建的交换机。

  4. 单击立即购买,根据页面提示,完成购买。

步骤二:添加POSIX挂载点和添加管理节点安全组

  1. 在左侧导航栏,选择文件系统 > 文件系统列表,单击刚创建的文件系统名称。

  2. 在文件系统详情页面,单击挂载使用页签。

  3. 添加 POSIX 客户端挂载点。

    1. 单击添加POSIX客户端挂载点,配置以下必要参数。其他参数根据业务需求配置或保留默认值。

      参数

      说明

      交换机交换机

      选择与ECS实例在同一VPC下的交换机。

    2. 单击确定

  4. 获取仲裁节点安全组信息。

    1. 客户端管理节点区域,单击列表中的第一个ECS实例,进入该实例详情页面。

    2. 在该ECS实例详情页面,单击安全组页签,记录安全组信息。

      image.png

  5. 将目标ECS实例加入仲裁节点安全组。

    1. 在左侧导航栏,选择实例与镜像 > 实例

    2. 单击待挂载 CPFS 文件系统的ECS实例 ID,进入实例详情页面。

    3. 单击安全组页签,再单击对话框的安全组下拉列表中,选择上一步记录的仲裁节点安全组(<FSID>-<GENID>-qr-sg),单击确定

    4. image

步骤三:安装CPFS-POSIX客户端

  1. 在左侧导航栏,选择实例与镜像 > 实例

  2. 在 CPFS-POSIX 客户端安装节点 ECS(cpfs-****-000001-qr-001)的操作列,单击远程连接,登录该ECS实例。连接方式,请参见连接实例

    第一个ECS实例的登录密码,可在 NAS 控制台对应文件系统的挂载使用页面的客户端管理节点区域查看。客户端密码

  3. 配置管理节点到目标ECS实例的免密登录。

    说明

    为多个ECS实例配置免密登录前,建议将所有目标ECS实例的登录密码设置为相同密码。否则,您需要为每个实例单独创建 client.list 并重复执行步骤6~步骤8的操作。

    1. 创建 client.list 文件并添加目标ECS实例的内网IP地址。

      1. 创建 client.list 文件。

        touch client.list
      2. 打开 client.list 文件,添加目标ECS实例的内网IP地址。

        192.168.1.249
        说明

        如需添加多个ECS实例,每个内网IP地址单独占一行。

      3. 保存并退出。

    2. 创建 qr.list 文件并添加仲裁节点IP地址。

      1. 创建 qr.list 文件。

        touch qr.list
      2. 打开 qr.list 文件,添加仲裁节点IP地址。示例如下:

        192.168.*.***
        192.168.*.***
        192.168.*.***

        仲裁节点IP地址可在控制台客户端管理节点区域查看。

      3. 保存并退出。

    3. 创建并配置 auto_ssh.sh 脚本。

      1. 创建 auto_ssh.sh 文件。

        touch auto_ssh.sh
      2. 打开 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
        
      3. 保存并退出。

  4. 为 auto_ssh.sh 文件添加执行权限。

    chmod +x auto_ssh.sh
  5. 设置目标ECS实例的登录密码变量。

    PASSWD='yourpassword'
    说明

    如果各ECS实例的登录密码不同,需要为每个实例单独创建 client.list 并重复执行步骤6~步骤8的操作。

  6. 配置仲裁节点免密登录。

    cat client.list | xargs -I {} ./auto_ssh.sh root $PASSWD {}
  7. 为 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"
  8. 为 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文件系统

  1. 执行以下命令,更新管理节点和目标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"
  2. 执行以下命令,将目标ECS实例加入到CPFS集群。

    1. 执行命令

      mmaddnode -N client.list
      mmchlicense client --accept -N client.list
      mmchnode --perfmon -N client.list
      mmstartup -N client.list
      mmgetstate -a
    2. 返回示例

      当目标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
  3. 执行以下命令,确认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实例上,可直接进行文件读写。

  1. 连接目标ECS实例。连接方式,请参见连接ECS实例

  2. 执行以下命令,确认挂载点已列出。

    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* 即为查询到的挂载点。

  3. 执行以下命令,进入 CPFS 文件系统目录。

    cd <挂载点>

    此时,CPFS 文件系统可作为普通目录进行访问和文件操作。