LoginSignup
1
1

More than 3 years have passed since last update.

AWS Batchでインスタンスストレージを使う方法

Last updated at Posted at 2020-01-26

欲しいのはEBSじゃなくてエフェメラルなディスク

AWS BatchでEBSを使う方法なら、どこにでも書いてある。でもインスタンスストレージは? 2020年1月25日調べでは、どうやらどこにも書いてない。
エフェメラルなディスクが欲しいときにEBSを使うと、アホな管理の手間が発生するし、おそらくはインスタンスストレージのほうが速い。

結論

1. BatchのCompute environmentで、Instance typesにc5dなどのインスタンスストレージつきのを選ぶ

2. ジョブが走るコンテナ内で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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1