チュートリアル: スタンドアロン サーバーでの記憶域スペースによる記憶域バス キャッシュの有効化

適用対象: Windows Server 2022

スタンドアロン サーバー向けの記憶域バス キャッシュを使用すると、記憶域の効率を維持し、運用コストを低く抑えると同時に、読み取りと書き込みのパフォーマンスを大幅に向上させることができます。 記憶域スペース ダイレクトの実装と同様に、この機能は高速メディア (SSD など) と低速メディア (HDD など) を組み合わせて、階層を作成します。 既定では、高速なメディアの層の一部は、キャッシュ用に予約されています。

回復性 キャッシュの種類
なし (シンプル スペース) 読み取りと書き込み
ミラーリングによって高速化されたパリティ Read

システムで回復性が必要ない場合、または外部バックアップがある場合、記憶域バス キャッシュは読み取りキャッシュと書き込みキャッシュの両方をサポートします。 回復性のあるシステムの場合、記憶域バス キャッシュは読み取りキャッシュとしてのみ機能します。ボリュームの回復性として ReFS ミラーリングによって高速化されたパリティを選択することをお勧めします。 この組み合わせにすると、データがパリティ層から読み取られ、より高速なミラー層にキャッシュされるため、ランダム読み取りパフォーマンスが向上します。 また、プロビジョニング モードが [共有] (既定) に設定されている場合、ミラー層により書き込みキャッシュ機能も提供されます。

Storage bus cache read and write paths

このチュートリアルで学習する内容は次のとおりです。

  • 記憶域バス キャッシュとは
  • 記憶域バス キャッシュを有効化する方法
  • 展開後のキャッシュの管理

前提条件

Green checkmark icon.記憶域バス キャッシュを検討すべき場合:

  • サーバーが Windows Server 2022 で実行されており、
  • サーバーにメディアやドライブの種類が 2 つあり、そのうちの 1 つが HDD で (SSD と HDD、NVMe と HDD など)、
  • サーバーにフェールオーバー クラスター機能がインストールされている場合

Red X icon.以下の場合は記憶域バス キャッシュは使用できません。

  • サーバーが Windows Server 2016 または 2019 で実行されているか、
  • サーバーのフラッシュ構成がすべて完了しているか、
  • サーバーがフェールオーバー クラスターのメンバーである場合

注意

この機能を使用するには、サーバーにフェールオーバー クラスター機能がインストールされている必要があります。ただし、サーバーをフェールオーバー クラスターの一部にすることはできません。

機能の概要

このセクションでは、記憶域バス キャッシュの構成可能な各フィールドと適用可能な値について説明します。

Get-StorageBusCache

有効化されていない場合の出力は次のようになります。

ProvisionMode                  : Shared
SharedCachePercent             : 15
CacheMetadataReserveBytes      : 34359738368
CacheModeHDD                   : ReadWrite
CacheModeSSD                   : WriteOnly
CachePageSizeKBytes            : 16
Enabled                        : False

注意

通常の使用には、既定の設定をお勧めします。 記憶域バス キャッシュを有効にする前に、変更を行う必要があります。

プロビジョニング モード

このフィールドは、キャッシュにより高速なメディア層全体を使用するか、一部のみを使用するかを決定します。 このフィールドは、記憶域バス キャッシュを有効にした後は変更できません。

  • 共有 (既定値): キャッシュは、高速なメディア層の一部のみを使用します。 正確な割合は、以下の [共有キャッシュの割合] フィールドで構成できます。
  • キャッシュ: 一部のみでなく、高速なメディア層の大部分をキャッシュ専用にします。 この実装は、記憶域スペース ダイレクトの記憶域バス キャッシュに似ています。

共有キャッシュの割合

このフィールドは、[プロビジョニング モード] が [共有] に設定されている場合にのみ適用されます。 既定値は 15% で、フィールドは 5% から 90% の間で設定できます。 ミラーリングによって高速化されたパリティ ボリュームを使用する場合は、キャッシュとミラー層の間のバランスをとる必要があり、50% を超える値はお勧めしません。

Enabled

このフィールドは、記憶域バス キャッシュの状態を参照し、True または False のいずれかの値になります。

詳細フィールド

重要

これらのフィールドを変更することはお勧めできません。 記憶域バス キャッシュを有効にした後の調整はできません。

  • キャッシュ メタデータ予約バイト数: 記憶域スペース用に予約されているディスク スペースの量 (バイト単位) です。 このフィールドは、プロビジョニング モードが「キャッシュ」の場合にのみ適用されます。

  • キャッシュ モード HDD: 既定では、HDD 容量デバイスが読み取りと書き込みをキャッシュできます。 シンプル スペースの場合、この設定には ReadWrite または WriteOnly に指定できます。

  • キャッシュ モード SSD: 将来的に、すべてのフラッシュ システムがサポートされる際に使用します。 SSD 容量デバイスに書き込みのみのキャッシュを許可することが既定です。

  • キャッシュ ページ サイズ KB: このフィールドは、8、16 (既定値)、32、64 に設定できます。

PowerShell で記憶域バス キャッシュを有効にする

このセクションでは、PowerShell でスタンドアロン サーバーの記憶域バス キャッシュを有効にする方法について詳しい手順を説明します。

  1. モジュールのインポート

    Import-Module StorageBusCache 
    
  2. 記憶域バス キャッシュの設定を構成する

    既定の設定をお勧めします。既定値を使用する場合は、この手順をスキップしてください。

    重要

    構成が必要な場合は、記憶域バス キャッシュを有効にする前に行ってください。 フィールドの詳細については、「機能の概要」セクションを参照してください。

  3. ドライブの状態を確認する

    Get-PhysicalDisk
    

    出力は次の図に類似します。Number 列には 500 以下の値が表示され、CanPool 列にはすべての非ブート ドライブに対して True が表示されます。

    Result from Get-PhysicalDisk before enabling the storage bus cache

  4. 記憶域バス キャッシュの有効化

    Enable-StorageBusCache
    

    この手順では次を行います。

    • 使用可能なすべてのドライブを含む記憶域プールを作成する
    • 高速メディアと低速メディアをバインドしてキャッシュを形成する
    • 既定またはカスタム設定を使用して記憶域バス キャッシュを追加する

    Get-StoragePool を実行して、記憶域プールの名前を確認し、もう一度 Get-PhysicalDisk を実行すると、記憶域バス キャッシュを有効化した場合の影響を確認できます。 出力は次の図のようになります。Number 列には 500 を超える値が表示され (ドライブが記憶域バスによって要求されていることを示します)、CanPool 列にはすべての非ブート ドライブに対して False が表示されます。 有効にする前に ProvisionMode が [キャッシュ] に設定されている場合、より高速なドライブの [使用状況] 列に [ジャーナル] と表示されます。

    Results of Get-StoragePool and Get-PhysicalDisk after enabling the storage bus cache

  5. 記憶域バス キャッシュの状態を確認する

    フィールドが適正で、[有効] フィールドが true に設定されていることを確認します。

    Get-StorageBusCache 
    

    出力は次のようになります。

    ProvisionMode                  : Shared
    SharedCachePercent             : 15
    CacheMetadataReserveBytes      : 34359738368
    CacheModeHDD                   : ReadWrite
    CacheModeSSD                   : WriteOnly
    CachePageSizeKBytes            : 16
    Enabled                        : True
    

これで記憶域バス キャッシュが正常に有効になりました。次の手順では、ボリュームを作成します。

ボリュームの作成

回復性を備えるボリューム:

次の PowerShell コマンドレットを使用すると、ミラー:パリティ比が 20:80 の 1TiB ミラー アクセラレータ パリティ ボリュームを作成できます。これは、ほとんどのワークロードに推奨される構成です。 詳細については、「ミラーリングによって高速化されたパリティ」を参照してください。

New-Volume –FriendlyName "TestVolume" -FileSystem ReFS -StoragePoolFriendlyName Storage* -StorageTierFriendlyNames MirrorOnSSD, ParityOnHDD -StorageTierSizes 200GB, 800GB

回復性のないボリューム:

次の PowerShell コマンドレットは、ディスク障害を許容しない 1 TB のシンプル ボリュームを作成します。 読み取りキャッシュと書き込みキャッシュの両方がサポートされます。

New-Volume -FriendlyName "TestVolume" -FileSystem ReFS -StoragePoolFriendlyName Storage* -ResiliencySettingName Simple -Size 1TB

記憶域バス キャッシュを有効にした後の変更

Enable-StorageBusCache を実行した後は、プロビジョニング モード、共有キャッシュの割合、キャッシュ メタデータ予約バイト数、キャッシュ モード HDD、キャッシュ モード SSD、キャッシュ ページ サイズを変更できません。 物理的な設定には限定的に変更を加えることができます。次は、いくつかの一般的なシナリオです。

容量ドライブ (HDD) の追加または交換

ドライを手動で追加した後、次のコマンドレットを実行して追加プロセスを完了します。

Update-StorageBusCache

キャッシュ ドライブ (NVMe または SSD) の追加または交換

既存のバインドをバインド解除または再バインドして、リレーションシップのバランスを取るコマンドレットはありません。 次の手順を実行すると、既存の読み取りキャッシュが失われることになります。

Remove-StorageBusBinding
New-StorageBusBinding 

キャッシュと容量のバインドを確認してバランスを取る

次のコマンドレットを使用して、既存のキャッシュと容量のバインドを確認します。

Get-StorageBusBinding

次の例では、最初の列に容量不足のドライブが表示され、3 番目の列にはバインド先のキャッシュ ドライブが一覧表示されます。 「キャッシュ ドライブの追加または交換」の手順に従ってバランスを取ると、既存のキャッシュは保持されません。

Output of Get-StorageBusBinding

記憶域バス キャッシュに関する FAQ

このセクションでは Windows Server 2022 の記憶域バス キャッシュに関してよく寄せられる質問への回答を提供します。

サーバーがフェールオーバー クラスターに含まれていないのに、フェールオーバー クラスタリング機能をインストールする必要がある理由は?

この機能はスタンドアロン サーバー向けに設計されていますが、記憶域スペース ダイレクト向けの記憶域バス層 (SBL) キャッシュ上に構築されています。 フェールオーバー クラスタリング機能をインストールする必要があるのは、コンポーネントのクラスター化が必要であるためです。

記憶域バス キャッシュはすべてのフラッシュ構成で動作しますか?

いいえ。この機能は、メディアの種類が 2 つあり、その 1 つが HDD である場合にのみ機能します。 これは、RAID、SAN、またはすべてフラッシュ システムである場合は機能しません。

記憶域バス キャッシュ設定を変更するには?

プロビジョニング モードを Shared (既定) から Cache に変更するには、次の例を参照してください。 既定の設定を使用することをお勧めします。また、変更は、記憶域バス キャッシュを有効にする前に行う必要があります。

Set-StorageBusCache -ProvisionMode Cache