Amazon FSx for Windows とは？　(2020年6月アップデート内容含む)

# 始めに
今回はAWSでWindowsファイルサーバを構築する際のベストプラクティス（？）のFSx for Windows を構築していきます。FSx for Windows自体は2019年から東京リージョンでも利用可能なのですが今年6月のアップデートで更に便利になりましたので、クラウドにファイルサーバを移管したいという場合はご検討を！
AWSの回し者っぽくなりましたが、上手く活用できればお安く運用できますので(笑)

# Amazon FSx for Windows (以下FSx)とは
[AWS公式サイト](https://aws.amazon.com/jp/fsx/windows/)
> Amazon FSx for Windows ファイルサーバーは、業界標準のサーバーメッセージブロック (SMB) プロトコルを介してアクセスできる、信頼性が高くスケーラブルな完全マネージド型のファイルストレージを提供します。Windows Server 上に構築され、ユーザークォータ、エンドユーザーファイルの復元、Microsoft Active Directory (AD) 統合などの幅広い管理機能を提供します。

ざっくりどんなサービスなのかというとWindows Server のファイル共有機能をそのまま使えるフルマネージドのファイルサーバをサービスとして提供しているということになります。
シャドウコピー機能やフォルダアクセス権の設定などWindows Serverっぽく利用できます。

「Windows OS のEC2+EBSでいいじゃん」と思うかもしれませんが、FSxならフルマネージドでOSのVerUpなど運用がユーザ側で不要になることに加え、容量によってはEC2+EBS構成よりコストを抑えることができます。
代わりにAD連携が必須という制限があります。
ストレージタイプはSSDとHDDがあり、AWS内のファイル読み書きのスループットキャパシティーもユーザで設定できます。


# イメージ図
![FSx_構成図_Qiita用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/17a1658d-f1d7-39ea-5c34-5e6d5aaa52d8.png)

# 2020年6月のバージョンアップ内容
 - ストレージ容量が変更できるようになりました
![FSx_変更１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/46edf564-d513-6ee0-1c13-49cb4015f480.png)


 - スループットキャパシティーが変更できるようになりました
![FSx_変更２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/fb88866d-3edd-579e-61cf-736e2a668c3b.png)



　[ストレージ容量の管理](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-storage-capacity.html)
　[スループット容量の管理](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-throughput-capacity.html)

今までは構築時に設定した上記パラメータは変更できませんでしたが、今回のバージョンアップで変更できるようになりました。
正直、容量とかスループットキャパシティーが変更できないのは「クラウドっぽくないし、微妙なサービスだな…」と思ってましたが、今回の変更でだいぶ印象が変わりましたd(`・ω・’)

# 仕様上の制限
 - Managed Microsoft ADもしくはユーザが構築したAD（EC2/オンプレAD）との連携が必須
 　※Simple ADはNG
 - HDDタイプのストレージ容量は2TB以上必須
 - スループットキャパシティーは最低8MB/s
 - AWS VPC内からしか利用できない（クライアントPCから利用する場合はVPN接続かDirectconnect接続必須）

# 今回のゴール
クライアントPCと見立てたAWS WorkSpaces にFSxをネットワークマウントして、ファイル共有ができるようにする。

# 前提条件
 - ADはAWS Managed Microsoft AD を利用
 - ストレージタイプはSSD×32GiBで設定
 - Single-AZ構成
 - AWS WorkSpaces にネットワークマウントする 

# 構築手順
 1. Managed Microsoft ADを構築し、ドメイン管理者のユーザ、PWを設定
 2. VPCのDHCPオプションセットを作成し、DNSのIPアドレスをManaged Microsoft ADに設定
 3. FSxを構築
 4. FSxをネットワークマウントするWorkSpacesを構築

# 実際にやってみた
　1.と2.ですが本記事のメインではないため、割愛しますが以前に投稿した以下記事を参考にManaged Microsoft ADを構築してください。
参考記事：[AWS Directory Service の構築と仕様](https://qiita.com/u-bayashi/items/00294e949d2a56774638)

　次に3. ですが、AWS コンソール画面のサービス検索で[FSx for Windows」と検索して、「Create file system」をクリックして、以下画面まで進めます。
![スライド2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/3a106b4d-13b0-f67a-811a-dc4ee4df9457.png)

続いて、名前やストレージ容量、スループットキャパシティーを入力します。
![スライド3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/d7588764-9977-d040-faef-31302a4638d1.png)
最小限のシステムを構築しますので、以下で登録します。
 ・Single-AZ
 ・Storage Type = SSD
 ・Storage capacity = 32GiB
 ・Throughput capacity = 8MB/s

次にデプロイするVPC、セキュリティグループ、サブネットを選択していきます。
![スライド4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/190e4b01-e73b-bc94-5cba-8810b4212778.png)

次に利用するDirectoryを選択します。今回は作成したManaged Microsoft ADを利用しますので、「AWS Managed Microsoft AD」を選択し、該当するドメイン名のDirectoryを選択します。

EncryptionはデフォルトのままでOKです。
![スライド5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/a2aaac80-f3a7-cd04-c0ee-4dda0c55c866.png)


file System作成後、ステータスがActiveになると以下のようになります。
Activeになるまでに30分ほどでかかるので、しばらく休憩です。
![スライド6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/a9ffabed-1caa-eff0-08af-8f8f547fa51e.png)

file system IDをクリックすると、該当システムのダッシュボードのような画面にアクセスできます。
![スライド7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/c0206814-a21c-a9ac-8fbf-82ed81482494.png)
この画面で、設定した容量やスループットキャパシティー、どこのAZにデプロイされているかなどの情報が確認できます。

右上の「Attach」をクリックすると以下画面が表示されます。
![スライド9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/7f3b59df-39da-f899-65c0-2bf90dc2a79e.png)

「▼ Attach instruction」 のコマンドを、FSxをマウントしたいクライアントPCで実行することで、FSxがマウントされます。

これでFSxの設定は完了しました！あとはクライアントPC（※今回はWorkSpacesですが）にマウントするだけです。

 4.のWorkSpaces の構築も本記事のメインではないため、割愛します。WorkSpacesは各所記事がありますので、参照しながら構築してください。ただDirectory は同じAWS Managed Microsoft ADを利用してデプロイしてください。

それではWorkspacesにFSxをマウントしていきます。
まずWorkSpcesへログインします。ログインするユーザにはネットワークドライブをにマウンドできる権限を付与しておいてください。今回はドメイン管理者でログインします。

ログイン後、cmdを管理者権限で起動して、Zドライブにマウントします。

    net use :Z \\amznfsxmsdrnffp."ドメイン"\share

コマンド実行すると以下画面のように"completed successfully"と表示されます。
![FSx_コマンド.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/f609c3f8-827e-137b-7968-0b67ff70c1b5.png)

エクスプローラーでマウントされているか確認してみると
![FSx_NWマウント.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/a82e2c10-256b-bcd8-f121-7f483dc7a093.png)
無事Zドライブにマウントされていますね！

# 他サービス構成（StorageGW/EC2+EBS)との比較
 StorageGWとの違い・・・FSxはGW動作基盤としてのEC2は不要だが、ADが必要
　　　　　　　　　　　　 グローバルIPでアクセスし、マウントできない
　　　　　　　　　　　　 容量の制限あり

 EC2+EBSとの違い・・・FSxはサーバOSの管理、メンテナンスが不要
　　　　　　　　　　　 利用容量によっては費用が抑えられる
　　　　　　　　　　　 
# 料金サンプル
 ストレージタイプはSSDとHDDがありますが、HDDがかなりお安いです。ただHDDタイプは2TB以上からの利用なのでご注意ください。
 AWS Pricing Calculatorでコスト計算してみました。以下はHDD×2TB の費用です。
![FSx_コスト１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/2540de44-947c-cf84-64c3-4139ea44d324.png)
 1ヵ月 = $87.82

　次にSSD×1TB の費用です。
![FSx_コスト２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/4934fb87-69c8-19aa-1ea2-ca1db162cd26.png)
 1ヵ月 = $125.71

 HDD×2TBの方がSSD×1TBより$50近く安いです:smirk:

 オンプレからの移行の際には現状1TB未満のファイルサーバでも2TBのHDDタイプで設計したがコストは抑えられそうですね。HDDタイプにした場合のファイルアクセススピードがどんなもんなのかというもの気になるところです。

# おまけ
 せっかくなので、FSxでシャドウコピーも設定してみましょう。
　まず、EC2（Windows インスタンス）をデプロイして、ドメイン参加させます。
　参加できたら、ドメイン管理者でEC2へRDPして、ログインします。
　ログインできたら、Powershellを管理者モードで起動して、以下コマンドを実行します。
　ちなみのFsxのシャドウコピー設定はGUIでは設定できません。

    #日本語版AMIのEC2からだとコマンドを受付けないため、セッションの言語を英語指定にします
    PS C:\Windows\system32>$usSession = New-PSSessionOption -Culture en-US -UICulture en-US
    
    #ビルトインのセキュリティグループ FSxRemoteAdminのユーザ権限でセッション開始します
    PS C:\Windows\system32>enter-pssession -ComputerName "Windows Remote PowerShell Endpoint" -SessionOption $usSession -ConfigurationName FsxRemoteAdmin
    　Windows Remote PowerShell Endpoint はFSxのコンソール画面に記載されているのでメモしておいてください。

    #シャドウコピー設定をデフォルトの設定（シャドウコピーで使える容量は全体の10%）で有効化します
    ["Windows Remote PowerShell Endpoint"]: PS>Set-FsxShadowStorage -Default
    以下のように表示されればOKです。
     FSx Shadow Storage Configuration

     AllocatedSpace UsedSpace   MaxSpace
     -------------- ---------   --------
             0         0 3435973837

    #手動でシャドウコピーを取得してみます
     ["Windows Remote PowerShell Endpoint"]: PS>New-FsxShadowCopy
     以下のように表示されればOKです
     Shadow Copy {DEEBE366-F342-43B4-AD97-F366F1BEFC15} taken successfully.  

    #シャドウコピーの容量を全体の50%に変更してみます
     ["Windows Remote PowerShell Endpoint"]: PS>Set-FsxShadowStorage -Maxsize "50%"
     AllocatedSpace UsedSpace    MaxSpace
     -------------- ---------    --------
           335544320    425984 17179869184
     MaxSpaceがたしかに増えてますね！

    #デフォルト設定のコピー取得のスケジュールを確認します
    ["Windows Remote PowerShell Endpoint"]: PS>Set-FsxShadowCopySchedule -Default

    以下のように質問されるので、とりあえず「ｙ」で
    Confirm
    Are you sure you want to perform this action?
    Performing the operation "Confirm-Change" on target "Set-FSxShadowCopySchedule".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] ヘルプ (既定値は "Y"): y
    FSx Shadow Copy Schedule

    スケジュールが表示されました！
    Start Time                Days of Week                             WeeksInterval
    ----------                ------------                             -------------
    2020-07-27T07:00:00+00:00 Monday,Tuesday,Wednesday,Thursday,Friday             1
    2020-07-27T12:00:00+00:00 Monday,Tuesday,Wednesday,Thursday,Friday             1

#注意点（2021年8月4日追記）
①　追加できるストレージ容量について、最小追加容量は現容量の10％からです。もし現在2TiBの容量なら追加できるのは最小で200GiBです。1GiB単位で追加できるわけではないのでご注意を！

②1つのFSxで対応できるのは64TiBまでです。一見もっと大容量のシステムを作れそうに思いますが、それは複数のFSxの分散ファイルシステム構成（DFS）にした場合で１つのファイルシステムでは64TiBまでです！

③ファイルシステムのDNS名(amzfsxxxxxx)をユーザ独自の名前でアクセスできるようにADにCNAME登録しようとした際に、AD上に同一コンピュータ名（コンピュータオブジェクト）が存在すると登録拒否されます。クラウド移行時に移行前に利用していたオンプレ機器と同じ名前で登録しようとしてもNGなのでいったんオンプレ機器の登録を消してからFSxを登録するか、Aliasで別名を付けましょう！

# 参考にしたページ
 - [AWSのマネージメントファイルサーバ FSx for Windowsを構築してみる](https://www.ikura-oisii.com/?p=237)
 - [[アップデート] ついに来たぞ！Amazon FSx for Windows File Server でストレージ拡張およびスループット変更が可能になりました！](https://dev.classmethod.jp/articles/amazon-fsx-for-windows-file-server-enables-you-to-grow-storage-scale-performance-on-file-system/)
 - [ウサギでもわかるAmazon FSx for WindowsのPowerShellによる管理](https://qiita.com/issie_/items/488d995cfd4a3d01606a)