AWSで複数のEC2でディスクを共有し、プロジェクトファイルのコピーの無駄を省こうといろいろ試行したのだが、AWSのEBSはどうも複数のEC2にアタッチメントをすることができないらしい。これは初めて知った。
その代わりに、複数のEC2インスタンスで同じファイルを参照するためにはいくつかの方法がある。 S3を使ってSynchronizeする方法もあるが、EFS(Elastic File System)を試してみることにした。
EFSは、EBSと異なり複数のインスタンスでマウントすることができる。 これにより、EFS上にLLVMなどのファイルを配置しておき、ビルドの時はビルドサーバを立ち上げたうえで共有ファイルシステムをアタッチし、ファイルにアクセスすることでS3を介した転送に必要なファイルアクセスを削減する。
とりあえずは、EFSを作成した。EFSを使用するEC2インスタンスとは、同じセキュリティグループを設定する必要があるらしい。 また、セキュリティグループの設定で2049番のポート(つまりNFSのポート)を開けておく必要があった。
これをEC2インスタンスからマウントするためには、efsのツールセットをインストールした上でmount
コマンドを試す。
sudo yum install -y amazon-efs-utils
sudo apt-get install nfs-common
sudo mkdir efs sudo mount -t efs fs-[efsのファイルシステムID]:/ efs
これで、マウントできた。