はじめに
東京リージョンでAmazon Elastic File System (EFS) が利用可能になったので試してみました。
やったこと
- 単体で起動しているWEBサーバ(EC2)のコンテンツ部分をEFSに変更した。
- 本番環境では2台間でのコンテンツの同期をrsyncで実施してるので、EFSに置き換えたい。
参考
- https://s3-ap-northeast-1.amazonaws.com/20180717efs-update/20180704_AWS-BlackBelt_AmazonEFS.pdf
- EFS ファイルシステムをマウントする - Amazon Elastic File System
環境
作業
NFS クライアントのインストール
$ sudo yum install -y amazon-efs-utils 読み込んだプラグイン:etckeeper, langpacks, priorities, update-motd amzn2-core | 2.4 kB 00:00:00 epel/x86_64/metalink | 7.6 kB 00:00:00 141 packages excluded due to repository priority protections 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ amazon-efs-utils.noarch 0:1.2-1.amzn2 を インストール --> 依存性の処理をしています: stunnel >= 4.56 のパッケージ: amazon-efs-utils-1.2-1.amzn2.noarch --> トランザクションの確認を実行しています。 ---> パッケージ stunnel.x86_64 0:4.56-6.amzn2.0.1 を インストール --> 依存性解決を終了しました。 依存性を解決しました ======================================================================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ======================================================================================================================================================================== インストール中: amazon-efs-utils noarch 1.2-1.amzn2 amzn2-core 13 k 依存性関連でのインストールをします: stunnel x86_64 4.56-6.amzn2.0.1 amzn2-core 149 k トランザクションの要約 ======================================================================================================================================================================== インストール 1 パッケージ (+1 個の依存関係のパッケージ) 総ダウンロード容量: 162 k インストール容量: 338 k Downloading packages: (1/2): stunnel-4.56-6.amzn2.0.1.x86_64.rpm | 149 kB 00:00:00 (2/2): amazon-efs-utils-1.2-1.amzn2.noarch.rpm | 13 kB 00:00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 合計 908 kB/s | 162 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction etckeeper: pre transaction commit インストール中 : stunnel-4.56-6.amzn2.0.1.x86_64 1/2 インストール中 : amazon-efs-utils-1.2-1.amzn2.noarch 2/2 etckeeper: post transaction commit 検証中 : amazon-efs-utils-1.2-1.amzn2.noarch 1/2 検証中 : stunnel-4.56-6.amzn2.0.1.x86_64 2/2 インストール: amazon-efs-utils.noarch 0:1.2-1.amzn2 依存性関連をインストールしました: stunnel.x86_64 0:4.56-6.amzn2.0.1 完了しました!
NFS用ディレクトリの作成
# mkdir /var/www/html_efs
マウント
マウント前
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 983M 0 983M 0% /dev tmpfs 998M 0 998M 0% /dev/shm tmpfs 998M 109M 890M 11% /run tmpfs 998M 0 998M 0% /sys/fs/cgroup /dev/xvda1 30G 5.4G 25G 18% / tmpfs 200M 0 200M 0% /run/user/1000 tmpfs 200M 0 200M 0% /run/user/1025
# mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-******.efs.ap-northeast-1.amazonaws.com:/ /var/www/html_efs
マウント後
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 983M 0 983M 0% /dev tmpfs 998M 0 998M 0% /dev/shm tmpfs 998M 109M 890M 11% /run tmpfs 998M 0 998M 0% /sys/fs/cgroup /dev/xvda1 30G 5.4G 25G 18% / tmpfs 200M 0 200M 0% /run/user/1000 tmpfs 200M 0 200M 0% /run/user/1025 fs-******.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /var/www/html_efs
コンテンツのコピー
サイズ
# du -shb /var/www/html 737505878 /var/www/html
コピー
# time cp -pr /var/www/html/* /var/www/html_efs/. real 9m8.649s user 0m0.130s sys 0m2.991s
転送速度
約 1,345,813byte/s
メトリック
ClientConnections
ファイルシステムへのクライアント接続の数。
DataReadIOBytes / DataWriteIOBytes
各ファイルシステムの読み込み/書き込みオペレーションのバイト数。
MetadataIOBytes
各メタデータオペレーションのバイト数。
ファイルサイズ(du -sh)など確認などメタデータを参照した時に上がる。
TotalIOBytes
読み込みデータ、書き込みデータ、メタデータオペレーションを含む、各ファイルシステムオペレーションのバイト数。
PercentIOLimit
ファイルシステムが汎用パフォーマンス モードの I/O 制限にどれだけ近づいているか。
このメトリクスが 100% になっていることが多い場合、最大 I/O パフォーマンスモードを使用したファイルシステムにアプリケーションを移行することを検討する必要あり。
BurstCreditBalance
ファイルシステムのバーストクレジットの数。
- ファイルシステムのサイズによって決定されるベースラインレートで時間の経過とともにクレジットを取得し、データを読み書きするたびにクレジットを使用
- ベースラインレートは、ストレージの 1 TiB あたり 50 MiB/秒です (同様に、ストレージの 1 GiB あたり 50 KiB/秒)
- 新しく作成されたファイルシステムは、最初のクレジットバランスが 2.1 TiB から始まり、100 MiB/秒で連続して実行するのに十分な大きさになるまで (つまり、2 TiB)、100 MiB/秒のバーストレートでデータを追加
PermittedThroughput
ファイルシステムのサイズと BurstCreditBalance における、ファイルシステムで許可されるスループットの最大容量。
- サイズに関係なく、すべてのファイルシステムは、100 MiB/秒のスループットまでバーストすることができる
- 1 TiB を超えるものは、ファイルシステムに保存されたデータの 1 TiB あたり 100 MiB/秒までバーストすることがでる
- Amazon EC2 インスタンスあたりの最大スループットは 250 MB/秒
- Amazon EFS ファイルシステムのデフォルトスループット制限は、接続されているすべてのクライアントに対して 3 GB/秒
感想
- NFS作成らくちんすぎる。
- 同期の時間については以下のソリューションもあるので、容量大きい場合は要検討。