AWS PCS入門 最小構成の PCS クラスターで共有ストレージは存在するのか確認してみた

AWS PCS入門 最小構成の PCS クラスターで共有ストレージは存在するのか確認してみた

Clock Icon2024.11.11

AWS Parallel Computing Service(以降 AWS PCS)の最小構成でログインノードと、コンピュートノード間を共有できるストレージはあるのでしょうか?確認する機会がありましたので共有します。

PCS

確認結果

デフォルト設定ではログインノードと、コンピュートノード間で共有可能なストレージはありません。

起動テンプレートを利用して EFS などの共有ストレージをマウントする設定が必要になります。

例: EFS ファイルシステムを の共有ホームディレクトリとして使用する AWS PCS - AWS PCS

AWS PCS クラスターを作成するための前提事項

AWS PCS のドキュメントには、クラスター作成の前提条件として以下が記載されています。

  1. VPC の設定
  2. セキュリティグループの設定
  3. EFS の作成
  4. FSx for Lustre の作成

当初、FSx for Lustre はオプション扱いで共有ストレージは必須ではないと考えていました。ParallelCluster と似た感じで AWS PCS ならばログインノードの EBS がコンピュートノードへ共有されるのか疑問になりました。

検証用 PCS クラスターの構成

最小構成で PCS クラスターを作成しました。

PCS(3)

  • AMI は AWS がサンプルで用意している AMI をログインノードと、コンピュートノードで利用
    • AMI 名: aws-pcs-sample_ami-amzn2-x86_64-slurm-23.11-2024-10-21T13-53-16.112Z
    • AMI ID: ami-0236253926d9266ae
  • 起動テンプレートはセキュリティグループのみ指定
    • (おそらく)必要最低限の設定の起動テンプレートを用意

EC2___ap-northeast-1_

ジョブの実行結果はどこに保存されるのか確認してみた

コンピュートノードでジョブを実行し、実行結果はどこに保存されるのか。コンピュートノードのローカルなのか、どこかの共有ストレージなのか確認してみました。

PCS(1)

ログインノードの確認

セッションマネージャーを使用してログインノードにアクセスしました。EC2 の EBS のみがマウントされていました。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        181M     0  181M   0% /dev
tmpfs           216M     0  216M   0% /dev/shm
tmpfs           216M  432K  215M   1% /run
tmpfs           216M     0  216M   0% /sys/fs/cgroup
/dev/nvme0n1p1   24G   18G  6.9G  72% /
tmpfs            44M     0   44M   0% /run/user/0

echoで文字列を返すだけの簡単なスクリプト(test.sh)をジョブとしてサブミットして、コンピュートノードを起動させます。

$ pwd
/home/ec2-user

$ sbatch test.sh

コンピュートノードの確認

ジョブ実行後、コンピュートノードにセッションマネージャーでログインしました。ログインノードと同様、EBS のみがマウントされていました。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        181M     0  181M   0% /dev
tmpfs           216M     0  216M   0% /dev/shm
tmpfs           216M  432K  215M   1% /run
tmpfs           216M     0  216M   0% /sys/fs/cgroup
/dev/nvme0n1p1   24G   18G  6.9G  72% /
tmpfs            44M     0   44M   0% /run/user/0

Slurm のデフォルト設定だと実行したスクリプトの標準出力・標準エラー内容が保存される.outファイルは、ホームディレクトリに保存されていました。ログインノードでジョブをサブミットしたパスが/home/ec2-userだったため、コンピュートノードも同じくパスに実行結果が保存されました。とはいえど、デフォルトで利用可能なマウントされている共有ストレージはありませんでした。

$ pwd
/home/ec2-user

$ ls -l
total 4
-rw-rw-r-- 1 ec2-user ec2-user 6 Nov  9 06:33 slurm-3.out

総括

スクリプトの実行結果はコンピュートノードの EBS に保存されました。つまり、実行終了後のアイドルタイム(デフォルト 10 分)を経過するとコンピュートノードは削除されるため、EBS に保存されている実行結果も削除されます。

PCS(2)

実行結果を永続的に保存するには、以下のいずれかの方法を採用する必要があります。

  • スクリプト内で S3 などの外部ストレージにファイルを転送する
  • EFS などの外部の共有ストレージをマウントする

起動テンプレートのuserDataを使用して、EFS をマウントする方法がドキュメントに記載されています。実運用では、共有ストレージのマウントが事実上必須となります。

例: EFS ファイルシステムを の共有ホームディレクトリとして使用する AWS PCS - AWS PCS

おわりに

AWS PCS では起動テンプレートのカスタマイズが必須スキルであることを学びました。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.