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集群無法遠程連接和數據傳輸。
獲取CPFS-POSIX管理節點ECS實例的安全組信息。
登錄NAS控制臺。
單擊目標文件系統,進入文件系統詳情頁,單擊POSIX掛載使用。
在客戶端管理節點區域,單擊列表中第一個ECS實例,進入該實例的詳情頁面。
在實例詳情頁面,單擊安全組頁簽,記錄該CPFS-POSIX管理節點的安全組信息。
管理節點安全組的名稱結構為:<FSID>-<GENID>-qr-sg。
其中,<FSID>為CPFS文件系統ID;<GENID>為掛載點的序列號,每次創建CPFS掛載點時遞增。
為目標ECS實例添加CPFS-POSIX管理節點ECS實例的安全組。
在左側導航欄,單擊實例。
在實例列表頁面,找到待掛載CPFS文件系統的ECS實例,單擊
。從ECS實例加入安全組對話框的安全組下拉列表中,選擇步驟1查詢到的管理節點安全組(<FSID>-<GENID>-qr-sg),單擊確定。
步驟二:安裝CPFS-POSIX客戶端
登錄NAS控制臺。
單擊目標文件系統,進入文件系統詳情頁,單擊POSIX掛載使用。
在客戶端管理節點區域,單擊列表中第一個管理節點ECS實例,進入該實例的詳情頁面。
單擊遠程連接,登錄CPFS-POSIX客戶端安裝節點。
連通管理節點與目標ECS實例之間的免密登錄。
說明在為多個ECS實例配置連通CPFS管理節點之間的免密登錄前,建議將目標ECS實例的登錄密碼設置為同一個密碼,否則,您需要多次創建client.list并重復執行步驟8~步驟10的操作步驟。
創建client.list文件并添加目標ECS的內網IP地址。
創建client.list文件
touch client.list
執行
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地址需換行輸入。
保存并退出。
創建qr.list文件并添加管理節點IP地址。
創建qr.list文件
touch qr.list
執行
vi qr.list
命令,打開qr.list文件并添加管理節點IP地址。示例如下:10.0.2.41 10.0.2.42 10.0.2.43
您可以在客戶端管理節點區域,獲取CPFS-POSIX客戶端管理節點IP地址。
保存并退出。
配置auto_ssh.sh腳本。
創建auto_ssh.sh文件。
touch auto_ssh.sh
執行
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
保存并退出。
執行以下命令,賦予用戶擁有auto_ssh.sh文件的執行權限。
chmod +x auto_ssh.sh
執行以下命令,記錄client.list中目標ECS實例的PASSWD。
PASSWD='yourpassword'
說明如果目標ECS實例的PASSWD不一致,則需要多次創建client.list并重復執行步驟8~步驟10的操作步驟。
執行以下命令,配置管理節點免密登錄。
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實例遠程編譯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-POSIX客戶端安裝節點ECS(qr-001),單擊操作列的遠程連接,登錄該節點。
您可以在客戶端管理節點區域,獲取CPFS-POSIX客戶端安裝節點ECS的登錄密碼。
執行以下命令,更新管理節點和目標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
(可選)查詢默認路徑。
將目標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文件系統時,返回“unsupported OS for 'X86_64' architecture”錯誤該如何處理?
掛載CPFS文件系統時,返回“make sure kernel-devel version is consistent with kernel”錯誤該如何處理?
掛載CPFS文件系統時,返回“ssh: connect to host A port 22: Connection timed out”錯誤該如何處理?
掛載CPFS文件系統時,返回“[FATAL] B:Could not connect to B via ssh”錯誤該如何處理?
更多關于掛載CPFS的常見問題及解決方案,請參見掛載訪問FAQ。