FSx for Windows File Serverでストレージの最適化中にスループットを変更できるのか検証してみた
こんにちは。まるとです。
FSx for Windows File Serverに触れている中で一つ疑問点が出たので、実際に検証してみた備忘録となります。
FSx for Windows File Server とは
Amazon FSx for Windows File Serverは、AWSが提供するフルマネージドなWindowsファイルサーバーサービスです。
Windows Server上に構築されたSMB対応の共有ファイルストレージで、オンプレミスのWindowsファイルサーバーと同じ感覚でそのまま利用できるのが大きな特徴です。
ADとの統合、シャドウコピーなど、Windowsネイティブの機能がそのままサポートされているため、既存のWindows環境からの移行がスムーズに行えます。
バックアップの自動化やマルチAZ構成による高可用性もマネージドで提供されるため、ファイルサーバーの運用負荷を大幅に軽減できます。
疑問点
Amazon FSx for Windows File Serverでは、必要な時に設定されているストレージの10%から容量を拡張することができます。
容量を拡張するときのプロセスはAWS公式ドキュメントにも記載がございますが、拡張リクエスト → 拡張後のサイズのディスク(新ディスク)を作成・アタッチ → 既存のディスクから新ディスクにデータを移行 → 旧ディスクの削除の4ステップで拡張が行われます。
中でも3つ目のステップ「既存のディスクから新ディスクにデータを移行(ストレージの最適化ステップとも表現されています)」では、ディスク間のデータ移動が伴うため、スループットを消費します。
一方で、スループットの上限値を増やす場合、東京リージョンでは1Mbpsあたり2.53 USD/月発生することから、コストの増加も懸念されるケースがあります。
では、ここで疑問点が生じます。
「ストレージの最適化ステップで、スループットを変更できるのか」
業務時間中は一時的にスループットを増やして影響を受けないようにしつつ、業務終了後は少しでもコストを抑えるためにスループットを減らす運用をしたい という要件があった時に、実現できるか気になったので実際に試してみました。
先に結論
- マルチAZにおいて、ストレージの拡張&最適化プロセス中にスループットの変更は不可
- シングルAZ 1では同時にリクエストできるが、ダウンタイムが発生する
- 安全且つコストを抑えてストレージを拡張したい場合、負荷が高い時間帯のスループットの使用率を確認した上で、先に適切なスループットに変更する
- スループットの変更完了後、ストレージの拡張を行う
- ストレージの拡張にはかなりの時間がかかるため、計画が必要
やってみた
それでは実際にやってみます。まず初めに、ストレージキャパシティを増やします。


キャパシティを変更したことにより、更新タブでキャパシティの上限変更リクエストが行われたことが確認できます。

では、ストレージキャパシティ更新中にスループットキャパシティを変更します。今回は32 MB/sから64 MB/sに変更してみます。

ストレージキャパシティの更新中のため、スループットキャパシティは変更できない旨のエラーが発生しました。

なお、スループットキャパシティを先に変更した上で、ストレージキャパシティを変更するのは正常にリクエストできました。

どうするべきか
ストレージ拡張が完全に完了するまでスループットの変更ができないため、コストを最小限に抑えつつ、ストレージの拡張をするにはどうするのが良いか考えてみました。
まず、スループットの使用状況はCloudWatch メトリクス(ファイルシステム内の「モニタリングとパフォーマンス」タブ)で確認できます。

そのため、業務時間中や使用率が高い時間帯などを分析した上で、スループットを適切な値に先に変更する、という手法が取れるのではないかと思います。
また、ストレージの最適化処理にはかなりの時間がかかります。様々な要因があるため、あくまでもサンプルの値にはなりますが、今回検証した32GBから40GBへの拡張(スループットは32 MB/sに設定)では30分ほどかかりました。
最適化プロセスでの旧ディスクから新ディスクへの移行にスループットを消費するため、特に1ファイルあたりのサイズが大きい場合はスループットの上限値を変更することで最適化処理の高速化が期待できます。
ただし、スループットの上限値を上げる = コスト増加となるため、時間とコストのバランスを考慮・計画した上でスループットを設定してください。
終わりに
今回は、ちょっとした疑問を解消すべく色々と手を動かして検証してみました。
ディスクをオフラインにすることなく容量を拡張できるため、非常に便利ではありますが、最適化に伴う処理時間やスループットなど色々と考慮すべきポイントが明確となり勉強になりました。
容量拡張する際に何かしらのヒントになれば幸いです。
以上、まるとでした。







