AWS Batchでインスタンスストレージを使う方法
欲しいのはEBSじゃなくてエフェメラルなディスク
AWS BatchでEBSを使う方法なら、どこにでも書いてある。でもインスタンスストレージは? 2020年1月25日調べでは、どうやらどこにも書いてない。
エフェメラルなディスクが欲しいときにEBSを使うと、アホな管理の手間が発生するし、おそらくはインスタンスストレージのほうが速い。
結論
1. BatchのCompute environmentで、Instance typesにc5dなどのインスタンスストレージつきのを選ぶ
2. ジョブが走るコンテナ内でlsblk
する
lsblk
するc5d.4xlargeの場合、ログはこうなる:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/nvme2n1 259:0 0 372.5G 0 disk
/dev/nvme1n1 259:1 0 22G 0 disk
└─/dev/nvme1n1p1 259:5 0 22G 0 part
/dev/nvme0n1 259:2 0 8G 0 disk
├─/dev/nvme0n1p1 259:3 0 8G 0 part /etc/hosts
└─/dev/nvme0n1p128 259:4 0 1M 0 part
どう見ても/dev/nvme2n1
がインスタンスストレージ。これを直にマウントしようとしても、コンテナ内のファイルシステムからでは見つからない。ファイルシステムから見えないものが、なぜかlsblk
では見えるのだ。この盲点を発見するまで、地獄めぐりをさせられた。
3. Job definitionのLinux Parameters
でデバイスをマッピング
ホストもコンテナも、パスは/dev/nvme2n1
でOK。パーミッションは当然全部加える。privilegedもオン。
4. ジョブの最初に走るbashスクリプトの冒頭で、フォーマットしてマウント
mkfs.ext4 -E nodiscard /dev/nvme2n1
mkdir $HOME/scratch_dir
mount -o discard /dev/nvme2n1 $HOME/scratch_dir
Author And Source
この問題について(AWS Batchでインスタンスストレージを使う方法), 我々は、より多くの情報をここで見つけました https://qiita.com/hajimen/items/7e9cd43fb08e5f2d5de4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .