Amazon Linux 2023 から EFS をマウントする手順(再起動後も自動マウント)
概要
Amazon Linux 2023(AL2023)から Amazon EFS をマウントし、OS再起動後も自動的にマウントされるよう /etc/fstab を設定する手順。
今回の構成例:
- OS:Amazon Linux 2023
- EFS File System ID:
fs-xxxxxxxxxxxxxxxxx - マウントポイント:
/mnt/efs - TLSによる転送中暗号化を使用
事前確認
EFSをマウントする前に、以下を確認しておく。
EFS側
対象VPC/AZにEFSのマウントターゲットが作成されていること。
EFS側のSecurity Groupで以下を許可する。
Protocol : TCP
Port : 2049
Source : EC2に設定しているSecurity Group
EC2側
EC2からEFSのマウントターゲットへ通信可能であること。
EC2側Security GroupのOutboundを制限している場合は、TCP/2049の通信を許可する。
手順
1. rootユーザーへ切り替える
sudo su -
2. amazon-efs-utilsをインストールする
Amazon EFS用のマウントヘルパーをインストールする。
dnf -y install amazon-efs-utils
インストール確認。
rpm -q amazon-efs-utils
3. マウントポイントを作成する
今回は /mnt/efs を使用する。
mkdir -p /mnt/efs
確認。
ls -ld /mnt/efs
4. /etc/fstabをバックアップする
設定変更前にバックアップを取得する。
cp -p /etc/fstab /etc/fstab.bak
確認。
ls -l /etc/fstab*
5. EFSの自動マウント設定を追加する
以下を /etc/fstab に追記する。
echo 'fs-xxxxxxxxxxxxxxxxx:/ /mnt/efs efs _netdev,tls 0 0' >> /etc/fstab
設定内容を確認する。
grep efs /etc/fstab
以下が表示されればOK。
fs-xxxxxxxxxxxxxxxxx:/ /mnt/efs efs _netdev,tls 0 0
設定内容
| 項目 | 内容 |
|---|---|
fs-xxxxxxxxxxxxxxxxx:/ |
EFS File System ID |
/mnt/efs |
マウントポイント |
efs |
amazon-efs-utilsを利用 |
_netdev |
ネットワークファイルシステムとして扱う |
tls |
TLSによる転送中暗号化 |
0 0 |
dump / fsck対象外 |
6. /etc/fstabの設定でマウントする
mount -a
エラーが表示されなければマウント成功。
7. マウント状態を確認する
df -hT | grep efs
例:
127.0.0.1:/ nfs4 8.0E 0 8.0E 0% /mnt/efs
amazon-efs-utils で tls オプションを利用している場合、127.0.0.1:/ のように表示されることがある。
別の確認方法:
mount | grep /mnt/efs
8. 書き込み確認
テストファイルを作成する。
touch /mnt/efs/efs_test.txt
確認。
ls -l /mnt/efs/efs_test.txt
問題なければ削除する。
rm -f /mnt/efs/efs_test.txt
再起動後の自動マウント確認
/etc/fstab に登録しているため、OS再起動後もEFSが自動マウントされる。
reboot
再接続後、以下を確認する。
df -hT | grep efs
以下のように /mnt/efs が表示されれば、自動マウント成功。
127.0.0.1:/ nfs4 8.0E 0 8.0E 0% /mnt/efs
fstab経由のマウントを再起動せず確認する
EFSを利用しているプロセスがないことを確認したうえで、一度アンマウントする。
umount /mnt/efs
その後、マウントポイントのみ指定してマウントする。
mount /mnt/efs
この場合、/etc/fstab の設定が使用される。
確認。
df -hT | grep efs
トラブルシューティング
unknown filesystem type 'efs'
以下のエラーが表示される場合。
mount: /mnt/efs: unknown filesystem type 'efs'.
amazon-efs-utils がインストールされていない可能性がある。
dnf -y install amazon-efs-utils
確認。
rpm -q amazon-efs-utils
その後、再度実行する。
mount -a
Connection timed out
TCP/2049の通信経路を確認する。
主な確認項目:
- EFS Mount Targetが存在するか
- EFS側Security GroupでTCP/2049を許可しているか
- EC2側Security GroupのOutboundが許可されているか
- EC2とEFS間に必要なルーティングが存在するか
- DNS名前解決が正常か
/mnt/efs is already mounted
以下のように表示される場合。
/mnt/efs is already mounted, please run 'mount' command to verify
すでにEFSがマウント済み。
以下で確認する。
df -hT | grep efs
または、
mount | grep /mnt/efs
findmnt --verifyでWarningが出る
例えば以下。
[W] unreachable source: fs-xxxxxxxxxxxxxxxxx:/: No such file or directory
[W] efs seems unsupported by the current kernel
[W] cannot detect on-disk filesystem type
0 parse errors, 0 errors, 3 warnings
EFSは通常のローカルファイルシステムではなく、amazon-efs-utils のマウントヘルパーを利用するため、findmnt が完全には判定できないことがある。
実際のマウント確認は以下で行う。
mount -a
df -hT | grep efs
最終確認コマンド
fstab 設定確認。
grep efs /etc/fstab
マウント確認。
df -hT | grep efs
詳細確認。
mount | grep /mnt/efs
書き込み確認。
touch /mnt/efs/efs_test.txt
ls -l /mnt/efs/efs_test.txt
rm -f /mnt/efs/efs_test.txt
まとめ
AL2023からEFSをマウントする場合、基本的には以下の流れ。
amazon-efs-utilsインストール
↓
マウントポイント作成
↓
/etc/fstabバックアップ
↓
EFS設定をfstabへ追加
↓
mount -a
↓
マウント確認
↓
再起動
↓
自動マウント確認
/etc/fstab の設定例:
fs-xxxxxxxxxxxxxxxxx:/ /mnt/efs efs _netdev,tls 0 0
_netdev を指定することでネットワークファイルシステムとして扱い、tls を指定することでEFSとの通信を暗号化する。