スタンドアロン サーバー向けの記憶域バス キャッシュを使用すると、記憶域の効率を維持し、運用コストを低く抑えると同時に、読み取りと書き込みのパフォーマンスを大幅に向上させることができます。 この機能は、高速なメディア (SSD など) と低速なメディア (HDD など) を組み合せて、階層を作成します。 詳細については、「記憶域プール キャッシュについて」を参照してください。 既定では、高速なメディアの層の一部は、キャッシュ用に予約されています。
| Resiliency | キャッシュの種類 |
|---|---|
| なし (シンプル スペース) | 読み取りと書き込み |
| ミラーリングによって高速化されたパリティ | Read |
システムに回復性が必要ない場合、または外部バックアップがある場合は、記憶域バス キャッシュは読み取りキャッシュと書き込みキャッシュの両方をサポートします。 回復性のあるシステムの場合、ストレージ バス キャッシュは読み取りキャッシュとしてのみ機能し、ボリュームの回復性として [Resilient File System (ReFS) Mirror accelerated parity ] を選択する必要があります。 この組み合わせにすると、データがパリティ層から読み取られ、より高速なミラー層にキャッシュされるため、ランダム読み取りパフォーマンスが向上します。 また、プロビジョニング モードが [共有] (既定) に設定されている場合、ミラー層により書き込みキャッシュ機能も提供されます。
このチュートリアルで学習する内容は次のとおりです。
- 記憶域バス キャッシュとは
- 記憶域バス キャッシュを有効化する方法
- 展開後のキャッシュの管理
Prerequisites
環境が次のすべての特性と一致する場合は、記憶域バス キャッシュを検討する必要があります
- サーバーが Windows Server 2022 で実行されており、
- サーバーにメディアやドライブの種類が 2 つあり、そのうちの 1 つが HDD で (SSD と HDD、NVMe と HDD など)、
- サーバーにフェールオーバー クラスター機能がインストールされている場合
環境が次の特性のいずれかと一致する場合は、記憶域バス キャッシュを使用することはできません
- サーバーが Windows Server 2016 または 2019 で実行されているか、
- サーバーのフラッシュ構成がすべて完了しているか、
- サーバーがフェールオーバー クラスターのメンバーである場合
Note
この機能を使用するには、サーバーにフェールオーバー クラスタリング機能がインストールされている必要があります。ただし、そのサーバーがフェールオーバー クラスターの一部であってはなりません。
機能の概要
このセクションでは、記憶域バス キャッシュの構成可能な各フィールドと適用可能な値について説明します。
Get-StorageBusCache
有効になっていない場合、出力は次の例のようになります。
ProvisionMode : Shared
SharedCachePercent : 15
CacheMetadataReserveBytes : 34359738368
CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly
CachePageSizeKBytes : 16
Enabled : False
Note
一般的なユース ケースでは、既定の設定を使用する必要があります。 ストレージ バス キャッシュを有効にする前に、変更を加える必要があります。
プロビジョニング モード
このフィールドでは、高速なメディア層またはその一部のみを、キャッシュに使用するかを決定します。 このフィールドは、記憶域バス キャッシュを有効にした後は変更できません。 プロビジョニング モードには、次の 2 つのオプションがあります。
- Shared (共有: 既定値): キャッシュは、高速なメディア層の一部のみを占有します。 正確な割合は、[Shared Cache Percentage] (共有キャッシュの割合) フィールドで構成できます。
- Cache (キャッシュ): 高速なメディア層の一部のみでなく、大部分をキャッシュ専用に使用します。 詳細については、「記憶域プール キャッシュについて」を参照してください。
共有キャッシュの割合
このフィールドは、[プロビジョニング モード] が [共有] に設定されている場合にのみ適用されます。 既定値は 15% で、フィールドは 5% から 90% の間で設定できます。 ミラー高速パリティ ボリュームを使用する場合は、キャッシュとミラー層の間のバランスをとる必要があるため、50% を超える値を使用することはお勧めしません。
Enabled
このフィールドは、記憶域バス キャッシュの状態を参照し、True または False のいずれかの値になります。
高度なフィールド
Important
これらのフィールドを変更することはお勧めしません。 記憶域バス キャッシュを有効化した後に、調整することはできません。
キャッシュ メタデータ予約バイト数: 記憶域スペース用に予約されているディスク スペースの量 (バイト単位) です。 このフィールドは、プロビジョニング モードが「キャッシュ」の場合にのみ適用されます。
キャッシュ モード HDD: 既定では、HDD 容量デバイスが読み取りと書き込みをキャッシュできます。 シンプル スペースの場合、この設定には ReadWrite または WriteOnly に指定できます。
キャッシュ モード SSD: このモードは、将来的にすべてのフラッシュ システムがサポートされる際に使用します。 SSD 容量デバイスに書き込みのみのキャッシュを許可することが既定です。
キャッシュ ページ サイズ KB: このフィールドは、8、16 (既定値)、32、64 に設定できます。
PowerShell で記憶域バス キャッシュを有効にする
このセクションでは、PowerShell でスタンドアロン サーバーの記憶域バス キャッシュを有効にする方法について詳しい手順を説明します。
モジュールをインポートします。
Import-Module StorageBusCache記憶域バス キャッシュの設定を構成します。
ここでは、既定の設定を使用する必要があります。 その場合は、この手順をスキップしてそのまま既定値を使用します。
Important
構成が必要な場合は、記憶域バス キャッシュを有効にする前に行ってください。 フィールドの詳細については、「機能の概要」セクションを参照してください。
ドライブの状態を確認します。
Get-PhysicalDisk出力は次の画像のようになります。Number 列には 500 以下の値が表示され、CanPool 列のすべての非ブート ドライブには true が表示されます。
記憶域バス キャッシュを有効化します。
Enable-StorageBusCacheこの手順では次を行います。
- 使用可能なすべてのドライブを含む記憶域プールを作成します。
- 高速メディアと低速メディアをバインドしてキャッシュを形成します。
- 既定またはカスタム設定を使用して記憶域バス キャッシュを追加します。
Get-StoragePoolを実行して、記憶域プールの名前を確認し、もう一度Get-PhysicalDiskを実行すると、記憶域バス キャッシュを有効化した場合の影響を確認できます。 出力は次の画像のようになるはずです。 Number 列には 500 を超える値が表示され、記憶域バスがドライブを要求したことを示しています。 CanPool 列のすべての非ブート ドライブには、false が表示されるようになりました。 有効にする前にProvisionModeが [キャッシュ] に設定されている場合は、[使用量] 列に高速ドライブの履歴が表示されます。
記憶域バス キャッシュの状態を確認します。
フィールドが適正で、[有効] フィールドが true に設定されていることを確認します。
Get-StorageBusCache出力は次の例のようになります。
ProvisionMode : Shared SharedCachePercent : 15 CacheMetadataReserveBytes : 34359738368 CacheModeHDD : ReadWrite CacheModeSSD : WriteOnly CachePageSizeKBytes : 16 Enabled : True
ストレージ バス キャッシュが正常に有効になったら、次にボリュームを作成します。
ボリュームを作成する
作成する必要があるボリュームは、そのボリュームに回復性を持たせるか否かによって異なります。
回復性を備えるボリューム
次の PowerShell コマンドレットを使用すると、ミラー:パリティ比が 20:80 の 1 TiB ミラー高速パリティ ボリュームを作成できます。これは、ほとんどのワークロードに使用する必要がある構成です。 詳細については、「 ミラーアクセラレーションパリティ」を参照してください。
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 番目の列にバインド先のキャッシュ ドライブの一覧がぞれぞれ表示されています。 キャッシュ ドライブを追加または交換する際の手順に従って、新しいキャッシュ ドライブの割り当てを設定する前に古いキャッシュ ドライブの割り当てが確実にクリアされるようにします。 この手順をスキップすると、システムが古いキャッシュ割り当てを使用できなくなる可能性があり、これはバランスの取れた構成の実現に干渉する可能性があります。
記憶域バス キャッシュに関する FAQ
このセクションでは Windows Server 2022 の記憶域バス キャッシュに関してよく寄せられる質問への回答を提供します。
サーバーがフェールオーバー クラスターに含まれていないのに、フェールオーバー クラスタリング機能をインストールする必要があるのはなぜですか?
この機能はスタンドアロン サーバー向けに設計されていますが、記憶域スペース ダイレクト向けの記憶域バス層 (SBL) キャッシュ上に構築されています。 フェールオーバー クラスタリング機能をインストールする必要があるのは、コンポーネントのクラスター化が必要であるためです。
記憶域バス キャッシュはすべてのフラッシュ構成で動作しますか?
いいえ。この機能は、メディアの種類が 2 つあり、その 1 つが HDD である場合にのみ機能します。 この機能は、RAID、SAN、フラッシュ システムのいずれかである場合は機能しません。
記憶域バス キャッシュ設定を変更するには?
プロビジョニング モードを共有 (既定) からキャッシュに変更するには、次の例を参照してください。 既定の設定を使用することをお勧めします。また、変更は、記憶域バス キャッシュを有効化する前に行う必要があります。
Set-StorageBusCache -ProvisionMode Cache