以 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計費標準收取。請確認您的阿里雲帳號可在目標可用性區域購買該規格執行個體。詳細價格,請參見Elastic Compute Service產品定價。
-
如果對效能無極致要求,建議在控制台開啟通用型協議服務,改用 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執行個體配置免密登入前,建議將所有目標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 檔案系統可作為普通目錄進行訪問和檔案操作。