【AWS】AmazonLinuxにEFSボリュームのNFSマウントを実施してみる


はじめに

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にマウントしてみる