Amazon FSx for Windows File Server 一人スキルアップセミナー


# Amazon FSx for Windows File Server

<strong>Amazon FSx for Windows File Serverの使用を開始する</strong>
というページを読みます。

> 業界標準のサーバーメッセージブロック (SMB) プロトコルを介してアクセスできる、信頼性が高くスケーラブルな完全マネージド型のファイルストレージを提供します

分からない用語はこちらをよく利用しています。

https://wa3.i-3-i.info/index.html

こちらもよく利用します。

https://e-words.jp/
 
※参考記事とは少し書き換えているところがあるのでご注意ください。

- 業界標準：実質的な標準。デファクトスタンダードとも呼ばれる。
- サーバーメッセージブロック (SMB) ：通信プロトコルの一つ。主にWindowsで使われている。ファイルなどの共有に使われる。
- 信頼性：どれだけ壊れにくいかの指標
  - 可用性：普通に使える状態をどれだけ維持しているか
- スケーラブル：スケーラビリティの高いこと。
  - スケーラビリティ：システムの利用や負荷の増大、用途の拡大などに応じて、どれだけ柔軟に性能や機能を向上、拡張できるかの指標。
- 完全マネージド型：必要な機器やソフトウェアの導入や管理をしてくれるサービス体系

> Windows Server 上に構築され、ユーザークォータ、エンドユーザーファイルの復元、Microsoft Active Directory (AD) 統合などの幅広い管理機能を提供します

- Windows Server：WindowsをOSとするサーバのこと。
- ユーザークォータ：ユーザーごとに割り当てられたストレージの上限容量。
- エンドユーザー：実際にサービスを使う人
- Active Directory：ログオン認証とユーザー承認を使用して、組織に安全なディレクトリ環境を提供するサービス

> シングル AZ とマルチ AZ 配置オプション、完全マネージド型のバックアップ、および保管中と転送中のデータ暗号化を提供します

ここからは公式ドキュメントから引用します。

- シングルAZ：Amazon FSxが自動的にアベイラビリティーゾーン（AZ）内でデータを複製し、コンポーネントの障害からデータを保護します

AZをまたぐわけではないのでシングルということです。

- マルチAZ：Amazon FSxは、別のアベイラビリティー・ゾーンでスタンバイ・ファイル・サーバーを自動的にプロビジョニングし、維持します

こちらは別のAZにデータを複製します。

続き：ファイルシステムでディスクに書き込まれたすべての変更は、アベイラビリティー・ゾーンを越えてスタンバイに同期的にレプリケートする

AZの障害に強いです。

続き：Amazon FSxのMulti-AZデプロイメントは、計画されたシステムメンテナンス中の可用性を強化し、インスタンス障害やアベイラビリティーゾーンの中断からデータを保護するのに役立ちます。計画されたファイルシステムのメンテナンスや予期せぬサービスの中断があった場合、Amazon FSxは自動的にセカンダリファイルサーバーにフェイルオーバーし、手動による介入なしにデータへのアクセスを継続することができます

また、それぞれの最適な場面について書いてあります。

> Multi-AZ ファイル・システムは、共有Windowsファイル・データに対して高可用性を必要とするビジネス・クリティカルなワークロードに最適です。これらの例には、ビジネス・アプリケーション、Webサービス環境、Microsoft SQL Serverなどがあります。単一のAZファイルシステムは、Multi-AZソリューションの高可用性を必要としないワークロードに対して低価格を提供し、データが失われた場合に最新のファイルシステムバックアップから回復できます。 Amazon FSx は、デフォルトですべてのファイル システムの毎日の自動バックアップを実行します。

シングルAZのメリット：低価格
マルチAZのメリット：高可用性

が売りのようです。

> SSD および HDD ストレージオプションを使用して、ワークロードのニーズに合わせてコストとパフォーマンスを最適化できます。

- HDD（ハードディスクドライブ）：記憶装置。安価
- SSD（ソリッドステートドライブ）：記憶装置。読み書きが速い

いよいよ最後の文章です。

> また、ストレージを拡張し、ファイルシステムのスループットパフォーマンスをいつでも変更できます。Amazon FSx ファイルストレージには、Windows、Linux、MacOS のコンピューティングインスタンスと、AWS またはオンプレミスで実行されているデバイスからアクセスできます。 

- スループット：一定時間あたりに処理できる量

# 利点

<strong>Amazon FSx for Windows File Serverの使用を開始する</strong>
というページの<strong>利点</strong>を読んでいきたいと思いますが、長いので興味のある点に絞って内容を抽出していきます。

## Windows Server に構築

> オンプレミスの Microsoft Active Directory (AD) および AWS Microsoft Managed AD と統合されています。

## シンプルでフルマネージド型

> AWS DataSync を使用すると、Amazon FSx へのファイルデータの移行が簡単かつ迅速に行えます

## クラウド内の最低コストの SMB ファイルストレージ

> ファイルシステムストレージを増やし、スループット容量をいつでもスケーリングできる


## 高速かつ柔軟なパフォーマンス

> ファイルシステムのスループットレベルを選択していつでも変更できる。
> DFS 名前空間を使用すると、数百ペタバイトのデータ全体で、最大で毎秒数十ギガバイトのスループットに数百万の IOPS まで、パフォーマンスをスケールアップできます

## 安全性とコンプライアンス

> 保管中および転送中のデータを自動的に暗号化できる。AWS Backup を使用して Amazon FSx ファイルシステムのバックアップができる。

## 幅広いアクセス方法

> SMB プロトコルをサポートすることで、ファイルシステムをEC2、ECS、VMware Cloud on AWS、Amazon WorkSpaces、Amazon AppStream 2.0 インスタンスに接続できる

# ユースケース

ユースケースに対してこんな良いところがある、という主張部分を抽出しました。

## ホームディレクトリ

> 最大数十万人のユーザーのアクセスに対応可能なファイルシステムを作成し、ファイルレベルまたはフォルダレベルでパーミッションを設定できます

## リフトアンドシフト Windows アプリケーション

> Amazon FSx により、アプリケーションがファイルシステムで必要とする、互換性のある Windows の機能とパフォーマンスが実現されます

- リフトアンドシフト：システムのクラウド化

## 高可用性 Microsoft SQL Server のデプロイメント

> Microsoft SQL Server データベースワークロードを実行するために必要な高可用性と耐久性を実現します

## メディアワークフロー

> 高いスループットと低いレイテンシーを備えた共有ファイルシステムをユーザーに提供します

## ウェブ配信とコンテンツ管理

> 高いスループットと低いレイテンシーを備えたスケーラブルなファイルシステムを提供することで、ビジネスインテリジェンスやデータ可視化アプリケーションなど、データ集約型の分析ワークロードの実行を可能にします

> データ分析

> 何千ものインスタンスから同時にアクセス可能なファイルシステムを提供

# 料金

以下3点について料金がかかります。

- ストレージ容量
- スループット容量
- バックアップ

## データ重複排除

データ重複排除を有効化することで料金が安くなります。どれだけ安くなるかはデータによって異なります。

## シングルAZ

データ重複排除を有効にした場合の料金ですが、50% の節約を想定しています。これによりSSD、HDD、バックアップは、料金列の半額になります。

||データ重複排除を有効にした場合の料金|料金|
|---|---|---|
|SSD|\$0.078 per GB-month|\$0.156 per GB-month|
|HDD|\$0.008 per GB-month|\$0.016 per GB-month|
|スループット|\$2.530 per MBps-month|\$2.530 per MBps-month|
|バックアップ|\$0.025 per GB-month|\$0.050 per GB-month|

\$0.130 per-month とは1ヶ月に1GB使うと\$0.130かかりますということです。
実際に見積もりをしてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/b5c7e38f-649d-d3eb-f342-b77d7aff07fd.png)

こちらの設定で重複排除しない想定で計算してみます。

<strong>ストレージにかかる料金</strong>
1000GB * \$0.156 = \$156

<strong>スループットにかかる料金</strong>
16MBps * \$2.53 = \$40.48

<strong>バックアップに係る料金</strong>
\$0

<strong>合計</strong>
\$156 + \$40.48 = \$196.48


## マルチAZ

||データ重複排除を有効にした場合の料金|料金|
|---|---|---|
|SSD|\$0.138 per GB-month|\$0.276 per GB-month|
|HDD|\$0.015 per GB-month|\$0.03 per GB-month|
|スループット|\$5.175 per MBps-month|\$5.175 per MBps-month|
|バックアップ|\$0.025 per GB-month|\$0.050 per GB-month|



# 触ってみよう

ローカルからクライアントVPNエンドポイントを利用して、プライベートサブネットに設置したFSxにアクセスすることが目標です。プライベートサブネットにWindowsインスタンスやLinux2インスタンスを立てて、アクセスしてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/539f3097-bf75-a829-a2aa-a64b8eb0535f.png)


## Active Directory 作成

FSxを作成する前にActive Directoryを作成する必要があります。

ディレクトリのセットアップをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/1db1b17a-3f95-e948-a7ff-8516601d4d27.png)

Managed Microsoft ADにチェックを入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/071a0256-eb15-fcf2-5b2b-be622e776267.png)


Standard Editionにチェックを入れ、適当なディレクトリ名を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/6c02c73b-4384-e1d3-59fd-cd75c3abb6f5.png)

パスワードを設定します。AD作成後でも変更可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/2e3d3f15-86e1-1719-4978-0e83113e27aa.png)

VPCを指定します。サブネットは最低2つ必要です。デフォルトで指定なしと表示されるので、そのまま次へをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/3296e5d8-e4ec-72f3-8220-feb4b74af611.png)

作成をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/d6ac61a5-1da4-64a3-b8d8-0be141a7ee2b.png)

## FSx for Windows File Server 作成

FSx for Windows File Serverを選択し、ディレクトリの作成をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/de1ccb7c-68ed-3cf6-ff11-20fe82170d2f.png)

ストレージ、スループットを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/6c1fe3cf-df64-70db-ecc5-b1da20d43bbb.png)


VPC、セキュリティグループ、サブネット、Microsoft ADを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/d66e747c-427c-a082-dfb0-6e7d264da43e.png)

暗号化キーはデフォルトのまま、次へをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/ca97f52e-18ac-48a8-b9ec-6352843eb502.png)


確認画面が表示されます。作成をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/29beadb7-397f-ceed-07ba-60f0d9224949.png)


## Windows インスタンスからアクセス

- AMI：
<strong>Windows_Server-2019-English-Full-Base-2021.03.10</strong>

作成したファイルシステムのアタッチをクリックすると、ファイルシステムをマウントするコマンドが表示されます。

Powershellを起動し、コマンドを入力します。

```
PS C:\Users\Administrator> net use Z: \\amznfsxxxxxxxxx.test.net\share
System error 53 has occurred.

The network path was not found.
```

つながりませんでした。調べてみると同様のエラーの記事を見つけました。

https://business.ntt-east.co.jp/content/cloudsolution/column-try-32.html#section-04-03

この記事にあるようにIPアドレスではうまくいきました。なぜDNS名だとだめなのか原因がまだわかっていません。

```
PS C:\Users\Administrator> net use Z: \\172.31.0.96\share
Enter the user name for '172.31.0.96': Admin@test.net
Enter the password for 172.31.0.96:
Drive Z: is now connected to \\172.31.0.96\share.

The command completed successfully.
```

マウントしたネットワークドライブにファイルを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/a2e77627-c636-0e63-594a-63814f4d6841.png)

もう一台インスタンスを立ち上げ、同じようにマウントし、ネットワークドライブを見てみると、作成したファイルを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/7f7abf67-7a6d-67e9-fcd1-195a57629338.png)


## Amazon linux2 からアクセス

- cifs-utils：SMBプロトコルを利用するために必要なパッケージ

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/storage_administration_guide/mounting_an_smb_share

> Red Hat Enterprise Linux では、カーネルの cifs.ko ファイルシステムモジュールにより、SMB プロトコルを利用できます。ただし、SMB 共有をマウントして作業を行うには、cifs-utils パッケージをインストールする必要があります。

Linux2インスタンスでは以下の手順でマウントします。

1. cifs-utilsパッケージのインストール
2. マウントポイントの作成
3. マウントコマンド実行


```
$ sudo yum update
$ sudo yum install cifs-utils
$ sudo mkdir /mnt/fsx
$ sudo mount -t cifs -o vers=3.0,sec=ntlmsspi,user=Admin@test.net //172.31.0.96/share /mnt/fsx/
Password for Admin@test.net@//172.31.0.96/share:  ********
$ ls /mnt/fsx/
test.txt.txt
```

(Windowsインスタンスで作成したファイルですが、拡張子.txtが余分だったようです)

## プライベートサブネット

ルートテーブルのルートからインターネットゲートウェイを外します。

## クライアントVPNエンドポイント

こちらの記事を参考にクライアントVPNエンドポイントを作成します。

https://qiita.com/hmatsu47/items/ce0cc8b7f5747dbb3190

コマンドプロントで`ipconfig`をたたくとクライアントCIDRで指定したIPアドレスが割り当てられていることが確認できます。

```
不明なアダプター ローカル エリア接続:

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: xxxxxxxxxxxxx
   IPv4 アドレス . . . . . . . . . . . .: 10.1.0.162
   サブネット マスク . . . . . . . . . .: xxxxxxxxxxxxx
   デフォルト ゲートウェイ . . . . . . .:
```

ローカルマシンにマウントすると、以前作成したファイルが見えています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/4277885a-c05d-a795-084f-8d66c1f88ca2.png)

### クライアントVPNエンドポイントを利用してプライベートサブネットにあるWindowsインスタンスに接続する場合

この場合、パブリックDNS名やパブリックIPは使えないので、注意が必要です。

Windowsインスタンス接続時にダウンロードするファイルWindows-instance.rdpを書き換えます。（ファイル名にはインスタンス名が反映されます）

- 変更前

```
auto connect:i:1
full address:s:ec2-54-250-152-128.ap-northeast-1.compute.amazonaws.com
username:s:Administrator
```

- 変更後

```
auto connect:i:1
full address:s:172.31.8.238
username:s:Administrator
```

その後、パブリックのときと同様にパスワードを聞かれますので、パブリックのときと同様のプライベートキーから作成されるパスワードを使用します。

# 参考記事

https://aws.amazon.com/jp/fsx/windows/

https://wa3.i-3-i.info/index.html

https://e-words.jp/

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/storage_administration_guide/mounting_an_smb_share

https://business.ntt-east.co.jp/content/cloudsolution/column-try-32.html#section-04-03

https://qiita.com/hmatsu47/items/ce0cc8b7f5747dbb3190