[アップデート] Amazon FSx for Windows File ServerがFile Server Resource Manager (FSRM)をサポートしてました
しばたです。
先月中旬の話なのですが、Amazon FSx for Windows File Server(以後FSx for Windows)でFile Server Resource Manager (FSRM)がサポートされた旨のアナウンスがありました。
既にAWSからブログも公開されていますが、私も実際に試してみたのでその内容を共有したいと思います。
File Server Resource Manager (FSRM)とは
File Server Resource Manager (FSRM)はWindows Serverの機能の一つで、ファイルサーバーとしての各種機能(クオータの設定やストレージ利用状況のレポートなど)を提供するものです。
より具体的にはMicrosoftのドキュメントや@ITの記事をご覧いただくと良いでしょう。
前提条件など
今回このFSRMの機能がFSx for Windowsでもサポートされたのですが、すべての環境では使えず次の条件を満たす場合のみ利用可能です。
- SSDストレージであること
- スループットが 128 MB/秒 以上であること
そしてFSRM関連のイベントログをCloudWatch LogsかAmazon Data Firehose(を経由したストレージ)のどちらかに保存する形となります。(ログ保存しない選択は不可)
若干要求スペックが高めなのとログ保存のためにある程度の追加料金がかかるので注意が必要です。
そして他のWindows Server関連機能と同様に機能の管理はPowerShell Remotingを使ったコマンドラインでのみ可能となっています。
通常のWindows ServerであればFSRMはGUIで管理すると思いますが、残念ながらFSx for WindowsではGUIが使えないためこの様になっています。
試してみた
ここからは実際に機能を試していきます。
環境は以前の記事で作った検証環境を流用します。
前提条件を満たさない場合
はじめに
- SSDストレージ
- スループットが 32 MB/秒
と前提条件を満たさない場合どうなるか確認します。

この場合、「管理」タブに新たに増えた「ファイルサーバーリソースマネージャー(FSRM)」を操作できるものの、

設定ダイアログで性能不足を指摘され変更できない状態となります。

FSRMを有効化
続けてスループットキャパシティを 128 MB/秒 に更新した状態で「ファイルサーバーリソースマネージャー(FSRM)」の設定画面を開くと、

今度は設定変更可能になっており、FSRMを有効にしようとするとログの保存先を指定する様に促されます。

今回はCloudWatch Logsを選ぶことにし、プレフィックスが/aws/fsx/になる適当なロググループを作成したうえで保存先に指定してやります。

適当なロググループを作成

ログ保存先に指定
最後に「保存」ボタンをクリックすれば変更がリクエストされます。

暫く待って更新が「完了済み」になればOKです。

設定欄の状態はこんな感じに変わります。

この時点でCloudWatch Logsを確認すると動作チェック用のログだけ出力されていました。

ちなみに本記事の検証中はほかのログを確認することはできず、具体的にどの様な内容のものが保存されるかはわかりませんでした...
管理コマンド
あとはPowerShell RemotingでFSx for Windowsに接続し各種管理コマンドを実行してやればOKです。
詳細は以下のドキュメントに記載されているのでこちらでご確認ください。
FSRMを有効にした段階で内部のPowerShellモジュールで使えるコマンドも増え、有効化前との差分を取ると次のコマンドが増えていました。
CommandType Name Version Source
----------- ---- ------- ------
# Get-
Function Get-FSxFSRMAutoQuota 1.0 FSxRemoteAdmin
Function Get-FSxFSRMClassification 1.0 FSxRemoteAdmin
Function Get-FSxFSRMClassificationPropertyDefinition 1.0 FSxRemoteAdmin
Function Get-FSxFSRMClassificationRule 1.0 FSxRemoteAdmin
Function Get-FSxFSRMEffectiveNamespace 1.0 FSxRemoteAdmin
Function Get-FSxFSRMFileGroup 1.0 FSxRemoteAdmin
Function Get-FSxFSRMFileScreen 1.0 FSxRemoteAdmin
Function Get-FSxFSRMFileScreenException 1.0 FSxRemoteAdmin
Function Get-FSxFSRMFileScreenTemplate 1.0 FSxRemoteAdmin
Function Get-FSxFSRMMacro 1.0 FSxRemoteAdmin
Function Get-FSxFSRMMgmtProperty 1.0 FSxRemoteAdmin
Function Get-FSxFSRMQuota 1.0 FSxRemoteAdmin
Function Get-FSxFSRMQuotaTemplate 1.0 FSxRemoteAdmin
Function Get-FSxFSRMSetting 1.0 FSxRemoteAdmin
Function Get-FSxFSRMStorageReport 1.0 FSxRemoteAdmin
# New-
Function New-FSxFSRMAutoQuota 1.0 FSxRemoteAdmin
Function New-FSxFSRMClassificationPropertyDefinition 1.0 FSxRemoteAdmin
Function New-FSxFSRMClassificationRule 1.0 FSxRemoteAdmin
Function New-FSxFSRMFileGroup 1.0 FSxRemoteAdmin
Function New-FSxFSRMFileScreen 1.0 FSxRemoteAdmin
Function New-FSxFSRMFileScreenException 1.0 FSxRemoteAdmin
Function New-FSxFSRMFileScreenTemplate 1.0 FSxRemoteAdmin
Function New-FSxFSRMQuota 1.0 FSxRemoteAdmin
Function New-FSxFSRMQuotaTemplate 1.0 FSxRemoteAdmin
Function New-FSxFSRMStorageReport 1.0 FSxRemoteAdmin
# Remove-
Function Remove-FSxFSRMAutoQuota 1.0 FSxRemoteAdmin
Function Remove-FSxFSRMClassificationPropertyDefinition 1.0 FSxRemoteAdmin
Function Remove-FSxFSRMClassificationRule 1.0 FSxRemoteAdmin
Function Remove-FSxFSRMFileGroup 1.0 FSxRemoteAdmin
Function Remove-FSxFSRMFileScreen 1.0 FSxRemoteAdmin
Function Remove-FSxFSRMFileScreenException 1.0 FSxRemoteAdmin
Function Remove-FSxFSRMFileScreenTemplate 1.0 FSxRemoteAdmin
Function Remove-FSxFSRMMgmtProperty 1.0 FSxRemoteAdmin
Function Remove-FSxFSRMQuota 1.0 FSxRemoteAdmin
Function Remove-FSxFSRMQuotaTemplate 1.0 FSxRemoteAdmin
Function Remove-FSxFSRMStorageReport 1.0 FSxRemoteAdmin
# Reset-
Function Reset-FSxFSRMFileScreen 1.0 FSxRemoteAdmin
Function Reset-FSxFSRMQuota 1.0 FSxRemoteAdmin
# Set-
Function Set-FSxFSRMAutoQuota 1.0 FSxRemoteAdmin
Function Set-FSxFSRMClassification 1.0 FSxRemoteAdmin
Function Set-FSxFSRMClassificationPropertyDefinition 1.0 FSxRemoteAdmin
Function Set-FSxFSRMClassificationRule 1.0 FSxRemoteAdmin
Function Set-FSxFSRMFileGroup 1.0 FSxRemoteAdmin
Function Set-FSxFSRMFileScreen 1.0 FSxRemoteAdmin
Function Set-FSxFSRMFileScreenException 1.0 FSxRemoteAdmin
Function Set-FSxFSRMFileScreenTemplate 1.0 FSxRemoteAdmin
Function Set-FSxFSRMMgmtProperty 1.0 FSxRemoteAdmin
Function Set-FSxFSRMQuota 1.0 FSxRemoteAdmin
Function Set-FSxFSRMQuotaTemplate 1.0 FSxRemoteAdmin
Function Set-FSxFSRMSetting 1.0 FSxRemoteAdmin
Function Set-FSxFSRMStorageReport 1.0 FSxRemoteAdmin
# Others
Function Start-FSxFSRMClassification 1.0 FSxRemoteAdmin
Function Start-FSxFSRMStorageReport 1.0 FSxRemoteAdmin
Function Stop-FSxFSRMClassification 1.0 FSxRemoteAdmin
Function Stop-FSxFSRMStorageReport 1.0 FSxRemoteAdmin
Function Update-FSxFSRMAutoQuota 1.0 FSxRemoteAdmin
Function Update-FSxFSRMQuota 1.0 FSxRemoteAdmin
Function Wait-FSxFSRMClassification 1.0 FSxRemoteAdmin
Function Wait-FSxFSRMStorageReport 1.0 FSxRemoteAdmin
他機能と同様にWindows標準のFileServerResourceManagerモジュールで公開されているコマンドレットをラップした形になっていました。
各コマンドの詳細はこのモジュールから確認すると良いでしょう。
動作確認
今回はFSRMの機能のうちクオータとファイルスクリーン機能を実際に試してみます。
(最初に紹介したAWSブログとだいたい同じです)
あらかじめFSx for Windows環境の共有フォルダに「部門1」から「部門3」のフォルダを用意しておきます。
フォルダの中身は全て空っぽです。

クオータ設定
New-FSxFSRMQuotaコマンドを使うと指定したフォルダにクオータを設定して最大容量を制限することができます。
今回は「部門2」フォルダに1GBの制限をかけてみます。
# 「部門2」に対して1GBのクオータ設定
New-FSxFSRMQuota -Folder "share\部門2" -Description "Limit 1GiB" -Size 1GB
# クオータ設定の確認
Get-FSxFSRMQuota
コマンドの実行結果は下図の様になりました。

この状態でローカル環境からファイル作成を試みて実際に最大容量が制限されているかチェックします。
約1.1GBのファイルを「部門1」、「部門2」に作成していきます。
# 約 1.1 GB = 1181116006 のファイルを「部門1」フォルダに作成
fsutil file createnew \\amznfsx5iurjhni.corp.contoso.com\share\部門1\test.bin 1181116006
# 「部門2」フォルダはクオータ制限によりファイル作成不可になる
fsutil file createnew \\amznfsx5iurjhni.corp.contoso.com\share\部門2\test.bin 1181116006
結果は下図の様になり、「部門1」フォルダには1.1GBのファイルが作成され、「部門2」フォルダに作ろうとした時点で容量不足のエラーとなりました。


スクリーンショットは撮っていませんが1GB未満のファイルであれば「部門2」フォルダにコピーできています。
いい感じですね。
ファイルスクリーン
続けてファイルスクリーンを試していきます。
ファイルスクリーンは名称ベース(主に拡張子ベース)で保存可能なファイルを制限する機能となります。
Windows Serverに標準で用意されているパターンを使い、「部門3」フォルダに対して実行ファイル[1]の保存を禁止してみます。
New-FSxFSRMFileScreenコマンドを使うと指定のフォルダにファイルスクリーン設定を追加できます。
# 「部門3」フォルダに実行ファイルの保存を禁止
New-FSxFSRMFileScreen -Folder "share\部門3" -IncludeGroup "Executable Files" -Active
# ファイルスクリーン設定の確認
Get-FSxFSRMFileScreen
結果は下図の様になり、「部門3」フォルダに設定が増えていることが見て取れます。

この状態でテスト用スクリプトファイル(test.ps1)を「部門2」、「部門3」フォルダにコピーしてみます。
# 制限対象となる実行ファイル (.ps1) を各部門フォルダにコピー
cp .\test.ps1 \\amznfsx5iurjhni.corp.contoso.com\share\部門2
cp .\test.ps1 \\amznfsx5iurjhni.corp.contoso.com\share\部門3
結果は下図の様に「部門3」へのコピー時のみアクセス拒否エラーとなり、こちらも期待した動作をしてくれました。

FSRMの無効化
FSRMの利用を止める場合は設定ダイアログから「無効」にしてやるだけです。

有効化の時と同様に変更がリクエストされ、しばらく待てば完了します。

無効化に合わせて既存の設定は全て消去されていました。
(有効化前の状態に戻るイメージです)
最後に
以上となります。
GUIで設定できない点は痛いですが、より柔軟にファイルサーバーを管理したい方にとっては朗報かと思います。
気になる方はぜひ試してみてください。
具体的には *.bat *.cmd *.com *.cpl *.exe *.inf *.js *.jse *.msh *.msi *.msp *.ocx *.pif *.pl *.ps1 *.scr *.vb *.vbs *.wsf *.wsh なファイル ↩︎







