始めに
今回はAWSでWindowsファイルサーバを構築する際のベストプラクティス(?)のFSx for Windows を構築していきます。FSx for Windows自体は2019年から東京リージョンでも利用可能なのですが今年6月のアップデートで更に便利になりましたので、クラウドにファイルサーバを移管したいという場合はご検討を!
AWSの回し者っぽくなりましたが、上手く活用できればお安く運用できますので(笑)
Amazon FSx for Windows (以下FSx)とは
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内のファイル読み書きのスループットキャパシティーもユーザで設定できます。
イメージ図
2020年6月のバージョンアップ内容
今までは構築時に設定した上記パラメータは変更できませんでしたが、今回のバージョンアップで変更できるようになりました。
正直、容量とかスループットキャパシティーが変更できないのは「クラウドっぽくないし、微妙なサービスだな…」と思ってましたが、今回の変更でだいぶ印象が変わりました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 にネットワークマウントする
構築手順
- Managed Microsoft ADを構築し、ドメイン管理者のユーザ、PWを設定
- VPCのDHCPオプションセットを作成し、DNSのIPアドレスをManaged Microsoft ADに設定
- FSxを構築
- FSxをネットワークマウントするWorkSpacesを構築
実際にやってみた
1.と2.ですが本記事のメインではないため、割愛しますが以前に投稿した以下記事を参考にManaged Microsoft ADを構築してください。
参考記事:AWS Directory Service の構築と仕様
次に3. ですが、AWS コンソール画面のサービス検索で[FSx for Windows」と検索して、「Create file system」をクリックして、以下画面まで進めます。
続いて、名前やストレージ容量、スループットキャパシティーを入力します。
最小限のシステムを構築しますので、以下で登録します。
・Single-AZ
・Storage Type = SSD
・Storage capacity = 32GiB
・Throughput capacity = 8MB/s
次にデプロイするVPC、セキュリティグループ、サブネットを選択していきます。
次に利用するDirectoryを選択します。今回は作成したManaged Microsoft ADを利用しますので、「AWS Managed Microsoft AD」を選択し、該当するドメイン名のDirectoryを選択します。
file System作成後、ステータスがActiveになると以下のようになります。
Activeになるまでに30分ほどでかかるので、しばらく休憩です。
file system IDをクリックすると、該当システムのダッシュボードのような画面にアクセスできます。
この画面で、設定した容量やスループットキャパシティー、どこのAZにデプロイされているかなどの情報が確認できます。
右上の「Attach」をクリックすると以下画面が表示されます。
「▼ 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"と表示されます。
エクスプローラーでマウントされているか確認してみると
無事Zドライブにマウントされていますね!
他サービス構成(StorageGW/EC2+EBS)との比較
StorageGWとの違い・・・FSxはGW動作基盤としてのEC2は不要だが、ADが必要
グローバルIPでアクセスし、マウントできない
容量の制限あり
EC2+EBSとの違い・・・FSxはサーバOSの管理、メンテナンスが不要
利用容量によっては費用が抑えられる
料金サンプル
ストレージタイプはSSDとHDDがありますが、HDDがかなりお安いです。ただHDDタイプは2TB以上からの利用なのでご注意ください。
AWS Pricing Calculatorでコスト計算してみました。以下はHDD×2TB の費用です。
1ヵ月 = $87.82
次にSSD×1TB の費用です。
1ヵ月 = $125.71
HDD×2TBの方がSSD×1TBより$50近く安いです
オンプレからの移行の際には現状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
以下のように質問されるので、とりあえず「y」で
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)にした場合で1つのファイルシステムでは64TiBまでです!
③ファイルシステムのDNS名(amzfsxxxxxx)をユーザ独自の名前でアクセスできるようにADにCNAME登録しようとした際に、AD上に同一コンピュータ名(コンピュータオブジェクト)が存在すると登録拒否されます。クラウド移行時に移行前に利用していたオンプレ機器と同じ名前で登録しようとしてもNGなのでいったんオンプレ機器の登録を消してからFSxを登録するか、Aliasで別名を付けましょう!