FSx for Windowsの推奨スループットがいつの間にか引き上げられていた話

2021.11.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

お客様からの指摘で気が付いたのですがAmazon FSx for Windows File Server(以後FSx for Windows)の推奨スループット値がいつの間にか引き上げられていたので本記事で解説します。

何が起きたのか?

FSx for Windowsでは容量以外にネットワーク/ディスクに対する性能を「スループット (MBps)」の形で定義することができ、サービス開始当初から現在に至るまで 8MBps - 2048MBps の範囲で選択することができます。

スループットの推奨値は利用する容量に応じて可変となります。(容量が多いほど高いスループット推奨)
詳細については以下のドキュメントに記載されていますのでご覧ください。

で、上記ドキュメントにいつの間にか

Amazon FSx API または CLI を使用する場合、スループット容量に下位レベル(8 Mbps または 16 Mbps)を選択できますが、8 Mbps および 16 Mbps レベルは、実稼働ワークロードではなく、テストおよび開発ワークロードを対象としています。

の記述が追加されており、マネジメントコンソールからは8MBps - 16MBpsを選択できなくなっていました。

(2021年11月現在、マネジメントコンソールからは32MBps以上のスループットしか選択できない)

加えて8MBps - 16MBpsは「テストおよび開発ワークロードを対象」ということで実質的に推奨スループットの下限が引き上げられた形となります。

いつから変わったのか?

以前はこの様な記述は無く、いつからこの変更が適用されたのかは不明です。
ドキュメントのGitHubリポジトリを見ても2021年3月の更新で止まっており変更履歴から突き止めることはできませんでした。

WEB上の資料などを調査したかぎりでは2021年8月ごろまではこの変更は適用されてない感じでした。
また、DevelopersIOのこちらの記事では既に変更適用済みであったため2021年10月までには変更があった様です。

このため、2021年8月 - 2021年10月ごろのどこかで変ったと予想されます。

既存環境への影響は?

実際の環境を調査できないため不明ですが、システム的にはスループット指定の方法が変っただけですので既存環境への影響は無いと思います。

また、スループット8MBps - 16MBps位の性能だと従来でも本番環境として運用している環境は少ないのではないでしょうか。
もし本番環境でスループット8MBps - 16MBpsの場合は32MBps以上に引き上げておくと良いでしょう。

ちなみに「ファイルアクセス監査」に関しては機能提供当初からスループット32MBps以上が必須要件でしたので問題ありません。

AWS CLIを使ってスループットを変える方法

基本的には最低スループット32MBpsで運用すれば問題ありませんが、とはいえ開発環境・検証環境でコストを抑えるため低いスループットにしたい場合もあると思います。

本記事ではAWS CLIを使ったスループット変更手順を紹介します。
CLIのバージョンはVer.2.4.1、シェルはPowerShell 7.2.0の環境で確認しています。

C:\> $PSVersionTable | Select-Object -ExpandProperty PSVersion

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      2      0

C:\> aws --version
aws-cli/2.4.1 Python/3.8.8 Windows/10 exe/AMD64 prompt/off

1. 既存環境に対するスループット変更

既存環境の設定変更はaws fsx update-file-systemコマンドを使います。
FSx for Windowsに関する設定は--windows-configurationパラメーターで指定します。

$fileSystemId    = 'fs-1234567890' # Set your filesystem id
$newThroughputMB = 8               # Set new throughput (MB)
aws fsx update-file-system --file-system-id $fileSystemId `
    --windows-configuration "ThroughputCapacity=$newThroughputMB"

これでスループットを最低の8MBpsに更新できます。

(スループット変更がリクエストキューに入れられ変更が開始される)

 ↓

(しばらく待つと8MBに更新される)

(この状態でスループット変更ダイアログを表示するとこんな感じ)

なお、スループット変更時は構成に応じた停止時間がありますので実施タイミングにご注意ください。

  • Multi-AZ構成の場合は自動フェイルオーバーとフェイルバックが発生 (瞬断)
  • Single-AZ構成の場合は数分間のシステム停止が発生

加えてスループット8MBpsの場合は容量拡張できません *1ので容量拡張したい場合は16MBps以上にしてください。

Unable to perform the storage capacity update. Updating storage capacity requires your file system to have at least 16 MB/s of throughput capacity.

2. 新規環境を低スループットで作成する (例)

新規環境をCLIで作るにはaws fsx create-file-systemコマンドを使います。
環境に応じてパラメーターが多様に変わりますので、今回はディレクトリにAWS Managed Microsoft ADを使いSingle AZ 1の環境を作る例を紹介します。

#
# 低スループットでFSx for Windowsファイルシステムを新規作成する例 (必要最低限)
#
$capactyGB = 32   # Set storage capacity (MB)
$throughputMB = 8 # Set throughput (MB)
$directoryId = 'd-1234567890' # Set your AWS Managed Microsoft AD id
$subnetId = 'subnet-1234567890'    # Set your subnet ID
$securityGroupId = 'sg-1234567890' # Set FSx security group id
aws fsx create-file-system --file-system-type 'WINDOWS' `
    --storage-type 'SSD' `
    --storage-capacity $capactyGB `
    --windows-configuration "ActiveDirectoryId=$directoryId,DeploymentType=SINGLE_AZ_1,ThroughputCapacity=$throughputMB" `
    --subnet-ids $subnetId `
    --security-group-ids $securityGroupId

このコマンドでスループット8MBpsのファイルシステムを新規作成できます。
バックアップ設定などは未指定のためデフォルトです。必要に応じてCLIのパラメーターを変えてください。

おまけ : AWS Tools for PowerShellの場合

一応AWS Tools for PowerShellを使った場合の変更例も記載しておきます。
スループットの変更にはUpdate-FSXFileSystemを、ファイルシステムの新規作成にはNew-FSXFileSystemを使います。

# AWS Tools for PowerShell 4.1.16 (AWS.Tools.FSxモジュール)を使用

# スループット変更
$params = @{
    FileSystemId = 'fs-1234567890' # Set your filesystem id
    WindowsConfiguration = @{
        ThroughputCapacity = 8 # Set new throughput (MB)
    }
}
Update-FSXFileSystem @params

# 新規ファイルシステム作成 (例)
$params = @{
    FileSystemType  = 'WINDOWS'
    StorageType     = 'SSD'
    StorageCapacity = 32 # Set storage capacity (MB)
    WindowsConfiguration = @{
        ActiveDirectoryId  = 'd-1234567890' # Set your AWS Managed Microsoft AD id
        DeploymentType     = 'SINGLE_AZ_1'
        ThroughputCapacity = 8              # Set throughput (MB)
    }
    SubnetId        = 'subnet-1234567890' # Set your subnet ID
    SecurityGroupId = 'sg-1234567890'     # Set FSx security group id
}
New-FSXFileSystem @params

最後に

簡単ですが以上となります。

ひっそり更新されていましたが内容としては極めて現実的だと思います。
ただ、できることならこの様な変更はもっとわかりやすい形で告知してほしいですね。

脚注

  1. これは従来からの仕様