LoginSignup
5
4

More than 1 year has passed since last update.

EFSのサブディレクトリにEC2をマウントさせる

Last updated at Posted at 2021-10-02

はじめに

EFSのサブディレクトリに対して、マウントする方法の参考記事が見当たらなかったため、手順をまとめます。
今回は、この記事を参考にEC2をFTPサーバー構築しておりますので、EC2とEFSをマウント後、ローカルからEFSに対してファイル転送が可能です。

FTPサーバーではなく、単なるEC2でもこれから説明する手順は使えます。

下図で言いますと、EFSのルートディレクトリではなく**/uploadsディレクトリを作成し、/uploads配下**に対して、EC2の/mnt/efs配下をマウントさせます。

事前準備

・EC2を事前に設置し、ssh接続できることを確認
インターネットゲートウェイやサブネットも作成済み
こちらを参考にしました
FTPサーバー構築(なくても可)

流れ

①EFSを作成
②EC2のマウントポイントの作成
③EFSのサブディレクトリ/uploadsに対してマウントさせる
④自動マウント設定

EFSを作成

AWSのEC2のコンソール画面からセキュリティーグループを以下の通り、作成します。
インバウンド設定
・TypeはNFS
・ポートは2049
・Sourceはカスタム + EC2のセキュリティーグループ

AWSのEFSのコンソール画面から、EC2と同じVPCを選択して作成します。

ネットワークタブの管理をクリックし、セキュリティーグループを先程作成したセキュリティーグループに変更します。

EC2のマウントポイントの作成

まずEC2にSSH接続します

$ ssh -i ~/.ssh/ec2-key.pem ec2-user@✕✕.✕✕✕.✕✕✕.✕✕

詳しい方法はこちら

アップデート実行

$ sudo yum update -y

Amazon EFS マウントヘルパーのインストール

$ sudo yum install -y amazon-efs-utils

EFSのマウントポイント/mnt/efsを作成

$ sudo mkdir /mnt/efs

EFSのサブディレクトリ/uploadsに対してマウントさせる

まず、マウントコマンドの説明をします。
マウントポイントにEFSのルートディレクトリ/をマウントするには以下のコマンドでできます。

# 転送時にデータの暗号化を使用する場合
$ sudo mount -t efs -o tls [File System ID]:/ [マウントポイント]

# 転送時にデータの暗号化を使用しない場合
$ sudo mount -t efs [File System ID]:/ [マウントポイント]

[File System ID]は、EFSコンソールの名前の横にありますfs-から始まるIDです

対して、EFSのルートディレクトリ/uploadsをマウントするには以下のコマンドでできます。

$ sudo mount -t efs -o tls [File System ID]:/uploads [マウントポイント]

以下の流れで進めていきます。
①親ディレクトリ/でマウントする
②サブディレクトリ/uploadsディレクトリを作成
/のマウントを解除し、efsディレクトリを削除
efsディレクトリを作成し、サブディレクトリ/uploadsでマウントする

①親ディレクトリである/に対してマウントします。

$ cd /mnt

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         482M     0  482M    0% /dev
tmpfs            492M     0  492M    0% /dev/shm
tmpfs            492M  492K  492M    1% /run
tmpfs            492M     0  492M    0% /sys/fs/cgroup
/dev/xvda1       8.0G  1.7G  6.4G   21% /
tmpfs             99M     0   99M    0% /run/user/1000

$ sudo mount -t efs -o tls fs-7f6cf55f:/ /mnt/efs

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         482M     0  482M    0% /dev
tmpfs            492M     0  492M    0% /dev/shm
tmpfs            492M  496K  492M    1% /run
tmpfs            492M     0  492M    0% /sys/fs/cgroup
/dev/xvda1       8.0G  1.7G  6.4G   21% /
tmpfs             99M     0   99M    0% /run/user/1000
127.0.0.1:/      8.0E     0  8.0E    0% /mnt/efs

127.0.0.1:/ 8.0E 0 8.0E 0% /mnt/efsの行からマウントできていることが分かります。

②サブディレクトリ/uploadsディレクトリを作成

$ cd /mnt/efs
$ sudo mkdir uploads

/のマウントを解除し、efsディレクトリを削除

$ cd /mnt
$ sudo umount -l efs
$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         482M     0  482M    0% /dev
tmpfs            492M     0  492M    0% /dev/shm
tmpfs            492M  548K  492M    1% /run
tmpfs            492M     0  492M    0% /sys/fs/cgroup
/dev/xvda1       8.0G  1.7G  6.4G   21% /
tmpfs             99M     0   99M    0% /run/user/1000
tmpfs             99M     0   99M    0% /run/user/0

$ sudo rm -r efs

efsディレクトリを作成し、サブディレクトリ/uploadsでマウントする

$ cd /mnt
$ sudo mkdir efs
$ sudo mount -t efs -o tls fs-7f6cf55f:/uploads /mnt/efs
$ df -h
ファイルシス       サイズ  使用  残り 使用% マウント位置
省略
127.0.0.1:/uploads   8.0E     0  8.0E    0% /mnt/efs

EC2の/mnt/efs配下がEFSの/uploads配下にマウントできました。

自動マウント設定

今のままだと、EC2が停止するとマウントが消されるため、自動マウント設定をします。
AmazonLinuxにEFSボリュームを自動マウントさせるためには、/etc/fstabを修正する必要がある。
まず、etc/fstabファイルをバックアップします。

$ ll /etc | grep fstab
-rw-r--r--  1 root root       91  8月 24 19:07 fstab

$ sudo cp -p /etc/fstab /etc/fstab_`date +'%Y%m%d'`

$ ll /etc | grep fstab
-rw-r--r--  1 root root       91  8月 24 19:07 fstab
-rw-r--r--  1 root root       91  8月 24 19:07 fstab_20211002

マウント設定ファイル(/etc/fstab)に以下の内容を追記します。
[アベイラビリティゾーン].[EFSのDNS Name]:/ [マウントポイント] nfs4 defaults 0 0

[EFSのDNS Name]は、EFSコンソールのアタッチをクリックすると、NFSクライアント使用記載されている赤文字部分です。
以下の場合、fs-7f6cf55f.efs.ap-northeast-1.amazonaws.comの部分です。

$ cat /etc/fstab
#
UUID=55ee5a5f-d155-47e0-9121-e6f4522cb2bf   /  xfs  defaults,noatime  1   1

$ sudo vim /etc/fstab
#
UUID=55ee5a5f-d155-47e0-9121-e6f4522cb2bf   /  xfs  defaults,noatime  1   1
fs-7f6cf55f.efs.ap-northeast-1.amazonaws.com:/uploads /mnt/efs nfs4 defaults 0 0

自動マウントできているか確認するため、再起動します。

$ sudo reboot

再度ssh接続して、マウントされていることを確認します。

$ df -Ph
省略
fs-7f6cf55f.efs.ap-northeast-1.amazonaws.com:/uploads 8.0E  0  8.0E  0% /mnt/efs

#参考
【AWS】EFSボリュームの自動マウント設定(AmazonLinux)
Amazon Elastic File System(Amazon EFS)に触ってみた

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4