dehio3’s diary

仕事、生活、趣味のメモ

EFSを試してみた

はじめに

東京リージョンでAmazon Elastic File System (EFS) が利用可能になったので試してみました。

やったこと

  • 単体で起動しているWEBサーバ(EC2)のコンテンツ部分をEFSに変更した。
  • 本番環境では2台間でのコンテンツの同期をrsyncで実施してるので、EFSに置き換えたい。

参考

環境

作業

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 における、ファイルシステムで許可されるスループットの最大容量。

感想

  • NFS作成らくちんすぎる。
  • 同期の時間については以下のソリューションもあるので、容量大きい場合は要検討。