「記憶域バスキャッシュ」考察:ボリューム容量・ディスク本数の設計

Windows Server
スポンサーリンク

Windows Server 2022で「記憶域バスキャッシュ」の機能が追加されました。しかしボリューム容量や必要なディスク構成について、Microsoftの解説ページを読んでもよく分かりません。これについて手探りで検証し、「こう考えれば良いのではないか」というレベルですが考察が出来上がりました。今回はそんな記事です。

はじめに

Windows Server 2022で新たに追加された機能「記憶域バスキャッシュ」を使うと、SSDとHDDなどの混在させたハイブリッドストレージを構築できることは、以下の記事で紹介しました。

記憶域バスキャッシュについては、Microsoftのページに解説があります。しかし「ディスクを何本積めば良いのか?」とか「積んだディスクからどのくらいのボリュームが作れるのか?」という点がは読み取れませんでした。そして、本記事作成時点で情報が非常に少なく、他に解説しているページは見つけられませんでした。

ここでは、私が手探りで検証した結果に基づき、上記の疑問についての考察を紹介していきます。恐縮ながら、理解が十分及んでいるとは言い難いため、間違い等の不備がある可能性はご了承下さい。(コメント等でフィードバック頂けると助かります)

前提条件

記憶域バスキャッシュは、信頼性を持たせない方式でも構成できます。しかしその場合、例えばSSDが1本故障しただけでボリュームにアクセスできなくなります。これでは本番運用には採用できないでしょう(本番システムで、RAID等で障害対策を取らないサーバーはまず見たことがありません)。

ですので、ここでは信頼性が無い方式は除外して考えてます。構成するSSD,HDDのうち同時に1本故障しても、継続してボリュームにアクセスできる方式を前提とします。

なお、SSDはキャッシュとしても機能しますが、データ書込中の電源喪失・故障は検証できていません。不慮のタイミングで障害があっても、データは維持できる機構だと信じていますが…。

最小限のディスク本数

合計8本が現実的な最低本数か

仮想化環境で検証した限りでは、SSD×3本+HDD×3本=合計6本 が、信頼性を確認できた最小構成でした。これに加えて、OSブート用のディスクも別に必要になります。こちらもRAID1で冗長化して2本プラス、サーバーに搭載するディスクは合計8本となります。下図は別記事の構成例で、容量はあくまで例ですが、このようなイメージになります。

サーバー筐体1台に対してディスク8本というのは、少なくはありません。最も安価なモデルだと最大2~4本程度しか搭載できないものが多いですが、一つ上のモデルであれば8~10本程度入るものが多くあります。

ただ、安価なHDDを混在させるとはいえ、本数が増えるとコストは上がります。容量によってはオールフラッシュの方が安くなる可能性もあります(SSDだけでRAID5構成など)。もしそうなら、素直にSSDだけで構成するのが良いでしょう。

もっと少ない本数で構成できないか?

「SSDとHDDの階層構造とキャッシュで構成するのであれば、SSD×2本+HDD×2本=4本で記憶域バスキャッシュを構成できないか?」と思い検証してみました。しかし、結論から言うと信頼性を確認できませんでした

というのは、SSDを1本切断させただけでボリュームが見えなくなったのです。SSD側もHDD側も「Mirror」構成としたので、どちらも1本は故障しても大丈夫だと考えたのですが、予想に反しました。もちろん検証方法が悪いだけという可能性もありますが。

それ以外でも、キャッシュモードを明示的にReadOnlyとした構成も試しましたが、やはりSSDを1本切断するとボリュームが見えなくなりました。

バインドを解除すれば少ない本数でも組めるが…

前述の課題に対し、SSDとHDDのバインド関係を
「Get-StorageBusBinding | Remove-StorageBusBinding」
コマンドで解除してあげると、SSDを1個切断してもボリュームが維持されるようになりました。

しかし、その構成がサポートされるか不明ですし、おそらくキャッシュが機能しなくなるでしょう。そしてキャッシュが無ければ、記憶域バスキャッシュ構成ではなくなり、ただの階層化した記憶域にるのではと思います。

もっとも、「ただの階層化した記憶域」だとしても、信頼性と性能を確保できて安価な構成が組めるなら、別に記憶域バスキャッシュにこだわる必要はなさそうです。それならWindows Server 2019以下でも実現出来そうです。これについては、代替方式として別記事にまとめています。

ボリュームのサイズ

どのくらいのボリューム容量がとれるか

例えば、上で示した図のように、240GBのSSD×3本+1TBのHDD×3本で記憶域バスキャッシュを有効化した場合、最大何GBのボリュームが作成できるでしょうか。というか、どうやって計算すればいいのでしょうか?これは、Microsoftのページを読んでも分からなかった点でした。

これは構成やパラメーターに依存しますが、今回は以下のように考えます。

  • 共有キャッシュの割合 = 15%
    • デフォルトの設定。この場合、SSD 1本あたり15%をキャッシュとして割り当てる。
  • SSD:HDDの容量比率 = 20:80
    • Microsoftのページによると、この比率がほとんどのワークロードに適切と書いているので、今回の例ではこれに従う。
  • ボリュームの数 = 1個
    • 同一プール上に複数のボリュームを作成可能だが、シンプルに1つとする。

SSD側(Mirror Tier)の容量から考えていきます。まず、上記の条件では、SSDの容量の15%は共有キャッシュとして確保しますので、ボリュームに割り当てられるのは残りの85%程度になります。実際の空き容量は、「Enable-StorageBusCache」コマンドで記憶域バスキャッシュを有効化した後に、サーバーマネージャーでSSDの使用状況を見ると、共有キャッシュとして割り当てられているサイズを確認できます。下の例だと、SSD1本あたり203GB空いています。

SSDが3本構成の場合、3方向ミラー構成となり、実効容量はSSD1本分の容量になります。となると、上図の例ではSSD側(Mirror Tier)は200GB程度が最大となります(実際に200GBを少し超える容量を指定するとエラーになります)。

SSD側(Mirror Tier)を200GBとすると、HDD側(Parity Tier)は、20:80の比率で800GBになります。HDDは1TB×3本のパリティ構成です。この場合、3-1本分の容量、つまり2TB程度が実効容量です。800GBだけ使って1.2TBほど余り、というのは少々勿体ないですが、今は置いておきます。

最後に、SSD側200GB + HDD側800GB = 合計1,000GBがボリュームの容量になる、というように考えられます。

欲しい容量から構成を考えると?

例えば、同じく上の図の構成で、3,000GB(約3TB)のボリュームを実現する場合、SSDやHDDはどの容量のものを選定すべきでしょうか。

SSD:HDDの比率を20:80とすると、まずSSD側(Mirror Tier)は3,000GB×20%=600GBとなります。SSDは3本構成ですが、ミラー構成(3方向ミラー)とするので、SSD全台に600GB必要になります。でも、600GBのSSDでは足りません。

共有キャッシュとして、各SSDで15%使われるため、この分のサイズも必要です。つまり、15%引いても600GB以上確保できる容量、つまり600÷0.85≒706GBが必要です。ストレージ製品は表記容量ぴったり使えませんので、ざっくり10%程度プラスして777GB以上のSSDが3本必要となるかと思います。

次にHDDですが、20:80の比率でいうと、HDD側(Parity Tier)は3,000GB×80%=2,400GBとなります。HDDは3本でパリティ構成ですので、RAID5の容量計算と同様に計算します。1本あたり2,400GB×50%=1,200GBが必要となります。これも10%程度プラスして、HDDは1本あたり1,320GB以上のものが3本必要となるでしょう。コスト重視で7,200rpm SATAのHDDであれば、2TBのものが適当かと思います。

…というように計算すれば良いかと考えています。もっとも、実際パーツを選定すると、ちょうどよい容量のものが無くて、容量の無駄が出てしまうと思います。その場合は、パフォーマンスは若干下がるかもしれませんが、SSD:HDDの比率を変えて、例えば10:90などにするのもありではないかと思います。

記憶域バスキャッシュ まとめ

記憶域バスキャッシュについての情報は、以下記事にまとめています。

おわりに

今回の記事は以上です。不備やご意見等ありましたら、下のコメント欄やtwitterからお願いします。

Windows Server の知識をさらに深めるには、書籍もおすすめです。Windows Server は実は機能が豊富で、Webに情報がないケースも多いです。無駄に探し回らないために、良書を手元に置いておくと効率的です。おすすめの本は、以下記事にまとめています。

もとだて

最後まで読んでいただきありがとうございました。

フィードバック

コメント