快速入门(CPFS-POSIX)

更新时间:

POSIX客户端可同时连接多个存储节点,对上层应用提供标准POSIXMPI-IO接口,可以提供最优的性能和应用接口兼容性。本文以Alibaba Cloud Linux操作系统为例,介绍如何快速部署CPFS,并通过CPFS-POSIX客户端访问CPFS文件系统。

说明
  • CPFS-POSIX客户端可为您带来较CPFS-NFS更好的I/O性能体验。CPFS文件系统在创建POSIX挂载点时,会在您的阿里云账号下自动创建3个按量付费的ECS实例用于管理CPFS-POSIX客户端集群,ECS实例规格为ecs.g*.large(g6及以上实例规格),并按照所在地域ECS的收费标准进行收费,请确认您的阿里云账号在该可用区可购买该规格实例。云服务器ECS的详细价格,请参见云服务器ECS产品定价

  • 如果您对性能没有极致需求,建议您在控制台开启通用型协议服务,使用CPFS-NFS客户端访问CPFS。使用CPFS-NFS方式访问CPFS文件系统,无需额外的3ECS实例。关于协议服务的更多信息,请参见协议服务概述

前提条件

  • 已开通文件存储CPFS服务。

    首次登录文件存储控制台时,请根据页面引导开通CPFS服务。

  • 已创建一个ECS实例,且为CPFS-POSIX客户端支持的操作系统。更多信息,请参见创建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

    • 地域:华东1(杭州)

    • 可用区:杭州可用区K

    • 内网IP地址:192.168.1.249

使用流程

步骤一:创建文件系统

  1. 登录NAS控制台

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

  3. 创建页面,按如下说明配置必要参数。其他参数请您根据实际业务需求选择或选用默认配置。

    配置项

    说明

    地域

    在下拉列表中,选择华东1(杭州)

    可用区

    选择杭州可用区K。与ECS实例同一可用区。

    类型

    选择100 MB/s/TiB基线

    专有网络

    选择与ECS实例相同的VPC。

    虚拟交换机

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

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

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

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

  2. 在文件系统的详情页面,选择挂载使用页签。

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

    1. 单击添加POSIX客户端挂载点,配置如下必要参数。其他参数请您根据实际业务需求选择或选用默认配置。

      交换机:选择与ECS实例在同一VPC网络下创建的交换机。

    2. 单击确定

  4. 获取管理节点安全组信息。

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

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

      image.png

  5. 将目标ECS实例加入CPFS管理节点安全组。

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

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

    3. 选择安全组页签,单击修改安全组

    4. 从修改安全组对话框的安全组下拉列表中,选择上一步获取到的管理节点安全组(<FSID>-<GENID>-qr-sg),单击确定

      image

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

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

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

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

  3. 连通管理节点与目标ECS实例之间的免密登录。

    说明

    在为多个ECS实例配置连通CPFS管理节点之间的免密登录前,建议将目标ECS实例的登录密码设置为同一个密码,否则,您需要多次创建client.list并重复执行步骤6~步骤8的操作步骤。

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

      1. 创建client.list文件

        touch client.list
      2. 执行vi client.list命令,打开client.list文件并添加目标ECS的内网IP地址。

        192.168.1.249
        说明

        可添加一个或多个ECS实例,当添加多个ECS实例时,目标ECS的内网IP地址需换行输入。

      3. 保存并退出。

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

      1. 创建qr.list文件

        touch qr.list
      2. 执行vi qr.list命令,打开qr.list文件并添加管理节点IP地址。示例如下:

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

        您可以在客户端管理节点区域,获取CPFS-POSIX客户端管理节点IP地址。

      3. 保存并退出。

    3. 配置auto_ssh.sh脚本。

      1. 创建auto_ssh.sh文件。

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

  4. 执行以下命令,赋予用户拥有auto_ssh.sh文件的执行权限。

    chmod +x auto_ssh.sh
  5. 执行以下命令,记录client.list中目标ECS实例的PASSWD。

    PASSWD='yourpassword'
    说明

    如果目标ECS实例的PASSWD不一致,则需要多次创建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实例远程编译kernel extension。

    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实例时,无需再次为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

步骤五:验证挂载

挂载成功后,您可以在ECS上把CPFS文件系统当作一个普通的目录来访问和使用。

  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文件系统当作一个普通的目录来访问和使用。