Amazon EFS とは
EFSはAWSによるマネージドサービスのNFSです。
NFSサーバのお守りをやったことが有る人は、きっと自分ではしたくないはず。
そう、だからこそのマネージドで。
2016年6月29日、みんなが待ってたEFSがついにGAになった!
Auroraと同時に一昨年のre:Inventで発表されたのに1年半以上Previewという過去最長となりましたが、満を持して正式サービスとなりました。
プレビューはバージニアのみでしたが、発表と同時に3リージョンでサービス開始。
バージニア・オレゴン・アイルランドで使用可能です。東京まだかなまだかなー。
目的
そんなEFSですが、NFSv4.1のみの対応で、NFSv2やNFSv3では接続出来ません。
ウィンドウズの標準NFSクライアントはNFSv3までしか対応していません。
このためそのままではEFSへ接続する事ができないのです。
そこで、Windows ServerへNFSv4クライアントを導入してEFSへ接続することを試みます。
前提条件
- EFSでFileSystemを作成済みであること
- EFSが利用可能なAZにWindowsServer 2008R2以降のEC2インスタンスを作成済みであること(2012はOK。2003はダメでした)
- 今回は us-west-2(オレゴン)リージョンで作業します。他リージョンも可能です。
- NFSv4.1クライアントの導入
===========
NFSv4の先駆者であるミシガン大学からWindows用NFSv4クライアントが提供されています。
プロジェクトページはこちら
https://www.cohortfs.com/project/windows-nfs-clients
32bit,64bit版ともに用意されています。
1.1. クライアントのダウンロード
今回はOSが64bitなのでx64版をダウンロードします。
上のページからリンクをたどれますが、ファイル直リンクはこちら。
https://www.cohortfs.com/sites/default/files/ms-nfs41-client-setup-x64_0.exe
これをEC2インスタンスの適当な場所に保存しておきます。
1.2. インストール
ダウンロードしたファイルを実行します。
ms-nfs41-client-setup-x64_0.exe
インストーラが起動します。
注:デフォルトのインストール先は C:\Program Files\NFSv4.1 Client ですが
後でコマンドプロンプトを使う関係上 C:\BIN など打ちやすいものにした方が良いです。
インストールを進めていくと最後に再起動が必要である旨の表示が出ます。
rebootを押し、サーバが再起動されます。
再起動を確認したら再度EC2インスタンスへリモートデスクトップでログオンします。
- NFSクライアントの起動とマウント
===========
2.1. NFSクライアントサービスの起動
コマンドプロンプトを開き、以下のコマンドを実行します。
ここでは先のインストール場所を C:\BIN としています。
CD C:\BIN
NET START "NFSv4.1 Client"
The NFSv4.1 Client service is starting.
The NFSv4.1 Client service was started successfully.
最新版では自動的にサービスの登録がされ、再起動時に自動開始されるようです。
この場合、 already started とか出ると思います。それならそれでOKです。
2.2. NFSマウントの実行
マウントする時が来ました。EFSの接続条件を確認しておきます。
EFSのマウントポイントは、AWSマネジメントコンソールを開き
EFS - FileSystem からアクセスしたいFileSystemを選び詳細情報が表示されたら
Mount targets からEC2インスタンスのあるAZの IP address を探してコピーします。
例: 172.31.2.123
これがEFSサーバのIPアドレスになります。
ZドライブにEFSをマウントします。
先ほどから開いているコマンドプロンプトに以下のように入力します。
nfs_mount Z: 172.31.2.123:/
Successfully mounted 172.31.2.123 to drive Z
2.3. 実際にアクセスして動作確認
これでドライブZにEFSがマウントされています。
本当にアクセスできているのか確認してみましょう。
DIR Z:\
EFSのファイル(ここではhoge)と、とてつもない空き容量が表示されれば成功しています。
type hoge
などと叩けば、EFSのファイルの中身が表示されるはずです。
- アンマウントの方法
========
nfs_mount -d Z:
のようにしてアンマウントします。
- EFSとWindowsでの制約事項(既知の問題点)
===========
EFSはNFSv4の全機能を実装しているわけではありません。このWindows NFSv4クライアントもまた。
よっていくつか制約がでてきます。(執筆時点の構成によるものです。改善可能かも)
- ウィンドウズ側からディレクトリを作成すると誰でも読み書き可能なmode 777(drwxrwxrwx)になります。
- ウィンドウズ側からのアクセスは uid:666 gid:777 になります。
- 現在、ウィンドウズ側からファイル新規作成ができない(読取・削除・フォルダ作成は可能)
- まとめ
===========
ウィンドウズ側からファイルを作成できないため、読み取りのみの運用になってしまいます。
Linux側で作成したファイルをEFSで共有してウィンドウズ側で読み出す。という使い道しかないですよね。
これは今回使用したソフトウェアでcreate file functionが未実装だからです。今後に期待しましょう。