Alibaba Cloud File Storage NAS (NAS) は、Alibaba Cloud ECS インスタンス、HPC、Docker などのコンピューティングノード向けのファイルストレージサービスです。標準のファイルアクセスプロトコルを提供しているため、既存のアプリケーションを変更する必要はありません。これにより、無制限の容量とパフォーマンススケーリング、単一のネームスペース、複数パーティ共有、高信頼性、高可用性を備えた分散ファイルシステムを実現できます。
現在、Batch Compute ユーザーは、API と SDK でユーザー NAS 情報を設定することで、Alibaba Cloud NAS を使用できます。
1. 概念
セキュリティ、パフォーマンス、利便性の観点から、Batch Compute では現在、VPC 内での Alibaba Cloud NAS の使用のみが許可されています。VPC と Alibaba Cloud NAS の基本的な概念を以下に示します。
VPC: Virtual Private Cloud (VPC) は、Alibaba Cloud 上に構築およびカスタマイズされます。異なる VPC 間では完全な論理的な分離が実現されます。独自の VPC 内で、ECS、Server Load Balancer、ApsaraDB for RDS、NAS などのクラウド製品インスタンスを作成および管理できます。
ファイルシステム: ファイルシステムは、NAS インスタンスを購入するための基本単位です。ストレージ容量、価格、クォータ、マウントエントリはすべてファイルシステムに従います。詳細については、ファイルシステムの作成方法を参照してください。
マウントエントリ: マウントエントリは、VPC またはクラシックネットワーク内のファイルシステムインスタンスのアクセス先アドレスです。各マウントエントリはドメイン名にマッピングされます。「mount」コマンドを使用すると、マウントエントリドメイン名を指定して、対応する NAS ファイルシステムをローカルの場所にマウントできます。詳細については、マウントエントリの作成方法を参照してください。Batch Compute では VPC 内での NAS の使用のみが許可されているため、マウントエントリを作成する際は、マウントエントリタイプを VPC に設定する必要があります。
上記の概念は、Batch Compute で NAS を使用するために重要です。NAS および VPC インスタンスの購入および使用方法の詳細については、NAS 公式ドキュメントおよびVPC 公式ドキュメントを参照してください。
2. NAS インスタンスの使用
Batch Compute で NAS インスタンスを使用するには、次の手順に従います。
2.1. データの準備
次の例に示す VPC 名、ファイルシステム名、マウントエントリ名は参考用です。具体的な名前は、お客様の設定によって異なります。
VPC の作成: 既存の VPC から VPC を選択するか、VPC の作成と管理を参照して VPC を作成できます。ID は VPC によって自動的に生成されます。ここでは、
vpc-m5egk1jsm3qkbxxxxxxxx
と仮定します。VSwitch の作成: 既存の vSwitch から vSwitch を選択するか、vSwitch の作成と管理を参照して vSwitch を作成できます。ID は VPC によって自動的に生成されます。ここでは、
vsw-2zeue3c2rciybxxxxxxxx
と仮定します。vSwitch のネットワークセグメントは VPC のサブネットに設定することをお勧めします。NAS ファイルシステムの作成: 前述のドキュメントに従って、NAS コンソールでファイルシステムを作成します。ID は NAS によって自動的に生成されます。ここでは、
0266e49fea
と仮定します。現在、Batch Compute は NFS タイプの NAS ファイルシステムのみをサポートしています。マウントエントリの作成: マウントエントリタイプを VPC に設定し、前に作成した VPC と vSwitch を選択します。特別な要件がない場合は、デフォルトの権限グループを選択します。マウントエントリが作成された後、マウントエントリ管理ページでマウントアドレスを確認します。アドレスは通常、
0266e49fea-yio75.cn-beijing.nas.aliyuncs.com
のような形式です。
2.2. VPC を使用してクラスターを作成する
プログラムで Batch Compute クラスタノードに保存されている NAS インスタンス内のファイルにアクセスするには、Batch Compute クラスタの作成時に VpcId と CidrBlock を指定する必要があり、Batch Compute クラスタは VPC 内にある必要があります。
VpcId
は、NAS マウントエントリが配置されている VPC の ID を示します。例に示す ID は、実際の ID に置き換える必要があります。CidrBlock
は、VPC 内の Batch Compute クラスタのプライベートネットワークスコープを示します。通常は VPC のサブネットセグメントです。ネットワーク計画に基づいて適切な値を入力できます。詳細については、ネットワーク計画を参照してください。
2.2.1. Python SDK の使用
# 以下は、クラスター作成時の VPC とクラスターのネットワーク計画です。
cluster_desc['Configs']['Networks']['VPC']['VpcId'] = 'vpc-m5egk1jsm3qkbxxxxxxxx'
cluster_desc['Configs']['NetWorks']['VPC']['CidrBlock'] = '192.168.0.0/20'
// AutoJob の送信時に VPC とクラスターのネットワーク計画を指定できます。
job_desc['DAG']['Tasks']['my-task']['AutoCluster']['Configs']['Networks']['VPC']['VpcId'] = 'vpc-m5egk1jsm3qkbxxxxxxxx'
job_desc['DAG']['Tasks']['my-task']['AutoCluster']['Configs']['Networks']['VPC']['CidrBlock'] = '192.168.0.0/20'
2.2.2. Java SDK の使用
Configs configs = new Configs();
Networks networks = new Networks();
VPC vpc = new VPC();
vpc.setCidrBlock("192.168.0.0/20");
vpc.setVpcId("vpc-m5egk1jsm3qkbxxxxxxxx");
networks.setVpc(vpc);
configs.setNetworks(networks);
// クラスター作成時に NAS ファイルシステムと権限グループ情報を指定します。
ClusterDescription clusterDescription = new ClusterDescription();
clusterDescription.setConfigs(configs);
// AutoJob の送信時に NAS ファイルシステムと権限グループ情報を指定できます。
AutoCluster autoCluster = new AutoCluster();
autoCluster.setConfigs(configs);
2.3. マウントエントリの指定
Batch Compute は、マウント情報に従って、NAS マウントエントリをローカルディレクトリに自動的にマウントします。クラスター記述またはジョブ記述の Mounts.Entries で、NAS マウントエントリとローカルディレクトリのマッピングを指定する必要があります。
Source
: ソースにはプレフィックスnas://
が付き、その後に NAS マウントエントリと NAS ファイルシステムディレクトリ情報が続きます。次の点に注意してください。Batch Compute は、マウント用に複数のソースをサポートしています。ソースを区別するために、現在、NFS タイプの NAS ファイルシステムにはプレフィックス
nas://
を付ける必要があります。Windows オペレーティングシステムでは、Windows NFS クライアントの動作により、末尾に感嘆符 (!) を追加する必要があります。詳細については、Windows ECS インスタンスへのファイルシステムのマウントを参照してください。
プログラムでファイルシステムを手動でマウントできます (VPC でのクラスター作成の手順が必要です)。詳細については、手動マウントを参照してください。
Destination
は、Batch Compute クラスタのローカルディレクトリを示します。これは Batch Compute によって自動的に作成されます。このディレクトリを事前に作成する必要はありません。WriteSupport
は、書き込み操作がサポートされているかどうかを示します。このパラメータをFalse
に設定すると、Batch Compute 独自の分散キャッシュ機能を使用して NAS アクセスパフォーマンスが向上します。
2.3.1. Python SDK の使用
# クラスターレベルのマウント
# Linux の場合
cluster_desc['Configs']['Mounts']['Entries'] = {
'Source': 'nas://0266e49fea-yio75.cn-beijing.nas.aliyuncs.com:/',
'Destination': '/home/admin/mydir/',
'WriteSupport': true,
}
# Windows の場合
cluster_desc['Configs']['Mounts']['Entries'] = {
'Source': 'nas://0266e49fea-yio75.cn-beijing.nas.aliyuncs.com:/!',
'Destination': 'E:',
'WriteSupport': true,
}
// ジョブレベルのマウント
# Linux の場合
job_desc['DAG']['Tasks']['my-task']['Mounts']['Entries'] = {
'Source': 'nas://0266e49fea-yio75.cn-beijing.nas.aliyuncs.com:/',
'Destination': '/home/admin/mydir/',
'WriteSupport': true,
}
# Windows の場合
job_desc['DAG']['Tasks']['my-task']['Mounts']['Entries'] = {
'Source': 'nas://0266e49fea-yio75.cn-beijing.nas.aliyuncs.com:/!',
'Destination': 'E:',
'WriteSupport': true,
}
2.3.2. Java SDK の使用
MountEntry mountEntry = new MountEntry();
mountEntry.setSource("nas://0266e49fea-yio75.cn-beijing.nas.aliyuncs.com:/");
mountEntry.setDestination("/home/admin/mydir/");
mountEntry.setWriteSupport(true);
mounts.addEntries(mountEntry);
3. NAS マウントの注意事項
3.1. 権限グループの容量
現在、単一の NAS 権限グループは最大 300 のルールをサポートしています。Batch Compute はクラシックネットワークのみをサポートしています。1 つの VM が 1 つの権限ルールに対応します。NAS クラスタインスタンスの総数がクォータを超えないようにすることをお勧めします。超えた場合の動作は未定義です。
3.2. NAS サービスの課金
Batch Compute での NAS サービスの使用に追加料金は発生しません。NAS サービスは課金されます。NAS サービスの課金ルールと価格の詳細については、NAS の課金ルールと価格を参照してください。
3.3. クラスタマウントとジョブマウントの優先順位
ご存じのとおり、クラスター作成時とジョブ送信時の両方で、Mounts
フィールドで NAS ファイルシステムをローカルディレクトリにマウントするように指定できます。現在、Batch Compute におけるクラスタマウントとジョブマウントの優先順位は次のとおりです。
ジョブマウントタスクのマウントエントリは、クラスタマウント (AutoCluster を含む) タスクのマウントエントリを上書きしますが、クラスタマウントタスクのファイルシステムと権限グループ情報は影響を受けません。
ジョブが完了した後、クラスタマウントタスクのマウントエントリは復元されません。