このトピックでは、Alibaba Cloud Linux 2 オペレーティングシステムに CPFS-POSIX クライアントをインストールし、Cloud Parallel File Storage (CPFS) ファイルシステムをマウントする方法について説明します。
背景情報
このトピックのターゲット Elastic Compute Service (ECS) インスタンスは、CPFS ファイルシステムがマウントされる計算ノードです。
CPFS ファイルシステムは、POSIX ベースの API と互換性があります。CPFS-POSIX クライアントをインストールして、CPFS ファイルシステムをマウントして使用できます。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 を実行する 1 つ以上の ECS インスタンスを作成済みであること。インスタンスは次の要件を満たす必要があります。
バージョン: Alibaba Cloud Linux 2.1903 LTS 64 ビット
カーネルバージョン: 4.19.91-27.4.al7.x86_64 以前。
uname -r コマンドを実行してカーネルバージョンを確認できます。
ステップ 1: ターゲット ECS インスタンスのセキュリティグループを設定する
前提条件の ECS インスタンスにファイルシステムをマウントする前に、CPFS-POSIX マスターノード ECS インスタンスのセキュリティグループをターゲット ECS インスタンスに追加します。これにより、ターゲット ECS インスタンスと CPFS クラスター間のリモート接続とデータ送信の失敗を防ぎます。
クォーラムノード ECS インスタンスのセキュリティグループ情報を取得します。
NAS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
ページの左上隅で、宛先ファイルシステムが配置されているリソースグループとリージョンを選択します。

宛先ファイルシステムの ID をクリックして詳細ページに移動し、[マウント] をクリックします。
[クライアント管理ノード] セクションで、リストの最初の ECS インスタンスの ID をクリックして、その詳細ページに移動します。
[インスタンス詳細] ページで、[セキュリティグループ] タブをクリックし、CPFS-POSIX クォーラムノードの セキュリティグループ ID/名前 を記録します。
クォーラムノードのセキュリティグループの名前は、<FSID>-<GENID>-qr-sg のフォーマットです。
<FSID> は CPFS ファイルシステムの ID です。<GENID> はマウントポイントのシリアル番号で、CPFS マウントポイントが作成されるたびに増分します。
CPFS-POSIX マスターノードのセキュリティグループをターゲット ECS インスタンスに追加します。
左側のナビゲーションウィンドウで、[インスタンスとイメージ] > [インスタンス] を選択します。
[インスタンス] ページで、CPFS ファイルシステムをマウントする ECS インスタンスの ID をクリックします。[セキュリティグループ] タブをクリックし、[セキュリティグループの変更] をクリックします。
[セキュリティグループの変更] ダイアログボックスで、ステップ 1 で取得したクォーラムノードのセキュリティグループ (<FSID>-<GENID>-qr-sg) を [セキュリティグループ] ドロップダウンリストから選択します。次に、[OK] をクリックします。
ステップ 2: CPFS-POSIX クライアントをインストールする
NAS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
ページの左上隅で、ターゲットファイルシステムのリソースグループとリージョンを選択します。

ターゲットファイルシステムをクリックします。ファイルシステムの詳細ページで、[マウント] をクリックします。
Client Management node セクションで、リストの最初のマスターノード ECS インスタンスをクリックして、その詳細ページに移動します。
[リモート接続] をクリックして、CPFS-POSIX クライアントインストールノードにログインします。
マスターノードとターゲット ECS インスタンス間のパスワードなしのログインを有効にします。
説明マスターノードと複数の ECS インスタンス間でパスワードなしのログインを設定する前に、ターゲット ECS インスタンスに同じログインパスワードを設定してください。そうしないと、client.list ファイルを作成し、ステップ 10 から 12 を複数回繰り返す必要があります。
client.list ファイルを作成し、ターゲット ECS インスタンスの内部 IP アドレスを追加します。
client.list ファイルを作成します。
touch client.listvi client.listコマンドを実行して client.list ファイルを開きます。次に、ターゲット ECS インスタンスの内部 IP アドレスを追加します。<Internal IP address of target ECS 1> <Internal IP address of target ECS 2> <Internal IP address of target ECS 3>例:
192.168.1.249 192.168.1.250 192.168.1.251説明1 つ以上の ECS インスタンスを追加できます。複数の ECS インスタンスを追加する場合は、各ターゲット ECS インスタンスの内部 IP アドレスを新しい行に入力します。
ファイルを保存して終了します。
qr.list ファイルを作成し、マスターノードの IP アドレスを追加します。
qr.list ファイルを作成します。
touch qr.listvi qr.listコマンドを実行して qr.list ファイルを開きます。次に、マスターノードの IP アドレスを追加します。次の出力は例です。10.0.2.41 10.0.2.42 10.0.2.43CPFS-POSIX クライアントマスターノードの IP アドレスは、Client Management node セクションにあります。
ファイルを保存して終了します。
auto_ssh.sh スクリプトを設定します。
auto_ssh.sh ファイルを作成します。
touch auto_ssh.shvi 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 { #初回接続、~/.ssh/known_hosts に公開鍵なし "Are you sure you want to continue connecting (yes/no)?" { send "yes\r" expect "password:" send "$password\r" } #~/.ssh/known_hosts にすでに公開鍵あり "password:" { send "$password\r" } "Now try logging into the machine" { #承認済み、何もしない } "already exist on the remote" { #承認済み、何もしない } } expect eofファイルを保存して終了します。
次のコマンドを実行して、auto_ssh.sh ファイルに実行権限を付与します。
chmod +x auto_ssh.sh次のコマンドを実行して、client.list ファイルにターゲット ECS インスタンスのパスワードを記録します。
PASSWD='yourpassword'説明ターゲット ECS インスタンスが異なるパスワードを使用している場合は、インスタンスごとに個別の 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 インスタンスのカーネル拡張をリモートでコンパイルします。
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"構成が完了したら、環境のカスタムイメージを作成できます。新しい ECS インスタンスを追加して CPFS ファイルシステムにアクセスするには、イメージを使用してインスタンスを作成できます。これにより、環境を再構成する必要がなくなります。カスタムイメージの作成方法の詳細については、「カスタムイメージを作成する」をご参照ください。
ステップ 3: ファイルシステムをマウントする
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、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
次のコマンドを実行して、ノードリストにターゲット 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 ファイルシステムインストールノードでカスタムマウントパスを指定することはできません。
サブディレクトリのマウントはサポートされていません。