Amazon EFS ファイルシステムのマウント方法
はじめに
本記事では、Amazon EFS※1 の具体的なマウント手順についてまとめます。なお、Amazon EFS のマウントには「マウントヘルパー」の利用が推奨されており(詳細は後述)、マウントヘルパー利用においてサポートされているのは以下の Linux ディストリビューションとなります。
- Amazon Linux 2
- Amazon Linux 2017.09 以降
- Red Hat Enterprise Linux (および、その派生物 CentOS など) バージョン 7 以降
- Ubuntu 16.04 LTS 以降
その為、本記事においては上記 Linux ディストリビューションにおけるマウント手順を記載いたします。
EFSファイルシステムをマウントするツール:マウントヘルパー
EFSファイルシステムをマウントする際には、マウントヘルパーの使用が推奨されております。マウントヘルパーとは、特定タイプのファイルシステムのマウントを簡素化するプログラムです。
マウントヘルパーを使用するには
まずは、amazon-efs-utils というパッケージをインストールする必要があります。利用しているディストリビューション毎にサポートされているパッケージタイプは異なっていることがあり、それによってパッケージのビルド方法やインストール方法にも差異が出てしまうため、その点についても記載していきます。
<Amazon Linux、もしくは Amazon Linux 2 の場合>
Amazon Linux や Amazon Linux 2 を使用している場合は、yumコマンドを実行するだけでパッケージのインストールは完了です。
- amazon-efs-utils パッケージをインストールします。
$ sudo yum install -y amazon-efs-utils
<Red Hat Enterprise Linux や CentOS の場合>
RPM パッケージをサポートしているOSとなります。Amazon Linux や Amazon Linux 2 以外の Linux ディストリビューションでは、おおまかな手順として、GitHub※2 から amazon-efs-utils パッケージを入手し、ビルド、およびインストールを行うことができます。
- Git をインストールします。(※既にインストール済みであれば不要)
$ sudo yum -y install git - GitHub の amazon-efs-utils ツールを任意のディレクトリにクローンします。
$ git clone https://github.com/aws/efs-utils - GitHub からクローンされた amazon-efs-utils パッケージのディレクトリに移動します。
$ cd [ツールをクローンした任意のディレクトリ]/efs-utils - rpm ビルダーパッケージをインストールします。(※既にインストール済みであれば不要)
$ sudo yum -y install rpm-build - パッケージをビルドします。
$ sudo make rpm - amazon-efs-utils パッケージをインストールします。
$ sudo yum -y install ./build/amazon-efs-utils*rpm
<Ubuntu の場合>
DEB パッケージをサポートしているOSとなります。こちらも同様に GitHub から amazon-efs-utils パッケージを入手し、ビルド、およびインストールを行う、という手順となります。なお、手順前半の amazon-efs-utils のクローン作製までは上記 RPM パッケージに記載した手順(1.~3.)と同一のため、ここで記載する手順はその続きからとなります。
- binutils パッケージ、DEB パッケージのビルドの依存関係をインストールします。
$ sudo apt-get -y install binutils - パッケージをビルドします。
$ ./build-deb.sh - パッケージをインストールします。
$ sudo apt-get -y install ./build/amazon-efs-utils*deb
EFSファイルシステムをマウントする手順
いよいよマウント手順に入っていきます。とは言え、マウントヘルパーがあればマウント自体はコマンド一つで行うことができます。そのため、マウントヘルパーを使用しない場合のマウント方法についても着目していきます。
マウントヘルパーを使用する
マウントヘルパーを使用したマウント方法は以下となります。
- マウントしたいディレクトリを作成します。(※既に作成済みの場合は不要)
$ sudo mkdir [マウントしたいディレクトリ] - 以下のコマンドでマウントを行います。
$ sudo mount -t efs [ファイルシステムID]:/ [マウントしたいディレクトリ]
マウントヘルパーを使用しない
マウントヘルパーを使用しないでEFSファイルシステムをマウントする場合、Network File System (NFS) クライアントを使用します。なお、EFSファイルシステムのマウントにおいてサポートされている NFS のバージョンは 4.0 と 4.1 (NFSv4) となるため注意が必要です。
- NFS クライアントをインストールします。(※既にインストール済みであれば不要)
<Amazon Linux や Red Hat Linux の場合>
$ sudo yum -y install nfs-utils
<Ubuntu の場合>
$ sudo apt-get -y install nfs-common - NFS サービスを起動します。(※既に起動済みであれば不要)
$ sudo service nfs start - 以下のコマンドでマウントを行います。
$ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport [ファイルシステムのDNS名 or マウントターゲットIPアドレス]:/ [マウントしたいディレクトリ]※ここで指定するマウントオプションは推奨されているオプションとなります。マウントヘルパーを使用した場合には、これらのマウントオプションが自動的に使用されます。また、指定すべきファイルシステムのDNS名やマウントターゲットIPアドレスの確認方法は、それぞれのリンク先を参照願います。
まとめ
Amazon EFS ファイルシステムのマウント方法についてまとめました。マウント自体はmount コマンドのみで行うことができ、その前準備に関してもコマンドを数回程実行するだけなので設定自体は簡単です。また、Amazon EFS はマネージドサービスであるためサーバーの管理や複雑なファイルシステム設定の保守を行う必要がありません。Amazon EC2 における共有ファイルシステムを容易に構築、利用できることが、Amazon EFS を利用する上での大きな魅力でしょう。
<注釈>
※1 … Amazon EFS とは
Amazon Elastic File System (Amazon EFS) は、AWS が提供する共有ファイルストレージサービスです。Linux等のOSでマウント可能なファイルシステムを提供します。特徴としては、AWS 上、もしくはオンプレミスの環境で使用できるため、複数のEC2インスタンスやオンプレミスのサーバと同時にアクセスすることができ、ファイルの追加や削除に応じた拡張/縮小がアプリケーションを停止させることなく自動的に行われるため、容量の管理は不要となる、といったものが挙げられます。
※2 … GitHub とは
ファイルの共有、変更履歴の管理ができる、といった Git の仕組みを利用した、世界中の人たちがプログラムコードやデザインデータなどを保存できるウェブサービスを指します。