Amazon Elastic File System(EFS)プレビューを試してみた

Elastic File System

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。
4月のAWS Summit SFOで発表されたAmazon Elastic File Systemのプレビューが通ったので、早速試してみました!EFSの特徴については大栗のエントリーが詳しいです。

File Systemの作成

現在、EFSの操作はManagement ConsoleとAWS CLIから行うことができます。まずはManagement ConsoleのEFS管理画面を表示します。現在のプレビューはオレゴンリージョン(us-west-2)のみで提供されていますので、リージョンをオレゴンに変更し、[Create file system]ボタンからウィザードを表示します。

efs01

EFSではNFSバージョン4に対応する共有ストレージ領域をFile Systemという単位で管理します。この画面では、File Systemにアクセスするためのネットワーク設定を行います。画面上部の[VPC]から接続するVPCを選択する *1と、VPC配下のAvailability Zone一覧にVPC配下のVPCサブネットの選択に切り替わります。サブネットの選択に加え、IP Addressとセキュリティグループの設定も併せて行います。IP Addressは今回は既定(自動割り当て)のままですが、鉛筆マークをクリックするとサブネット内の任意のIPアドレスが設定できます *2。セキュリティグループは、EC2やRDS向けのものと特に違いはありません。TCP:2049番を許可するグループを事前に作成し、設定します。[Next Step]ボタンで進めます。

efs02

この画面ではタグが追加できます。EC2と同様に、[Name]タグは画面表示に反映されるのでわかりやすい名前をつけましょう。[Next Step]ボタンで進めます。

efs03

これで設定は完了です。[Create file system]ボタンをクリックすると、共有領域の作成がスタートします。

efs04

一覧画面に戻り、File Systemのプロパティを確認します。

efs05

Availability Zone毎のIPアドレスが割り当てられている様子がわかります。

efs06

中程の[DNS names]リンクをクリックすると、Availability Zone毎に用意されるDNS名が確認できます。RDSのようにフェイルオーバーの仕組みとして用いられるわけではありませんが、名称に規則性があるので後述のマウントをユーザーデータなどで自動化するときにこちらを利用すると便利そうです。

efs07

[Life cycle state]列が「Available」に変わったら作成完了です。

efs08

File Systemへのアクセス

では、Linuxから実際にマウントしてみましょう。今回はAmazon Linux 2015.03を利用しました。上述のプロパティ画面にある[EC2 Mount Instrutions]リンクから確認することができます。まずは、NFSクライアントとなるnfs-utilsパッケージをインストールします。

$ sudo yum install -y nfs-utils

続いて、マウントポイントとなるefsディレクトリを作成、mountコマンドでマウントを実行します。

$ sudo mkdir efs
$ sudo mount -t nfs4 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).fs-XXXXXXXX.efs.us-west-2.amazonaws.com:/ efs
$

NFSv4なので、-tオプションにnfs4を指定するのがポイントです。dfコマンドで容量を確認してみました。

$ df -h
ファイルシス                                         サイズ  使用  残り 使用% マウント位置
/dev/xvda1                                             7.8G  1.1G  6.6G   15% /
devtmpfs                                               490M   56K  490M    1% /dev
tmpfs                                                  499M     0  499M    0% /dev/shm
us-west-2a.fs-XXXXXXXX.efs.us-west-2.amazonaws.com:/   8.0E     0  8.0E    0% /home/ec2-user/efs
$ 

EBってなに?!...どうやらエクサバイトのようです。AWS公式ブログではペタバイトサイズまでスケールするとあり、容量を設定する項目がそもそも無いのでこの表示自体はダミーのようです。

また、AWS CLIからゾーンごとに割り当てられるターゲットが増やせないか試してみました。

$ aws efs create-mount-target --region us-west-2 --file-system-id fs-XXXXXXXX --subnet-id subnet-XXXXXXXX

A client error (MountTargetConflict) occurred when calling the CreateMountTarget operation: mount target already exists in this AZ

エラーになりました。エラーメッセージの通り、1AZにつき1ターゲットという制限が設けられています。

まとめ

簡単ですが、EFSのセットアップからアクセスまで試してみました。適当にddコマンドなどでファイル書き込みを試す範囲では、一般的なNFSストレージと同様に扱うことができましたので、どの程度の負荷に耐えられるのか、パフォーマンスがどの程度でるのか今後評価していきたいですね。

そういえば、設定を見る限りではバックアップに関する項目が見当たりませんでした。この辺りも正式リリースまでにどうなるのか、気になるところです。

脚注

  1. VPCを選ぶということで複数のVPCをまたぐことは出来なさそうです。
  2. DNS名を用いない運用のときに、IPアドレスをそろえて使いたいときに便利ですね。