Help us understand the problem. What is going on with this article?

Amazon EFS へ Windows EC2インスタンスから接続する

More than 3 years have passed since last update.

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(オレゴン)リージョンで作業します。他リージョンも可能です。

1. 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インスタンスへリモートデスクトップでログオンします。

2. 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.jpg

EFSのファイル(ここではhoge)と、とてつもない空き容量が表示されれば成功しています。

コマンド
type hoge

などと叩けば、EFSのファイルの中身が表示されるはずです。

3. アンマウントの方法

nfs_mount -d Z:
のようにしてアンマウントします。

4. EFSとWindowsでの制約事項(既知の問題点)

EFSはNFSv4の全機能を実装しているわけではありません。このWindows NFSv4クライアントもまた。
よっていくつか制約がでてきます。(執筆時点の構成によるものです。改善可能かも)

  • ウィンドウズ側からディレクトリを作成すると誰でも読み書き可能なmode 777(drwxrwxrwx)になります。
  • ウィンドウズ側からのアクセスは uid:666 gid:777 になります。
  • 現在、ウィンドウズ側からファイル新規作成ができない(読取・削除・フォルダ作成は可能)

5. まとめ

ウィンドウズ側からファイルを作成できないため、読み取りのみの運用になってしまいます。
Linux側で作成したファイルをEFSで共有してウィンドウズ側で読み出す。という使い道しかないですよね。
これは今回使用したソフトウェアでcreate file functionが未実装だからです。今後に期待しましょう。

zakky
旅人。 いつかは旅人CTO。 AWS Certified Security Speciality, Solution Architect(Professional & Associate)
http://ntuser.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした