Alibaba Cloud ファイルストレージ (NAS) は、Alibaba Cloud ECS インスタンス、ハイパフォーマンスコンピューティング (HPC)、Docker などのコンピューティングノード向けのファイルストレージサービスです。NAS は、標準のファイルアクセスプロトコルを提供します。この分散ファイルシステムは、無制限の容量とパフォーマンスのスケーラビリティ、単一の名前空間、複数共有のサポート、高信頼性、高可用性を特長としています。既存のアプリケーションを変更することなく NAS を使用できます。BatchCompute ユーザーは、API またはソフトウェア開発キット (SDK) で関連情報を設定することで NAS を使用できます。
1. 基本概念
セキュリティ、パフォーマンス、使いやすさの観点から、BatchCompute は Virtual Private Cloud (VPC) 内でのみ NAS をサポートします。以下は、VPC と NAS に関連する重要な概念です。
Virtual Private Cloud (VPC): Alibaba Cloud 上に作成するカスタムプライベートネットワークです。VPC はレイヤー 2 で互いに論理的に分離されています。VPC 内では、ECS、Server Load Balancer、RDS、NAS などのクラウド製品インスタンスを作成および管理できます。
ファイルシステム: ファイルシステムは NAS の基本的なリソース単位です。ストレージ容量、価格、クォータ制限、マウントターゲットはすべてファイルシステムに関連付けられています。詳細については、「ファイルシステムの作成方法」をご参照ください。
マウントターゲット: マウントターゲットは、VPC またはクラシックネットワーク内のファイルシステムへのアクセスエンドポイントです。各マウントターゲットはドメイン名に対応します。NAS ファイルシステムをマウントするには、マウントターゲットのドメイン名を指定する必要があります。詳細については、「マウントターゲットの作成方法」をご参照ください。BatchCompute は VPC 内でのみ NAS をサポートするため、マウントターゲットを作成する際は、マウントターゲットタイプを VPC に設定する必要があります。
これら 3 つの概念は、BatchCompute で NAS を使用する際に非常に重要です。NAS または VPC の購入と使用に関する詳細については、「NAS ドキュメント」および「VPC ドキュメント」をご参照ください。
2. NAS の使用
BatchCompute で NAS を使用するには、次の手順に従います。
2.1. データ準備
以下の例で使用されている VPC、ファイルシステム、マウントターゲットの名前は、説明のみを目的としています。実際の名前は設定によって異なります。
VPC の作成: 既存の VPC を使用するか、新しい VPC を作成できます。詳細については、「VPC の作成」をご参照ください。システムは自動的に VPC ID (例:
vpc-m5egk1jsm3qkbxxxxxxxx) を生成します。vSwitch の作成: 既存の vSwitch を使用するか、新しい vSwitch を作成できます。詳細については、「vSwitch の作成」をご参照ください。システムは自動的に vSwitch ID (例:
vsw-2zeue3c2rciybxxxxxxxx) を生成します。vSwitch の CIDR ブロックは、VPC の CIDR ブロックのサブネットとして設定する必要があります。NAS ファイルシステムの作成: NAS コンソールで、ドキュメントの説明に従ってファイルシステムを作成します。システムは自動的にファイルシステム ID (例:
0266e49fea) を生成します。BatchCompute はネットワークファイルシステム (NFS) のみサポートします。マウントターゲットの作成: マウントターゲットタイプを VPC に設定し、作成した VPC と vSwitch を選択します。特別な要件がない限り、デフォルトの権限グループを使用できます。マウントターゲットが作成されると、マウントターゲット管理ページでマウントパスを確認できます。マウントパスは
0266e49fea-yio75.cn-beijing.nas.aliyuncs.comのようになります。
2.2. VPC 内でのクラスターの作成
アプリケーションが BatchCompute クラスターノードから NAS に保存されているファイルにアクセスできるようにするには、BatchCompute クラスターを作成する際に VpcId と CidrBlock の両方を指定する必要があります。この操作により、クラスターが VPC 内に配置されます。
VpcId: NAS マウントターゲットが存在する VPC の ID です。例の ID を実際の VPC ID に置き換えてください。CidrBlock: VPC 内の BatchCompute クラスター用のプライベート IP アドレス範囲です。これは、VPC の CIDR ブロックのサブネットでなければなりません。ネットワーク計画に合わせた値を入力してください。詳細については、「CIDR ブロックの計画」をご参照ください。
2.2.1. Python SDK の使用
# クラスター作成時に VPC と CIDR ブロックを指定します
cluster_desc['Configs']['Networks']['VPC']['VpcId'] = 'vpc-m5egk1jsm3qkbxxxxxxxx'
cluster_desc['Configs']['Networks']['VPC']['CidrBlock'] = '192.168.0.0/20'
# AutoJob の送信時にも VPC と CIDR ブロックを指定できます
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);// クラスター作成時に、VPC 情報を指定します
ClusterDescription clusterDescription = new ClusterDescription();
clusterDescription.setConfigs(configs);
// AutoJob の送信時にも、VPC 情報を指定できます
AutoCluster autoCluster = new AutoCluster();
autoCluster.setConfigs(configs);2.3. マウントターゲットの指定
BatchCompute は、設定に基づいて NAS マウントターゲットをローカルディレクトリに自動的にマウントします。クラスターまたはジョブの定義の Mounts.Entries セクションで、NAS マウントターゲットとローカルディレクトリ間のマッピングを指定する必要があります。
Source: ソースパス。パスにはプレフィックスnas://を付け、その後に NAS マウントターゲットとファイルシステムのディレクトリパスを続ける必要があります。次の点にご注意ください。BatchCompute は複数のマウントソースをサポートします。NAS NFS ファイルシステムを他の種類のファイルシステムと区別するには、ソースパスにプレフィックス
nas://を付ける必要があります。Windows マウントの場合、Windows NFS クライアントの動作により、パスの末尾に感嘆符 (!) を追加する必要があります。詳細については、「Windows マウントに関する考慮事項」をご参照ください。
アプリケーションでファイルシステムを手動でマウントすることもできます。これを行うには、前のセクションで説明したように、クラスターを VPC 内に配置する必要があります。詳細については、「手動マウント」をご参照ください。
Destination: BatchCompute クラスターノード上のローカルディレクトリパスです。このディレクトリを事前に作成する必要はありません。BatchCompute が自動的に作成します。WriteSupport: 書き込みアクセスを有効にするかどうかを指定します。このパラメーターをFalseに設定すると、BatchCompute は独自の分散キャッシュを使用して 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 のルールをサポートします。BatchCompute が VPC 内で NAS を使用する場合、各クラスターインスタンスは権限グループのルールを 1 つ使用します。そのため、同時に NAS を使用するクラスターインスタンスの総数は 300 を超えることはできません。この制限を超えると、未定義の動作が発生する可能性があります。
3.2. NAS の課金
BatchCompute での NAS の使用に追加料金はかかりません。NAS の使用料金は別途請求されます。価格の詳細については、「NAS の価格」をご参照ください。
3.3. クラスターマウントとジョブマウントの優先度
クラスターの作成時またはジョブの送信時に、Mounts フィールドで NAS マウントを指定できます。BatchCompute は次の優先度ルールを適用します。
ジョブ内のマウントエントリは、クラスター (AutoCluster を含む) 内のマウントエントリを上書きしますが、クラスターマウントのファイルシステムまたは権限グループの設定には影響しません。
ジョブが終了した後、クラスターレベルのマウントエントリは復元されません。