Amazon FSx for WindowsのVSSの容量について

Amazon FSx for WindowsのVolume Shadow Copy Service(VSS)の容量の挙動について検証をしましたので、結果をまとめます。
2022.12.30

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

はじめに

ネクストモードの南です。

先日、お客様よりAmazon FSx for WindowsのVolume Shadow Copy Service(VSS)の容量の挙動について質問をいただいたのですが、イマイチ確証が取れない点があったので実際に検証をして確かめてみました。
検証と結果の方を本エントリでまとめていきたいと思います。

検証結果

もともと確認したかったのは「VSSの最大容量で指定した領域は設定時点で確保されるのか」「ファイルシステム上のVSSの使用領域の見方」という内容でした。
最初に結果の方からまとめていきます。

  • Set-FsxShadowStorageで指定した最大容量はあくまで最大値であり、設定時点で確保はされてない
  • ファイルシステム上のVSSの使用領域はGet-FSxShadowStorageAllocatedSpaceの値を参照する

補足

Amazon FSx for WindowsのVSS設定はマネジメントコンソールからは行えず、PowerShell Remotingを使ってCLIから行う必要があります。
リモートコンソールへのログイン手順やVSSの設定の詳細については本エントリでは割愛しますが、以下の記事で丁寧に解説されていますのでご参照ください。

検証

検証は以下の構成で進めていきました。

  • シングルAZ
  • ストレージサイズは32GB(SSD)
  • 重複排除は有効化しない

まずはVSSを有効化していきます。
今回はVSSの最大領域として3GBを割り当てました。ファイルシステムは32GBで作成しているので、ファイルデータの保存領域としては残りの29GBを使用できる設計、となります。

Set-FsxShadowStorage -Maxsize (3GB)

クライアントでファイルシステムをネットワークドライブとして割り当てて使用領域を確認してみますが、設定直後ではシステム領域分(約96MB)を使用しているのみ、という見え方になります。VSSの領域として指定した3GBは使用領域にはカウントされません。

この状態で29GB(ファイルシステムの容量32GB - VSSの最大領域3GB)を超えてファイルデータを取り込んでみても、特に問題なく保存することができます。
VSS最大領域はあくまで最大値であり、システム側であらかじめ確保している領域ではない、ということがわかりました。


続いて、VSSで使用している領域についてもう少し詳しく確認していきます。
VSSが使用している容量の情報については、Get-FSxShadowStorageで確認することができます。
実行結果で表示される各項目については公式のドキュメントで以下のように説明されています。

  • AllocatedSpace - シャドウコピーに現在割り当てられているファイルシステム上のストレージ容量 (バイト単位)。初期状態では、この値は 0 です。
  • UsedSpace - シャドウコピーで現在使用されているストレージ容量 (バイト単位)。初期状態では、この値は 0 です。
  • MaxSpace - シャドウストレージを拡張できるストレージの最大容量 (バイト単位)。これは、Set-FsxShadowStorage コマンドを使用して シャドウコピーストレージ に設定した値です。

AllocatedSpaceが実際にファイルシステム上で割り当てられている容量を指すようですが、UsedSpaceとどの程度違いがあるのかドキュメントからは読み取れません。

実際の環境でGet-FSxShadowStorageを実行して確認してみます。
VSSの有効化直後はAllocatedSpaceUsedSpaceは初期状態で0になってます。

続いて、New-FsxShadowCopyでシャドウコピーを作成して、再度Get-FSxShadowStorageを実行してみます。

AllocatedSpaceUsedSpaceの結果に違いが出ました。
UsedSpaceは368KBですが、AllocatedSpaceは約320MBほど多い値となっています。
ファイルの中身を変更して再度シャドウコピーを作成し、Get-FSxShadowStorageを実行してみましたが、いずれも差分は同じ(AllocatedSpaceが約320MBほど多い)結果でした。
この結果についてですが、公式のドキュメントを見ると以下のような記載があり、シャドウコピーのデータに加えて常に320MBほどの容量を確保する動きをする、と解説されています。

ファイルシステムには、設定されているシャドウコピーストレージ量の最大容量に加えて、少なくとも 320 MB の空き容量が必要です (MaxSpace)。例えば、シャドウコピーに 5 GB の MaxSpace を割り当てた場合、ファイルシステムには、5GB の MaxSpace に加えて常に少なくとも 320 MB の空き領域が必要です

おそらくですが、上で言及されている320MBの空き容量がAllocatedSpaceに含まれる、という動きになっているようです。

また、クライアントから見ると、AllocatedSpace分(今回の検証時は約320MB)が使用領域としてカウントされていることが確認できます。

これらの検証から以下のような形になることがわかりました。
実際にファイルシステム上でVSSに割り当てられている容量を確認する場合は、Get-FSxShadowStorageを実行してAllocatedSpaceの値を参照すると正確な情報を得ることができます。

  • UsedSpace:シャドウコピーのデータで使用している領域
  • AllocatedSpaceUsedSpace + 約320MB。ファイルシステム上で実際に使用している領域

まとめ

以下に検証結果を再掲します。

  • Set-FsxShadowStorageで指定した最大容量はあくまで最大値であり、設定時点で確保はされてない
  • ファイルシステム上のVSSの使用領域はGet-FSxShadowStorageAllocatedSpaceの値を参照する

Maxsizeで指定した容量はあくまで最大値であり、ファイルシステムの運用次第では最大容量までシャドウコピーを作成できないケースがある、という点にご注意ください。
例えば、ファイルシステムの空き容量を使い切る形で運用している場合で考えてみます。VSSの古いデータが削除されるタイミングで一時的にファイルシステムの空き領域ができますが、このタイミングで今までVSSに使用していた領域にファイルデータを置くことができてしまいます。そんな具合でたまたまできた空き領域にユーザがどんどんファイルデータを突っ込んでいくと、VSSの領域がいつの間にか小さくなっている、というケースが生じ得ます。
VSSの最大領域はあくまで最大値であり、ショートするケースが生じることも想定して容量設計や容量のチェックを行っていただけると、効果的にVSSを運用することができると思います。

参考

Amazon FSx for Windows File Server -シャドウコピーの使用
Amazon FSx for Windows File Server の Volume Shadow Copy 管理機能を試してみた

ネクストモードについて

ネクストモード株式会社は東日本電信電話株式会社とクラスメソッド株式会社で設立したクラウドカンパニーです。「クラウドであたらしい働き方を」というメッセージを掲げ、さまざまなクラウド技術や製品を組み合わせて企業の働き方の当たり前を変えていくことを目指しています。クラウドやSaaSのご利用に関してお困りごとがあれば、ネクストモードまでぜひお問い合わせください。