【第2回】AWS を活用したファイルサーバー構築(EC2-EFS)

企業がクラウドを利用する目的として挙げるものの一つが「ファイル保管・データ共有」です。SaaSを利用する場合も多いですが、さまざまな理由からファイルサーバーをAWSの仮想インスタンス(EC2インスタンス)とストレージサービスを組み合わせて構築して運用する場合も多くあります。

そこで、AWS上でファイルサーバー環境を構築する際の4つのシステム構成とそれぞれのメリット・デメリット、構築手順について、4回に分けて解説します。

なお、AWSの基本的なサービスについてご存じない場合には、本サイトの別コラム「AWS入門 初心者が覚えておくべきAWSの基本」を先にお読みいただくことをお勧めいたします。

AWS上でファイルサーバーを構築する場合には、AWSのストレージサービスの中からひとつを選択しAmazon EC2と組み合わせて構築します。
以下にAWSのストレージサービスの一覧を示します。
本サイトには、それぞれのストレージサービスについてのコラムもありますので、深く知りたい方は下表のストレージ名からリンクされるコラムをご参照ください。また、ファイルサーバーの構築におけるAmazon EBS、EFS、S3についての比較を知りたい方は、「AWSでファイルサーバーを構築する際のストレージの選び方」をご参照ください。

ストレージサービス名 特徴
Amazon EBS EC2用仮想ハードディスク。EC2からマウントして使用。
Amazon EFS EC2用のNAS相当。複数のEC2からのマウントが可能。Linux限定。
Amazon FSx EFSのWindows対応版。OSがWindowsのEC2で使用。
Amazon S3 クラウド型オブジェクトストレージサービス。EC2と組み合わせて運用する場合はStorage Gatewayサービスを使用する。

前回はAmazon EC2とAmazon EBSの組み合わせについて解説しました。
今回はAmazon EC2とAmazon Elastic File System(EFS)の組み合わせを解説します。

1.概要

Amazon EC2とAmazon EFSで構成されるファイルサーバーを以下に示します。

EFSを使用したファイルサーバーとしては最もシンプルな構成になります。
EFSの特徴を以下に示します。

  • 複数のEC2からのマウントが可能
  • 同一のリージョン内であれば、異なるアベイラビリティーゾーンからのアクセスが可能
     (東京リージョンのアベイラビリティーゾーンはap-northeast-1a、ap-northeast-1c、ap-northeast-1dの3つ)
  • 異なるアベイラビリティーゾーンからのアクセスが可能なためEC2が単一障害点となるEFSに比べ可用性が高い
  • 複数のEC2からの同時アクセスが可能
  • オートスケーリング機能で自動での容量の拡張が可能
  • EBSと比較して費用は割高

なお、本コラムではAmazon VPCについては構築手順のみを開設します。Amazon VPCについて深く知りたい方は、「クラウド上にプライベートネットワーク空間を構築できるAmazon VPCの特徴と接続構成」をご参照ください。

2.VPC作成

2.1.VPCの作成

VPCのマネジメントコンソールを開きます。左側のメニューバーから「VPC」を選択し、「VPCの作成」ボタンを押下します。
「VPCの作成」画面で以下を設定し「作成」ボタンを押下します。

  • 「名前タグ」にVPCの名称を設定(ここでは「FileServer-VPC」と設定)
  • 「IPv4 CIDRブロック」に作成するIPv4アドレス範囲を設定(ここでは10.11.0.0/24と設定)

2.2.サブネットの作成

VPCのマネジメントコンソールの左側のメニューバーから「サブネット」を選択し、「サブネットの作成」ボタンを押下します。
「サブネットの作成」画面で以下を設定し「作成」ボタンを押下します。

  • 「名前タグ」にサブネットの名称を設定(ここでは「fileserver-subnet-public」と設定)
  • 「VPC」に今回作成した「FileServer-VPC」のVPC IDを設定(※)
  • 「アベイラビリティーゾーン」に「ap-northeast-1a(Tokyo Region)」を選択

(※)ドロップダウンリストから「FileServer-VPC」と表示されたVPC IDを選択

2.3.インターネットゲートウェイの作成とVPCのアタッチ

VPCのマネジメントコンソールの左側のメニューバーから「インターネットゲートウェイ」を選択し、「インターネットゲートウェイの作成」ボタンを押下します。
「インターネットゲートウェイの作成」画面で以下を設定し「作成」ボタンを押下します。

  • 「名前タグ」にインターネットゲートウェイの名称を設定(ここでは「fileserver-igw」と設定)

インターネットゲートウェイ一覧から作成したインターネットゲートウェイを選択し「アクション」のドロップダウンリストから「VPCにアタッチ」を選択します。

「VPCにアタッチ」画面で以下を設定し「アタッチ」ボタンを押下します。

  • 「VPC」に今回作成した「FileServer-VPC」のVPC IDを設定(入力欄にキーワード「FileServer」と入力、表示された選択候補から「FileServer-VPC」と表示されたVPC IDを選択)

2.4.ルートテーブルの作成

VPCのマネジメントコンソールの左側のメニューバーから「ルートテーブル」を選択し、「ルートテーブルの作成」ボタンを押下します。
「ルートテーブルの作成」画面で以下を設定し「作成」ボタンを押下します。

  • 「名前タグ」にルートテーブルの名称を設定(ここでは「FileServer-rtbl」と設定)
  • 「VPC」に今回作成した「FileServer-VPC」のVPC IDを設定(入力欄にキーワード「FileServer」と入力、表示された選択候補から「FileServer-VPC」と表示されたVPC IDを選択)

ルートテーブル一覧から作成したルートテーブルを選択し「アクション」のドロップダウンリストから「ルートの編集」を選択します。

「ルートの編集」画面で「ルートの追加」ボタンを押下します。

「ルートテーブルの編集」画面で以下を設定し「ルートの保存」ボタンを押下します

  • 「送信先」のCIDRを設定。ここではデフォルトの「0.0.0.0/0」のままとします。
  • 「ターゲット」に作成したインターネットゲートウェイのIDを設定(入力欄にキーワード「igw」と入力、表示された選択候補から「fileserver-igw」と表示されたインターネットゲートウェイIDを選択)

ルートテーブル一覧から作成したルートテーブルを選択し「アクション」のドロップダウンリストから「サブネットの関連付けの編集」を選択します。

「サブネットの関連付けの編集」画面で以下を設定し「保存」ボタンを押下します

  • 「関連付けられたサブネット」で表示された一覧から「fileserver-subnet-public」を選択

2.5.セキュリティグループの作成

VPCのマネジメントコンソールの左側のメニューバーから「セキュリティグループ」を選択し、「セキュリティグループの作成」ボタンを押下します。
「セキュリティグループの作成」画面で以下を設定し「作成」ボタンを押下します。

  • 「セキュリティグループ名」にセキュリティグループの名称を設定(ここでは「FileServer-SecurityGroup」と設定)
  • 説明欄にこのセキュリティグループの概要を記入(ここではSSH Accessと設定)
  • 「VPC」に今回作成した「FileServer-VPC」のVPC IDを設定(入力欄にキーワード「FileServer」と入力、表示された選択候補から「FileServer-VPC」と表示されたVPC IDを選択)

EFSに接続するには入力ポート2049を開放する必要があります。
VPCのマネジメントコンソールの左側のメニューバーから「セキュリティグループ」を選択します。
「セキュリティグループ」の入力欄に「FileServer」と入力、表示される選択候補から「セキュリティグループ名」が「FileServer-SecurityGroup」を選択します。

「FileServer-SecurityGroup」の設定情報が画面下に表示されます。
「インバウンドルール」タブを選択します。

「インバウンドルールを編集」ボタンを押下します。

「インバウンドルールを編集」画面が開きますので「ルールを追加」ボタンを押下します。
以下を設定します。

  • 「タイプ」にドロップダウンリストから「NFS」を選択
  • 「ソース」にドロップダウンリストから「セキュリティグループ」に分類されている「FileServer-SecurityGroup」を選択

最後に画面右下の「ルールを保存」ボタンを押下します。

3.EC2インスタンス作成

EC2のインスタンスを作成します。
インスタンスタイプには以下の5種類が提供されています。この中から汎用タイプを選択します。

  • 汎用タイプ
  • コンピューティング最適化タイプ
  • メモリ最適化タイプ
  • 高速コンピューティングタイプ
  • ストレージ最適化タイプ

汎用タイプのうち、以下の3種類のインスタンスファミリーが提供されています。この中からm系を選択します。

  • m系 – Middle Range。他のインスタンスファミリーのベースとなっている
  • t系 – Test用途。他にはない小さなインスタンスサイズの選択が可能
  • a系 – Arm Neoverseコア搭載。小さなインスタンスが多数必要なケース向け

m系の現在の最新世代は5。インスタンスサイズはm系では最小のlargeを選択します。

3.1.インスタンス作成

AWSのマネジメントコンソールより、EC2のメニューを選択します。
EC2コンソールの左側のメニューバーより「インスタンス」を選択します。

インスタンスメニュー画面から「インスタンスの作成」ボタンを押下します。

「ステップ1:Amazon マシンイメージ(以下AMI)」選択画面が開きます。
今回は「Amazon Linux 2 AMI (HVM), SSD Volume Type」を選択します。

「ステップ2:インスタンスタイプの選択」画面が開きます。
「フィルター条件」のドロップダウンリストから「汎用」を選択します。

汎用インスタンスの一覧が表示されます。
一覧の中からm5a.largeを選択します。
「次のステップ:インスタンスの詳細の設定」ボタンを押下します。
(※)m5.largeは一覧に無いのでオプション種別:a(AMDのCPUを搭載)を選択します。

「ステップ3:インスタンスの詳細の設定」画面が開きます。
「ネットワーク」にVPC ID(※)を設定、「自動割り当てパブリックIP」に「有効」を設定し、「次のステップ:ストレージの追加」ボタンを押下します。

(※)VPC IDの取得は以下のようにVPCコンソールからファイルサーバー用EC2インスタンスを作成するVPCを選択(今回はFileServer-VPC)します。
選択されたVPCの「説明」タブの「VPC ID」をコピーします。

「ステップ4:ストレージの追加」画面が開きます。
ここでは何も設定せず「次のステップ:タグの追加」ボタンを押下します。

「ステップ5:タグの追加」画面が開きます。
「タグの追加」ボタンを押下して以下を設定し「次のステップ:セキュリティグループの設定」ボタンを押下します。

  • 「キー」に「Name」を設定
  • 「値」にEC2インスタンスの名称(ここではFileServerInstance)を設定

「ステップ6:セキュリティグループの設定」画面が開きます。
表示される選択候補から名前が「FileServer-SecurityGroup」であるセキュリティグループを選択、「確認と作成」ボタンを押下します。

「ステップ7:インスタンス作成の確認」画面が開きます。
設定内容に問題ないことを確認し「起動」ボタンを押下します。

「起動」ボタンを押下すると「既存のキーペアを選択するか、新しいキーペアを作成します。」のポップアップ画面が表示されます。
ここでは、新しいキーペアを作成する手順を解説します。

ドロップダウンリストから「新しいキーペアの作成」を選択します。
「キーペア名」に作成するプライベートキーファイル名を入力(ここでは「fileserver-key」と入力)し「キーペアのダウンロード」ボタンを押下します。プライベートキーファイルのダウンロードを済ませたら最後に「インスタンスの作成」ボタンを押下します。

「作成ステータス」画面が開きます。
インスタンス作成が完了するまである程度の時間を要します。
「インスタンスの表示」ボタンを押下してインスタンスの一覧画面を開きます。

「ステータスチェック」欄の表示が「初期化しています」から「2/2のチェックに合格しました」に変化すればインスタンスの起動は完了です。

3.2.SSH接続

作成したEC2インスタンスに外部ネットワークからSSH接続を実施します。SSH接続を行う際にはインスタンス作成時に生成しダウンロードしたプライベートキーファイルが必要になります。
SSHを使用してEC2インスタンスへ接続するにはインスタンスのパブリックIPアドレスかDNSホスト名を使用します。

(※)DNSホスト名を使用する際の注意
EC2インスタンス生成直後はDNSホスト名が割り当てられていない(空欄)状態になっています。

EC2インスタンスを作成したVPCのコンソール画面を開き、「アクション」のドロップダウンリストから「DNSホスト名の編集」を選択します。

「DNSホスト名の編集」画面が開くので「DNSホスト名」のチェックボックスにチェックを入れ、「保存」ボタンを押下します。

これによりEC2インスタンスにDNSホスト名が割り当てられます。

SSHクライアントを使用してLinuxインスタンスへ接続します。
以下に接続先のホストにEC2インスタンスのDNSホスト名を使用した場合の接続方法について解説します。

(1)Linux端末からSSH接続する場合

以下のようにSSHコマンドで鍵認証を使って接続します。
ssh -i [プライベートキーファイル] [ユーザ]@[EC2インスタンスDNSホスト名]
(入力例)

ssh -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
(2)Windows端末からSSH接続する場合

Windows10で標準装備されているOpenSSHクライアントを使って鍵認証で接続します。
ユーザホームに「.ssh」フォルダを作成します。

mkdir C:\Users\ユーザ\.ssh

.sshフォルダ上にconfigファイルを作成します。
config ファイルの内容は以下のように設定します。

Host <ホスト名> 任意の文字列
User <ユーザ名> Amazon Linuxの場合、”ec2-user”
Hostname <接続先のホストアドレス> EC2インスタンスDNSホスト名
Port <ポート番号> 通常は22
ServerAliveInterval <数値> KeepAlive設定(秒)
IdentityFile <秘密鍵ファイル> プライベートキーファイルパス

configファイルを設定後、以下のコマンドでSSH接続できます。

ssh <ホスト名>

4.EFS作成

4.1.EFS作成

EC2インスタンスにアタッチするEFSを作成します。
Amazon EFS コンソールから「ファイルシステムの作成」ボタンを押下します。

「ネットワークアクセスを設定する」画面が開きます。

「VPC」の入力欄に「fileserver」と入力、表示された選択候補から「FileServer-VPC」と表示されたVPC IDを選択します。

続いて「マウントターゲットの作成」項目を設定します。
「VPC」に「FileServer-VPC」のVPC IDを設定することで自動的に「FileServer-VPC」に対応した「アベイラビリティーゾーン」と「サブネット」が選択されます。
ここで、デフォルトで選択されている「セキュリティグループ」の設定内容を消去します。

「セキュリティグループ」の入力欄を消去すると選択候補が表示されます。
「FileServer-SecurityGroup」を選択します。
最後に「次のステップ」ボタンを押下します。

「ファイルシステムポリシー」の画面が開きます。
ここでは何もせず「次のステップ」ボタンを押下します。

「ファイルシステムの設定を行う」画面が開きます。
「タグの追加」の項目でキー「Name」に対し値に「FileServerEFS」と設定します。
「ライフサイクル管理の有効化」の項目で「ライフサイクルポリシー」のドロップダウンリストからEFS IA(Infrequent Access:低頻度アクセス)ストレージへの移行期間(※)を選択します(ここでは「最後のアクセスから7日」を選択しています)

(※)EFS では移行期間を超過すると、アクセス頻度をモニタリングし低頻度アクセスと判断すると自動的にEFS IA ストレージに移行します。

EFS IAストレージに移行すると、ストレージ料金が安価になります(通常ストレージに比べ85%の削減)
代わりにストレージへのアクセスに対し料金が発生します。
EFS IAストレージ移行後にアクセス頻度が高いと却って料金が高くなるので、ストレージ利用状況を予測して移行期間の設定を行ってください。

続いて画面をスクロールして「スループットモードの選択」の項目の設定を行います。
以下の2種類から選択します。今回は「バースト」を選択します。

バースト

バーストクレジットという閾値内では高速アクセスが可能で閾値を超過すると、低速アクセスになる制限がかかります。バーストクレジットは一定期間アクセスを控えると回復します。

プロビジョニング済み

設定したスループット値を保証します。但し、非常に高価です。

「パフォーマンスモードの選択」の項目の設定を行います。
以下の2種類から選択します。今回は「汎用」を選択します。

汎用

一般的な用途向け。レイテンシーを優先します。

最大IO

数十台から数千台のクライアントからの同時アクセス向け。

「暗号化の有効化」の設定を行います。今回は「保持時のデータの暗号化の有効化」は指定しません。
最後に「次のステップ」ボタンを押下します。

「確認と作成」画面が開きます。設定内容に問題ないことを確認して「ファイルシステムの作成」ボタンを押下します。

ファイルシステム作成結果画面が表示されます。成功した場合は以下のような画面が表示されます。

4.2.EFSのマウント

EFSファイルシステムをEC2にマウントする方法は数種類ありますが、今回は最も簡単なamazon-efs-utilsというツールセットを使用したマウント方法について解説します。

EC2インスタンス「FileServerInstance」にSSH接続します。手順は3.2.「SSH接続」を参照してください。
SSH接続後、amazon-efs-utilsをインストールします。
ディストリビューションによってインストール手順が異なります。以下はAmazon Linuxでのインストール手順になります。

$ sudo yum install -y amazon-efs-utils
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Resolving Dependencies
・・・
Total download size: 180 k
Installed size: 411 k
Downloading packages:
(1/2): amazon-efs-utils-1.25-1.amzn2.noarch.rpm                                                  |  31 kB  00:00:00
(2/2): stunnel-4.56-6.amzn2.0.3.x86_64.rpm                                                       | 149 kB  00:00:00
------------------------------------------------------------------------------------------------------------------------
・・・
Installed:
  amazon-efs-utils.noarch 0:1.25-1.amzn2

Dependency Installed:
  stunnel.x86_64 0:4.56-6.amzn2.0.3
Complete!

マウントポイントを作成します。今回は/mnt配下にディレクトリ「els」を作成し、これをマウントポイントとします。

$ sudo mkdir /mnt/efs

ファイルシステムIDを使用してEFSをマウントします。
Amazon EFS コンソールから今回作成した「FileServerEFS」のファイルシステムIDをコピーしてください。

以下のコマンドでマウントを実施します。
mount –t els ファイルシステムID:/ マウントポイント
(実行例)

$ sudo mount -t efs fs-853108a4:/ /mnt/efs

これでEFSへのアクセスが可能になります。
但し、この状態ではEC2を再起動した場合に再度マウントし直す必要があります。再起動時に自動的にマウントするには/etc/fstabに下記の設定を追加します。
ファイルシステムID:/ マウントポイント efs _netdev 0 0
(設定例)

fs-853108a4:/ /mnt/efs efs defaults,_netdev 0 0
補足事項

マウントヘルパーを使用してマウントすると、Amazon EFS 用に最適化された以下のマウントオプションが自動的に使用されます。

オプション オプション解説
nfsvers=4.1 NFSv4プロトコルバージョン
rsize=1048576 NFS クライアントが受信できるデータの最大バイト数
wsize=1048576 NFS クライアントが送信できるデータの最大バイト数
hard サーバからの応答がない時、応答があるまで要求を繰り返す
timeo=600 タイムアウト値(ds)※ds=0.1秒
retrans=2 指定された回数だけ失敗した場合、タイムアウト・エラーが戻される
noresvport ネットワーク接続が再確立された時、クライアントに新しいTCP送信元ポートの使用を指示する

5.あとがき

AWSを活用した4つのファイルサーバー構成の内、Amazon EC2とAmazon EFSで構成されたパターンの構築手順について解説しました。今回はサンプルのため、1箇所のアベイラビリティーゾーンからの接続でしたが、概要でも解説した通り可用性を考慮し複数のアベイラビリティーゾーンから接続した形態で運用する方が現実的です。

また、Amazon EFSはLinux OS向けのストレージサービスのためWindows OSやMac OSはサポート対象外となります。同様のサービスをWindows OSやMac OSで動作するEC2で行う場合はAmazon FSxを使用します。

次回はAmazon EC2とAmazon FSxで構成されたファイルサーバーの構築手順についてを解説する予定です。

6.AWS導入に向けて他に知っておくべきこと

ファイルサーバーなど、AWS導入の入門的な情報システムのクラウド化を検討される場合には、ストレージ以外にも理解しておくべきことがあります。以下のコラムもご参照ください。

AWSの各サービスは構築する情報システムによって利用適性が異なります。実際の構築にあたってはクラウド導入・運用支援事業者が提供している支援サービスを活用することで、自社の検討・構築・運用工数の削減が期待できます。

AWSの4つのファイルサーバー構成を月額料金で比較する!

肥大するファイルサーバー。
クラウド活用した現代のファイルサーバー4つの構成で検討する!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る