ドキュメント等からわかったこと
mount target
- アベイラビリティゾーン毎にmount targetが作成される
- mount targetはアベイラビリティゾーン毎に1つだけ
- デフォルトはすべてのアベイラビリティゾーンに作成するが選択することもできる
- mount targetを作成するサブネットは選択できる
- mount targetのIPアドレスは指定することもできる
- mount targetには最低1つセキュリティグループを関連付ける必要がある
- mount targetに関連付けられるセキュリティグループは5つまで
- File systemの作成後にmount targetの削除、再作成が可能
ネットワーク
- TCP 2049番ポートを使うのでセキュリティグループで許可する必要がある
- EC2に関連付けているセキュリティグループはOutboundを許可する
- mount targetに関連付けているセキュリティグループはInboundを許可する
- mount targetとは別サブネットのEC2からFile systemをマウントすることができる
- Network ACLでTCP 2049番ポートの通信が制限されていないかに注意 (NACLはステートレスなので戻りの通信も)
- mount targetはPublic IPを持てない
- Direct Connect, VPNやVPCピアリング等のVPCの外からのマウントはできない
NFS
- NFSv4.0/NFSv4.1に対応しているが、NFSv4.1を推奨
- Amazon Linux AMI 2016.03.0 ならNFSクライアント(nfs−utils)がインストール済みなので、改めてのインストールは不要
$ cat /etc/system-release
Amazon Linux AMI release 2016.03
$ sudo yum -y install nfs-utils
読み込んだプラグイン:priorities, update-motd, upgrade-helper
amzn-main/latest | 2.1 kB 00:00
amzn-updates/latest | 2.3 kB 00:00
パッケージ 1:nfs-utils-1.3.0-0.21.amzn1.x86_64 はインストール済みか最新バージョンです
何もしません
- File systemはDNS名でもIPアドレスでもマウント可能
- DNS名を使うメリットは次の2つ
- DNS名は変わらないため、mount targetを削除しても同じアベイラビリティゾーンで再作成すれば、そのままマウントできる
- DNS名はマネジメントコンソールやスクリプトで生成することができ、これを使うことで、間違ったアベイラビリィゾーンでマウントすること(EC2とmount targetが異なるアベイラビリティゾーンになること)を防ぐことができる(IPアドレスだとパッと見でどのアベイラビリティゾーンなのかがわかりにくいので間違いやすいのかも)
- VPCのDNS hostnamesを無効にしているなど名前が引けないような環境ではIPアドレスでマウントする
- DNS名を使うメリットは次の2つ
マウント手順
※ North Virginiaリージョン、AMI release 2016.03 を使用
- 下ごしらえ
$ REGION=us-east-1
$ AZ=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
$ EFS_FSID=fs-xxxxxxxx
$ MOUNT_POINT="/mnt/efs/${EFS_FSID}/${AZ}"
- mount targetに疎通確認
$ sudo traceroute --tcp -p 2049 ${AZ}.${EFS_FSID}.efs.${REGION}.amazonaws.com
- マウントポイント作成
$ sudo mkdir -p ${MOUNT_POINT}
- マウント
$ sudo cp -pi /etc/fstab /etc/fstab.$(date "+%Y%m%d")
$ echo "${AZ}.${EFS_FSID}.efs.${REGION}.amazonaws.com:/ ${MOUNT_POINT} nfs4 defaults" | sudo tee -a /etc/fstab
$ sudo mount ${MOUNT_POINT}
- おまけ
容量8エクサバイト!?
$ df -Ph ${MOUNT_POINT}
ファイルシス サイズ 使用 残り 使用% マウント位置
us-east-1b.fs-xxxxxxxxx.efs.us-east-1.amazonaws.com:/ 8.0E 0 8.0E 0% /mnt/efs/fs-xxxxxxxx/us-east-1b
参考
- https://docs.aws.amazon.com/ja_jp/efs/latest/ug/security-considerations.html#network-access
- https://docs.aws.amazon.com/ja_jp/efs/latest/ug/mounting-fs.html
- https://docs.aws.amazon.com/ja_jp/efs/latest/ug/mounting-fs-mount-cmd-dns-name.html
- https://docs.aws.amazon.com/ja_jp/efs/latest/ug/mounting-fs-mount-cmd-ip-addr.html
- https://docs.aws.amazon.com/ja_jp/efs/latest/ug/mount-fs-auto-mount-onreboot.html