複数の Pod にまたがって実行される ML トレーニングジョブでは、トレーニングデータに対して単一で一貫性のあるビューが必要です。Apsara File Storage NAS (NAS) は、複数の Pod が同時にマウントできる共有ネットワークファイルシステム (NFS) を提供するため、このシナリオに適しています。このトピックでは、NAS ファイルシステムを作成し、それを Kubernetes 永続ボリューム (PV) および永続ボリューム要求 (PVC) として Container Service for Kubernetes (ACK) クラスターに登録し、Arena で使用するためのトレーニングデータを入力する手順を説明します。
事前準備
作業を開始する前に、以下の項目が満たされていることを確認してください。
実行中の ACK クラスターがあること
NAS ファイルシステムを作成し、ACK ストレージリソースを管理するための十分な権限があること
NAS ファイルシステムをマウントしてデータを入力するために使用する、ACK クラスターと同じ Virtual Private Cloud (VPC) 内に Elastic Compute Service (ECS) インスタンスがあること
注意事項
開始する前に、以下の制約を確認してください。
VPC のコロケーションが必須です。NAS ファイルシステム、そのマウントポイント、および ACK クラスターはすべて同じ VPC 内に存在する必要があります。
プロトコルタイプはマルチライターのパフォーマンスに影響します。複数の ECS インスタンスが同時に同じファイルに書き込む必要がない場合、NFSv3 はより良いパフォーマンスを提供します。エクストリーム NAS は NFSv3 のみをサポートします。
PV 容量はマッチングにのみ使用されます。PV と PVC に設定された容量値は、PVC と PV のマッチングにのみ使用され、実際に使用可能なストレージを制限するものではありません。実際のストレージ上限は、NAS ファイルシステムの仕様によって決まります。
静的 PV は `archiveOnDelete` をサポートしていません。静的 PV のリクレームポリシーを Delete に設定しても、PVC が削除されたときに PV と NAS データは削除されません。動的にプロビジョニングされた NAS ボリュームを使用している場合を除き、Retain (デフォルト) を使用してください。
ステップ 1:NAS インスタンスの作成
ACK クラスターと同じリージョンおよび VPC に、汎用 NAS ファイルシステムを作成します。
詳細な手順については、「コンソールを使用して汎用 NAS ファイルシステムを作成する」をご参照ください。
ファイルシステムを設定する際は、以下の必須値を使用してください。
| パラメーター | 必須値 |
|---|---|
| ファイルシステムタイプ | 汎用 NAS |
| リージョン | ACK クラスターと同じリージョン |
| VPC | ACK クラスターと同じ VPC |
| プロトコルタイプ | NFS |
ステップ 2:ファイルシステムを ECS インスタンスにマウント
後でトレーニングデータを入力できるように、NAS ファイルシステムを ECS インスタンスにマウントします。このステップでは、NAS コンソールのワンクリックマウント機能を使用します。他のマウント方法については、「ファイルシステムをマウントするシナリオ」をご参照ください。
NAS ファイルシステムのマウント
NAS コンソールにログインします。左側のナビゲーションウィンドウで、[ファイルシステム] > [ファイルシステムリスト] を選択します。
上部のナビゲーションバーで、ファイルシステムが存在するリソースグループとリージョンを選択します。

作成したファイルシステムを見つけ、[操作] 列の [マウント] をクリックします。
マウント機能を初めて使用する場合、NAS によって AliyunServiceRoleForNasEcsHandler サービスリンクロールを割り当てるように求められます。画面の指示に従って、権限付与を完了してください。詳細については、「NAS のサービスリンクロール」をご参照ください。
[マウント] パネルで、マウント設定を構成します。
マウントポイントを選択し、[次へ] をクリックします。
ECS インスタンスを選択し、[次へ] をクリックします。ECS インスタンスはファイルシステムと同じ VPC 内にある必要があります。リストにインスタンスが表示されない場合は、ページをリフレッシュしてもう一度試してください。> [注:] 複数の ECS インスタンスに NAS ファイルシステムを一度にマウントするには、「複数の ECS インスタンスに NFS ファイルシステムを一度にマウントする」をご参照ください。
マウントパラメーターを設定します。
パラメーター 説明 必須 デフォルト マウントパス ファイルシステムをマウントする ECS インスタンス上のローカルディレクトリです。 はい — 自動マウント 有効にすると、ECS インスタンスの再起動時にファイルシステムが自動的に再マウントされます。 いいえ 有効 プロトコルタイプ NFS プロトコルのバージョンです。汎用 NAS は NFSv3 および NFSv4 をサポートし、エクストリーム NAS は NFSv3 のみをサポートします。複数の ECS インスタンスが同時に同一ファイルへの書き込みを必要としない場合は、最適なパフォーマンスを得るために NFSv3 を使用してください。 はい — NAS ディレクトリ マウントする NAS ファイルシステム内のディレクトリです。 /を入力するとルートディレクトリ、/abcのようにサブディレクトリを指定することもできます。ディレクトリが存在しない場合は、新規ディレクトリの確認 を選択してください。その場合、新しいディレクトリの UID、GID、および POSIX 権限も設定する必要があります。いいえ /(ルート)マウントパラメーター NFS マウントフラグです。パラメーターの完全なリファレンスについては、「Linux ECS インスタンスへの NFS ファイルシステムのマウント」をご参照ください。 いいえ デフォルトのマウントパラメーター
[Complete]をクリックします。マウント操作には約 1〜2 分かかります。マウントステータスが[Mounted]と表示されたら、NAS ファイルシステムの準備が完了しています。ステータスが[Failed]と表示された場合は、内蔵のトラブルシューティングツールを使用してください。詳細については、「Linux ECS インスタンスに NFS ファイルシステムをマウントする」をご参照ください。

マウントの確認
ECS インスタンスに接続し、次のコマンドを実行してファイルシステムがアクセス可能であることを確認します。
mkdir /mnt/dir1
mkdir /mnt/dir2
touch /mnt/file1
echo 'some file content' > /mnt/file2
ls /mnt出力には dir1、dir2、file1、file2 がリストされます。

マウントの詳細を表示したり、ファイルシステムの容量を確認したりするには、mount -l または df -h を実行します。
各 NAS ファイルシステムには、ECS インスタンスに接続するためのマウントポイントが必要です。マウントポイントを追加したり、既存のマウントポイントアドレスを検索したりするには、「マウントポイントの管理」をご参照ください。マウントポイントを追加する際は、[マウントポイントタイプ] を [VPC] に設定し、ACK クラスターと同じ VPC と vSwitch を選択してください。
ステップ 3:PV と PVC の作成
ACK クラスターに NAS ファイルシステムを PV として登録し、Pod がそこからストレージを要求できるように PVC を作成します。
PV の作成
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。NAS コンソール
[クラスター] ページで、対象のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム] を選択します。
[永続ボリューム] ページで、[作成] をクリックします。ダイアログボックスでパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 必須 デフォルト 例 PV タイプ [NAS] を選択します。 はい — NAS 名前 クラスター内で一意の PV 名。 はい — pv-nas容量 PVC マッチングにのみ使用されます。実際に使用可能なストレージを制限するものではありません。実際のストレージ上限は、NAS ファイルシステムの仕様によって決まります。詳細については、「汎用 NAS ファイルシステム」および「エクストリーム NAS ファイルシステム」をご参照ください。 はい — 5 Giアクセスモード ReadWriteMany は、複数のノードが同時にボリュームを読み書き可能としてマウントできます。ReadWriteOnce は、マウントを単一のノードに制限します。 はい — ReadWriteManyCNFS の有効化 コンテナ ネットワーク ファイル システム (CNFS) を使用して、O&M の自動化、キャッシュアクセラレーション、パフォーマンスモニタリングを行うかどうか。既存の NAS ファイルシステムを CNFS で管理するには、「NAS ファイルシステムを管理するための CNFS の作成 (推奨)」をご参照ください。 いいえ 無効 無効 マウントポイントのドメイン名 CNFS が無効な場合にのみ利用可能です。NAS マウントポイントのアドレス。以前に追加したマウントポイントから選択するか、カスタムドメイン名を入力します。アドレスを検索するには、「マウントポイントの管理」をご参照ください。 はい (CNFS が無効な場合) — 0c47****-mpk25.cn-shenzhen.nas.aliyuncs.coマウントパス (詳細) マウントする NAS ファイルシステムのサブディレクトリ。エクストリーム NAS の場合、パスは /shareで始まる必要があります (例:/share/data)。ディレクトリが存在しない場合は、自動的に作成されます。いいえ /(ルート)/data回収ポリシー Retain (デフォルト):PVC が削除されても、PV と NAS データは保持され、手動でクリーンアップする必要があります。Delete: archiveOnDeleteと一緒に使用する必要があります。静的 PV はarchiveOnDeleteをサポートしていないため、このポリシーを設定しても PV とデータは削除されません。archiveOnDeleteの設定については、「動的にプロビジョニングされた NAS ボリュームの使用」をご参照ください。いいえ Retain Retainマウントオプション NFS プロトコルのバージョンとマウントフラグ。NFSv3 は、複数のクライアントが同時書き込みなしで同じデータセットから読み取る ML トレーニングワークロードで、より良いパフォーマンスを提供します。 いいえ — nolock,tcp,noresvport<br>vers=3ラベル PV にアタッチするラベル。 いいえ — pv-nas
PVが作成されると、[永続ボリューム] ページに表示されます。
PVC の作成
ナビゲーションウィンドウで、[ストレージ] > [永続ボリューム要求] を選択します。
[永続ボリューム要求] ページで、[作成] をクリックします。パラメーターを設定し、[OK] をクリックします。
パラメーター 説明 必須 デフォルト 例 PVC タイプ [NAS] を選択します。 はい — NAS 名前 クラスター内で一意の PVC 名。 はい — pvc-nas割り当てモード 上記で作成した PV にバインドするには、[既存の永続ボリュームを使用] を選択します。または、[ボリュームの作成] を選択して新しい PV をインラインでプロビジョニングします。 はい — 既存の永続ボリュームを使用 既存のボリューム 前のステップで作成した PV を選択します。 はい (既存の PV を使用する場合) — pv-nas容量 要求するストレージ容量。PVC と PV のマッチングにのみ使用され、実際に使用可能な容量を制限するものではありません。 はい — 5
PV と PVC の確認
PVC を作成した後、それが PV にバインドされていることを確認します。ACK クラスター内の任意のノードに接続し、以下を実行します。
kubectl get pvc pvc-nas出力は、PVC が Bound 状態であることを示します。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-nas Bound pv-nas 5Gi RWX 1mステータスが Pending の場合は、PVC 内の PV 名が完全に一致していること、およびアクセスモードに互換性があることを確認してください。
ステップ 4:PVC へのデータ入力
ACK クラスターは PVC を介して共有データにアクセスするため、トレーニングデータをステップ 1 で作成した NAS ファイルシステムに直接アップロードします。
ACK クラスターの任意の ECS ノードに接続するには、ワークベンチを使用します。 その他の接続メソッドについては、「ECS インスタンスへの接続メソッドの概要」をご参照ください。
NFS ファイルシステムは (ステップ 2 から)
/mntにマウントされています。トレーニングデータセットを保存するために 2 つのディレクトリを作成します。cd /mnt/ mkdir tf_data/ mkdir pytorch_data/TensorFlow MNIST データセットをダウンロードします。
cd tf_data git clone https://code.aliyun.com/xiaozhou/tensorflow-sample-code.git mv tensorflow-sample-code/data/* ./ && rm -rf tensorflow-sample-codePyTorch MNIST データセットをダウンロードします。
cd pytorch_data git clone https://code.aliyun.com/370272561/mnist-pytorch.git mv mnist-pytorch/MNIST ./ && rm -rf mnist-pytorch
これで、tf_data/ ディレクトリには TensorFlow の MNIST トレーニングデータが、pytorch_data/ ディレクトリには PyTorch の MNIST データが含まれます。どちらのディレクトリも、pvc-nas 要求をマウントするすべての Pod からアクセス可能です。
次のステップ
--dataパラメーターを使用してpvc-nasをマウントする Arena トレーニングジョブを送信します。追加のユーザーを管理するには、同じ NAS ファイルシステムの異なるサブディレクトリを指す個別の PVC を作成します。例えば、ユーザー A とユーザー B の PVC は同じ NAS ファイルシステムを指すことができますが、それぞれの作業環境を分離するために、異なるサブディレクトリを参照する必要があります。
本番ワークロード向けの NAS のパフォーマンスを向上させ、O&M を自動化するために、CNFS の有効化を検討してください。