この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ParallelClusterに共有ストレージをマウント
- AWS ParallelClusterはAWSがサポートする、HPCクラスターの管理ツールです。
- PallelClusterの共有ストレージとしてEFSを利用できます。
- EFSを接続したParallelClusterの設定ファイルを紹介します。
何がうれしいのか
ParallelClusterのマスターノード(ジョブスケジューラ)がNFSサーバになっており、コンピュートノード(演算サーバ)にマウントされます。共有ストレージとして大量のデータの保存や、高頻度、高スループットのアクセスを求めるとマスターノードがボトルネックになります。それを解決するには専用の共有ストレージが必要になります。
マウントできる共有ストレージの種類
ParallelClusterにマウントできる共有ストレージは2種類あります。 当記事ではEFSの設定について触れます。
- EFS: フルマネージドのNFSファイルシステムのサービス
- FSx for Lustre: フルマネージドのHPC向け高性能共有ストレージサービス
共有ストレージの使い分け
EFS利用時の特徴・注意点
EFS詳細
下記のブログにまとまっておりますのでご覧ください。
EFSのマウント方法
ParallelClusterへEFSのマウント方法も2種類あります。 当記事では2の方法でEFSをマウントする設定について触れます。
- ParallelCluster作成時にEFSを新規作成し同時にマウント
- 事前にEFSを作成しておき、ParallelCluster作成時に既存EFSをマウント
1. EFS新規作成と同時にマウント
ParallelClusterのクラスター削除コマンド(pcluster delete)でEFSも同時に削除されます。クラスターの作り直す際には注意が必要です。pclusterコマンドからクラスターとして管理のEFSになります。
2. 既存のEFSマウント
EFSは単体で管理されるため、クラスター削除コマンドでEFSも削除されることはありません。
設定例
EFS作成
EFSをそのまま作るだけで大丈夫です。
ParallelClusterを起動するVPCを選択します。
完成です。
ファイルシステムIDをParallelClusterの設定ファイルで使います。例ではバーストモード設定ですがワークロードに応じて、プロビジョンド・スループットもご検討ください。
ParallelCluster設定ポイント
global
セクション
EFS設定を有効化にします。個人的にはここを書き忘れてマウントされなかったをよくやってます。
efs_settings = cluster_efs
efs
セクション
efs_fs_id
は作成EFSのID部分をそのまま入力shared_dir
はマスターノードと、コンピュートノードにEFSがマウントされるパスです- マスターノードとコンピュートノードで別のパスにマウントすることはできません
mnt/efs
の表記で、/mnt/efs
にマウントされます
[efs cluster_efs]
# EFS Setting
efs_fs_id = fs-1a02143b
shared_dir = mnt/efs
設定ファイル全文
構築する環境に合わせて適時変更してください。とくに下記の項目は環境に依存します。
- key_name
- s3_read_resource
- post_install
- vpc_id
- master_subnet_id
- compute_subnet_id
- efs_fs_id
efs-config
[aws]
aws_region_name = ap-northeast-1
[global]
cluster_template = default
update_check = true
sanity_check = true
[aliases]
ssh = ssh {CFN_USER}@{MASTER_IP} {ARGS}
[cluster default]
key_name = sandbox-key
base_os = alinux2
scheduler = slurm
vpc_settings = custom
# Instance Type
master_instance_type = m6g.large
compute_instance_type = c6g.xlarge
# Use Spot Instance
cluster_type = spot
# Use Placemant Group
placement = compute
placement_group = DYNAMIC
# Cluster Size
maintain_initial_size = false
initial_queue_size = 0
max_queue_size = 4
# Enable CloudWatchLogs
cw_log_settings = cluster_log
# Enable EFS
efs_settings = cluster_efs
# S3 Setting
s3_read_resource = arn:aws:s3:::test-parallelcluster-ohmura/parallelcluster/*
post_install = s3://test-parallelcluster-ohmura/parallelcluster/postinstall.sh
# Tag
tags = { "Name" : "TestCluster" }
[vpc custom]
# VPC Setting
vpc_id = vpc-0d27a23447c01e156
master_subnet_id = subnet-07df3e71babd667be
compute_subnet_id = subnet-08b8dd5c25b414dd0
use_public_ips = true
[efs cluster_efs]
# EFS Setting
efs_fs_id = fs-1a02143b
shared_dir = mnt/efs
[cw_log cluster_log]
# CloudWatchLogs Setting
enable = true
retention_days = 30
ParallelCluster実行環境
> pcluster version
2.8.1
クラスター構築
クラスターを作成します。
> pcluster create efs-cluster -c efs-config
Beginning cluster creation for cluster: efs-cluster
Creating stack named: parallelcluster-efs-cluster
Status: parallelcluster-efs-cluster - CREATE_COMPLETE
MasterPublicIP: 18.176.30.98
ClusterUser: ec2-user
MasterPrivateIP: 10.1.11.113
マスターノードのマウント状況
マスターノードにSSH接続して確認しました。/mnt/efs
にEFSがマウントされていますね。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 484K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/nvme0n1p1 25G 5.0G 21G 20% /
/dev/nvme0n1p128 10M 3.7M 6.3M 38% /boot/efi
/dev/nvme1n1 20G 45M 19G 1% /shared
fs-1a02143b.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /mnt/efs
tmpfs 780M 0 780M 0% /run/user/1000
コンピュートノードのマウント状況
コンピュートノードは起動していないため、設定ファイルを変更し1台だけ常時起動状態にしてみましょう。
# Cluster Size
maintain_initial_size = true
initial_queue_size = 1
クラスターを更新します。tag
を設定すると差分の確認ができず更新していいのか判断を委ねられます。
> pcluster update efs-cluster -c efs-config
Validating configuration file efs-config...
Retrieving configuration from CloudFormation for cluster efs-cluster...
Found Configuration Changes:
# parameter old value new value
--- --------------------- ----------- -----------------------
[cluster default]
01 initial_queue_size - 1
02 maintain_initial_size - True
03* tags - {'Name': 'TestCluster'}
Validating configuration update...
The requested update cannot be performed. Line numbers with an asterisk indicate updates requiring additional actions. Please review the details below:
#03
Update actions are not currently supported for the 'tags' parameter
How to fix:
Restore 'tags' value to '{}'. If you need this change, please consider creating a new cluster instead of updating the existing one.
In case you want to override these checks and proceed with the update please use the --force flag. Note that the cluster could end up in an unrecoverable state.
Update aborted.
変更内容に問題はないため--force
を追加して改めてクラスターの更新をかけます。
更新してもよいか聞かれるためy
を入力します。
pcluster update efs-cluster -c efs-config --force
Validating configuration file efs-config...
Retrieving configuration from CloudFormation for cluster efs-cluster...
WARNING: Forced update applied. All safety checks will be skipped. Not all updates may be applied and your cluster may become unstable.
Found Configuration Changes:
# parameter old value new value
--- --------------------- ----------- -----------------------
[cluster default]
01 initial_queue_size - 1
02 maintain_initial_size - True
03 tags - {'Name': 'TestCluster'}
Do you want to proceed with the update? - Y/N:y
Updating: efs-cluster
Calling update_stack
Status: parallelcluster-efs-cluster - UPDATE_COMPLETE
コンピュートノードにSSH接続して確認しました。こちらも/mnt/efs
にEFSがマウントされていますね。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 476K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/nvme0n1p1 25G 5.0G 21G 20% /
/dev/nvme0n1p128 10M 3.7M 6.3M 38% /boot/efi
ip-10-1-11-113.ap-northeast-1.compute.internal:/home 25G 5.0G 21G 20% /home
ip-10-1-11-113.ap-northeast-1.compute.internal:/shared 20G 44M 19G 1% /shared
fs-1a02143b.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /mnt/efs
ip-10-1-11-113.ap-northeast-1.compute.internal:/opt/slurm 25G 5.0G 21G 20% /opt/slurm
tmpfs 783M 0 783M 0% /run/user/1000
Tips: EFSモード変更
バーストモードからスループットモードに切り替え方法
注意: 連続したモード変更はできません。24時間の空き時間が必要になります。
Q: ファイルシステムのプロビジョンドスループットはどのくらいの頻度で変更できますか?
よくある質問 - Amazon EFS | AWS
手順
対象のEFSを選択してから編集をクリック。
プロビジョニング済み にチェックをいれ、必要なスループット数を入力して変更を保存をクリック。
スループットモードが変更されました。
おわりに
先にEFSを作成してファイルシステムIDを設定ファイルに入力するだけなのでマウントは簡単ですね。
以上、コンサル部の大村@網走でした。