はじめに
AmazonLinuxにEFSのNFSマウントを実施する手順をまとめたいと思います。
今回はEC2インスタンス2台に同じEFSをマウントして、ファイルを共有できるか確認するという内容になります。
そもそもEFSとは?
「Amazon Elastic File System」の略。
AWSクラウドサービスおよびオンプレミスリソースで使用するためのNFSファイルシステム
特徴
- NFSサーバ(EFS)自体はAWSにて管理
- 高い可用性と耐久性を備えている
基盤環境
項目 | 説明 |
---|---|
OS | Amazon Linux 2 AMI (HVM), SSD Volume Type |
Size | t2.micro |
※AmazonLinuxは作成直後の状態になります。
構成
構成表
項目 | 名前 | 備考 |
---|---|---|
VPC | efs-test | - |
セキュリティグループ | efs-security | - |
サブネット#1 | efs-public-1a | AZ(ap-norheast-1a) |
サブネット#2 | efs-public-1c | AZ(ap-norheast-1c) |
EC2#1 | efs-test01 | - |
EC2#2 | efs-test02 | - |
EFS | test-efs | - |
※サブネット2つにつきましては、パブリックIPへSSH接続できるように設定しています。
手順
※VPCについては、セキュリティグループの説明以外省略します。
EFS作成
①EFSを開く
AWSマネジメントコンソールよりEFSを開く。
②ファイルシステムの作成
「ファイルシステムの作成」をクリック。
③ネットワークアクセスの設定
以下のように設定
- VPC
項目 | 名前 | 備考 |
---|---|---|
VPC | efs-test | - |
- マウントターゲットの設定
チェック | アベイラビリティーゾーン | サブネット | IPアドレス | セキュリティグループ |
---|---|---|---|---|
☑ | ap-northeast-1a | efs-public-1a | 自動 | efs-security |
☑ | ap-northeast-1c | efs-public-1c | 自動 | efs-security |
設定後、次のステップをクリック
④タグ設定
下記のようにタグ設定を実施
キー | 値 |
---|---|
Name | test-efs |
他の設定はデフォルトのままで、次のステップをクリック
⑤内容確認
内容確認し、ファイルシステムの作成をクリック。
⑥ファイルシステム作成
ファイルシステム作成が完了すると、下記のようになる。
※マウントターゲットの状態が「利用可能」
セキュリティグループ
セキュリティグループ(efs-security)に**NFS(0.0.0.0/0)**を追加。
※セキュリティグループはVPCダッシュボードから設定可能
※設定前の状態では、SSH/HTTP/HTTPSをフルオープン(0.0.0.0/0)状態にしています。
EC2設定
EC2インスタンス2台(efs-test01/efs-test02)に同様の設定を実施します。
①rootへスイッチ
sudo su
②ディスク確認
df -Ph
実行例
[root@ip-10-0-0-191 ec2-user]# df -Ph
Filesystem Size Used Avail Use% Mounted on
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 400K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.3G 6.8G 16% /
tmpfs 99M 0 99M 0% /run/user/1000
[root@ip-10-0-0-191 ec2-user]#
③amazon-efs-utilsパッケージインストール
yum -y install amazon-efs-utils
④EFSマウント
mkdir マウントしたいディレクトリ
mount -t efs <ファイルシステムID>:/ <マウントしたいディレクトリ>
実行例
mkdir /test
mount -t efs fs-ecfdfecd:/ /test
※ファイルシステムIDはこちらの部分になります。
(EFSダッシュボードのファイルシステム一覧から確認できます。)
⑤EFSマウント確認
df -Ph
実行例
[root@ip-10-0-0-191 ~]# df -Ph
Filesystem Size Used Avail Use% Mounted on
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 404K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.3G 6.8G 16% /
tmpfs 99M 0 99M 0% /run/user/1000
fs-ecfdfecd.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /test
[root@ip-10-0-0-191 ~]#
確認
EC2インスタンス2台(efs-test01/efs-test02)にてファイルが共有できるか確認します。
※今回の確認手順では、分かりやすくするためにOSにホスト名を付与しています。
①マウント確認
2台とも「/test」にボリュームがマウントされていることを確認。
- efs-test01
[root@efs-test01 ~]# df -Ph
Filesystem Size Used Avail Use% Mounted on
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 464K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.3G 6.8G 16% /
fs-ecfdfecd.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /test ← これ
tmpfs 99M 0 99M 0% /run/user/0
tmpfs 99M 0 99M 0% /run/user/1000
[root@efs-test01 ~]#
- efs-test02
[root@efs-test02 ~]# df -Ph
Filesystem Size Used Avail Use% Mounted on
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 464K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.3G 6.8G 16% /
tmpfs 99M 0 99M 0% /run/user/0
fs-ecfdfecd.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /test
tmpfs 99M 0 99M 0% /run/user/1000
[root@efs-test02 ~]#
②efs-test01にてファイル作成
efs-test01より/text
へファイルの作成を実施する。
ファイル作成の流れ
①test.txt
作成
②test.txt
に「test」と書き込み
③test.txt
の表示
コマンド
touch /test/test.txt
echo test > /test/test.txt
cat /test/test.txt
実行例
[root@efs-test01 ~]# touch /test/test.txt
[root@efs-test01 ~]# echo test > /test/test.txt
[root@efs-test01 ~]# cat /test/test.txt
test
[root@efs-test01 ~]#
③efs-test02にてファイル存在確認/ファイル削除
ファイル存在確認
/test
内にefs-test01にて作成したファイルが存在することを確認。
ll /test
cat /test/test.txt
実行例
[root@efs-test02 ~]# ll /test
total 4
-rw-r--r-- 1 root root 5 Jun 30 14:26 test.txt
[root@efs-test02 ~]#
[root@efs-test02 ~]# cat /test/test.txt
test
[root@efs-test02 ~]#
ファイル削除
test.txt
を削除する。
rm -f /test/test.txt
実行例
[root@efs-test02 ~]# rm -f /test/test.txt
[root@efs-test02 ~]# ll /test
total 0
[root@efs-test02 ~]#
④efs-test01にてファイル存在確認
test.txt
が/test
より消えているか確認する。
ll /test
実行例
[root@efs-test01 ~]# ll /test
total 0
[root@efs-test01 ~]#
まとめ
- AmazonLinuxにEFSボリュームをNFSマウントできる
- EFSボリュームは複数のEC2インスタンスで共有できる。
参考
Amazon EFS入門 S3、EBSとの違いと使い方
Amazon Linux で amazon-efs-utils パッケージをインストールする
AWS EFS をEC2にマウントしてみる