CPFS-POSIX客户端挂载文件系统(Alibaba Cloud Linux)

更新时间:

本文介绍如何为Alibaba Cloud Linux 2操作系统安装CPFS-POSIX客户端并挂载访问CPFS文件系统。

背景信息

  • 本文提及的目标ECS均指代挂载访问CPFS文件系统的计算节点。

  • 文件存储CPFS兼容POSIX接口,通过安装CPFS-POSIX客户端、挂载文件系统使用。文件存储CPFS-POSIX客户端提供定制化服务,支持在Alibaba Cloud Linux 2操作系统中安装使用。如果您希望通过NFS协议访问CPFS文件系统,请参见CPFS-NFS客户端挂载文件系统

  • 添加POSIX挂载点后,CPFS会自动创建3个管理节点ECS,分别为<FSID>-<GENID>-qr-001,<FSID>-<GENID>-qr-002,<FSID>-<GENID>-qr-003,列表中第一个管理节点ECS实例(<FSID>-<GENID>-qr-001)默认为CPFS-POSIX客户端安装节点。

前提条件

  • 已创建文件系统。具体操作,请参见创建文件系统

  • 已添加POSIX挂载点。具体操作,请参见添加POSIX挂载点

  • 已创建一个或多个Alibaba Cloud Linux 2 ECS实例,且实例规格如下。

    • 版本:Alibaba Cloud Linux 2.1903 LTS 64位

    • 内核版本:4.19.91-27.4.al7.x86_64及以下版本。

      您可以执行uname -r命令查看内核版本。

步骤一:配置目标ECS安全组

在为前提条件中已创建的ECS实例挂载文件系统前,您需要为其添加CPFS-POSIX管理节点ECS实例的安全组,防止目标ECS实例与CPFS集群无法远程连接和数据传输。

  1. 获取CPFS-POSIX管理节点ECS实例的安全组信息。

    1. 登录NAS控制台

    2. 单击目标文件系统,进入文件系统详情页,单击POSIX挂载使用

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

    4. 实例详情页面,单击安全组页签,记录该CPFS-POSIX管理节点的安全组信息。

      管理节点安全组的名称结构为:<FSID>-<GENID>-qr-sg。

      其中,<FSID>为CPFS文件系统ID;<GENID>为挂载点的序列号,每次创建CPFS挂载点时递增。

      1

  2. 为目标ECS实例添加CPFS-POSIX管理节点ECS实例的安全组。

    1. 在左侧导航栏,单击实例

    2. 实例列表页面,找到待挂载CPFS文件系统的ECS实例,单击更多 > 网络和安全组 > 加入安全组2

    3. ECS实例加入安全组对话框的安全组下拉列表中,选择步骤1查询到的管理节点安全组(<FSID>-<GENID>-qr-sg),单击确定23

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

  1. 登录NAS控制台

  2. 单击目标文件系统,进入文件系统详情页,单击POSIX挂载使用

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

  4. 单击远程连接,登录CPFS-POSIX客户端安装节点。

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

    说明

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

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

      1. 创建client.list文件

        touch client.list

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

        <目标ECS 1内网IP地址> 
        <目标ECS 2内网IP地址>
        <目标ECS 3内网IP地址>

        示例:

        192.168.1.249
        192.168.1.250
        192.168.1.251
        说明

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

      3. 保存并退出。

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

      1. 创建qr.list文件

        touch qr.list

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

        10.0.2.41
        10.0.2.42
        10.0.2.43

        您可以在客户端管理节点区域,获取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. 保存并退出。

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

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

    PASSWD='yourpassword'
    说明

    如果目标ECS实例的PASSWD不一致,则需要多次创建client.list并重复执行步骤8~步骤10的操作步骤。

  8. 执行以下命令,配置管理节点免密登录。

    cat client.list | xargs -I {} ./auto_ssh.sh root $PASSWD {}
  9. 执行以下命令,为记录到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"
  10. 执行以下命令,为记录到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配置环境,直接使用镜像创建实例即可。关于如何制作镜像的操作步骤,请参见自定义镜像

步骤三:挂载文件系统

  1. 在左侧导航栏,单击实例

  2. 实例列表页面,找到CPFS-POSIX客户端安装节点ECS(qr-001),单击操作列的远程连接,登录该节点。

    您可以在客户端管理节点区域,获取CPFS-POSIX客户端安装节点ECS的登录密码。

  3. 执行以下命令,更新管理节点和目标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"
  4. 执行以下命令,将目标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
  5. 执行以下命令,确认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
  6. (可选)查询默认路径。

    将目标ECS实例加入客户端管理节点后,文件系统会自动挂载在默认路径/cpfs/<FSID序列号>上,您可以执行mmlsfs <FSID序列号>-<GENID> -T命令,查询默认路径。

    • 执行命令示例

      mmlsfs 2989198****323d3-000001 -T
    • 返回示例

      flag                value                    description
      ------------------- ------------------------ -----------------------------------
       -T                 /cpfs/2989198****323d3-000001 Default mount point

    您也可以执行mount --bind命令,通过自定义路径访问CPFS文件系统。

    mount --bind /cpfs/2989198****323d3-000001 /mnt/test

    其中,/cpfs/2989198****323d3-000001为CPFS文件系统默认挂载路径;/mnt/test为自定义挂载路径。

    说明
    • CPFS文件系统安装节点不允许自定义挂载路径。

    • 不支持子目录挂载。

常见问题

更多关于挂载CPFS的常见问题及解决方案,请参见挂载访问FAQ

相关文档