Amazon Elastic File System(EFS)プレビューを試してみた
ども、大瀧です。
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]ボタンからウィザードを表示します。
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]ボタンで進めます。
この画面ではタグが追加できます。EC2と同様に、[Name]タグは画面表示に反映されるのでわかりやすい名前をつけましょう。[Next Step]ボタンで進めます。
これで設定は完了です。[Create file system]ボタンをクリックすると、共有領域の作成がスタートします。
一覧画面に戻り、File Systemのプロパティを確認します。
Availability Zone毎のIPアドレスが割り当てられている様子がわかります。
中程の[DNS names]リンクをクリックすると、Availability Zone毎に用意されるDNS名が確認できます。RDSのようにフェイルオーバーの仕組みとして用いられるわけではありませんが、名称に規則性があるので後述のマウントをユーザーデータなどで自動化するときにこちらを利用すると便利そうです。
[Life cycle state]列が「Available」に変わったら作成完了です。
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ストレージと同様に扱うことができましたので、どの程度の負荷に耐えられるのか、パフォーマンスがどの程度でるのか今後評価していきたいですね。
そういえば、設定を見る限りではバックアップに関する項目が見当たりませんでした。この辺りも正式リリースまでにどうなるのか、気になるところです。