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

企業がクラウドを利用する目的として挙げるものの一つが「ファイル保管・データ共有」です。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の組み合わせを解説します。

概要を動画でご覧いただけます。

1.概要

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

ファイルサーバーとしては最もシンプルな構成になります。
この構成でのメリット・デメリットは以下になります。

メリット
  • パフォーマンスが高い
  • EBSスナップショット機能によりバックアップ・リストアが容易
  • オンプレミスからの移行が容易
デメリット
  • 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を設定(※)

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

  • 「アベイラビリティーゾーン」に「ap-northeast-1a(Tokyo Region)」を選択

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を選択)

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.EBS作成

4.1.EBS作成

EC2インスタンスにアタッチするEBSを作成します。
Amazon EC2コンソール左側のメニューバーより「ELASTIC BLOCK STORE」の「ボリューム」を選択します。

ボリューム一覧が表示されます。「ボリュームの作成」ボタンを押下します。

ボリュームタイプをドロップダウンリストから選択します。選択肢は以下になります。

  • 汎用SSD - デフォルトのボリュームタイプ
  • プロビジョンド IOPS SSD (io1) - IOPS性能を必要とする場合
  • スループット最適化 HDD (st1) - スループット性能を必要とする場合
  • Cold HDD (sc1) - 低アクセス頻度向け
  • マグネティック(standard) -低アクセス頻度向けの低コストストレージ(HDD)を必要とする場合

今回は「汎用SSD」を選択します。次に「タグの追加」ボタンを押下します。

キーに「Name」、値にこのボリュームの名称を設定します。今回は「ExFileServerStorage」と設定。最後に「ボリュームの作成」ボタンを押下します。

ボリュームの作成が正常終了すると以下のメッセージ画面が表示されます。

ボリューム一覧に作成したボリューム「ExFileServerStorage」が表示されます。

4.2.ボリュームのアタッチ

先ほど作成したEBSをEC2にアタッチします。
「アクション」のドロップダウンリストから「ボリュームのアタッチ」を選択します。

「ボリュームのアタッチ」画面が表示されます。
インスタンスの入力欄に今回作成したEC2インスタンス「FileServer-Instance」のID(※)を入力します。
IDを入力するとIDに対応したインスタンスが選択候補として表示されますので、これを選択します。

(※)EC2のインスタンスIDは以下のように収取します。
Amazon EC2コンソールよりインスタンスを選択。インスタンス一覧から「FileServer-Instance」を選択します。
インスタンス「FileServer-Instance」の説明タブにインスタンスIDが表示されますので、このIDをコピーします。

最後に「アタッチ」ボタンを押下します。
これでEC2インスタンス「FileServer-Instance」にボリューム「ExFileServerStorage」のEBSがアタッチされます。

4.3.ボリュームのフォーマットとマウント

EC2にアタッチした先ほどのEBSをEC2にマウントします。
EC2インスタンス「FileServer-Instance」にSSH接続します。手順は2.2.「SSH接続」を参照してください。
SSH接続後、lsblk コマンドを使用して、使用可能なディスクデバイスを表示します。
以下に出力例を表示します。

$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  100G  0 disk
nvme0n1       259:1    0    8G  0 disk
├─nvme0n1p1   259:2    0    8G  0 part /
└─nvme0n1p128 259:3    0    1M  0 part

/dev/nvme0n1がルートデバイス。/dev/nvme1n1今回追加したEBSのボリュームで、この時点ではまだマウントされていません。

mkfs -t コマンドで/dev/nvme1n1をファイルシステム「ext4」でフォーマットします。

$ sudo mkfs -t ext4 /dev/nvme1n1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2174746624
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

/dev/nvme1n1をマウントします。
ここではフォルダ /data にマウントする手順を解説します。
フォルダ /dataを作成します。

sudo mkdir /data

フォルダ /data に/dev/nvme1n1をマウントします。

sudo mount /dev/nvme1n1 /data

これでユーザやアプリケーションが増設したEBSへのアクセスが可能になります。
但し、この状態ではEC2を再起動した場合に再度マウントし直す必要があります。再起動時に自動的にマウントするには/etc/fstabに下記を追加します。

/dev/nvme1n1    /data   ext4    defaults    1   1

5.あとがき

AWSを活用した4つのファイルサーバー構成の内、最もシンプルなAmazon EC2とAmazon EBSで構成されたパターンの構築手順について解説しました。今回の解説ではEC2のOSにAmazon Linuxを選択しましたがWindowsも選択可能です。EBSの追加はWindowsのボリュームの拡張ウィザードを使用して新規ドライブに割り当てます。
今回は最もシンプルな構成を紹介しましたが、たとえばEBSスナップショット機能を利用してバックアップを取る場合などではスナップショットの保存先として別途Amazon S3が必要となります。

次は、Amazon EC2とEFSを組み合わせた場合の構成について解説する予定です。

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

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

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

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

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

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

ページ上部へ戻る