記憶域スペース ダイレクトのキャッシュについてUnderstanding the cache in Storage Spaces Direct

適用対象:Windows Server 2019、Windows Server 2016Applies to: Windows Server 2019, Windows Server 2016

記憶域スペース ダイレクトには、記憶域のパフォーマンスを最大化するために組み込みのサーバー側キャッシュ機能が用意されています。Storage Spaces Direct features a built-in server-side cache to maximize storage performance. これは、大規模で永続的なリアルタイムの読み取りおよび書き込みキャッシュです。It is a large, persistent, real-time read and write cache. 記憶域スペース ダイレクトを有効にすると、このキャッシュが自動的に構成されます。The cache is configured automatically when Storage Spaces Direct is enabled. ほとんどの場合、何らかの手動管理が必要になることはありません。In most cases, no manual management whatsoever is required. キャッシュの動作は、存在するドライブの種類によって決まります。How the cache works depends on the types of drives present.

次のビデオでは、記憶域スペース ダイレクトに対するキャッシュの動作に加え、その他の設計に関する考慮事項について説明します。The following video goes into details on how caching works for Storage Spaces Direct, as well as other design considerations.

記憶域スペースダイレクトの設計に関する考慮事項Storage Spaces Direct design considerations
(20 分)(20 minutes)

ドライブの種類と展開オプションDrive types and deployment options

現在、記憶域スペース ダイレクトは、次の 3 種類の記憶装置で動作します。Storage Spaces Direct currently works with three types of storage devices:

NVMe (Non-Volatile Memory Express)NVMe (Non-Volatile Memory Express)
SATA/SAS SSD (ソリッドステート ドライブ)SATA/SAS SSD (Solid-State Drive)
HDD (ハード ディスク ドライブ)HDD (Hard Disk Drive)

これらの組み合わせには 6 通りあり、"オールフラッシュ" と "ハイブリッド" の 2 つのカテゴリに分けられます。These can be combined in six ways, which we group into two categories: "all-flash" and "hybrid".

オールフラッシュ展開の組み合わせAll-flash deployment possibilities

オールフラッシュ展開では、記憶域のパフォーマンスを最大化することを目標とし、回転式のハード ディスク ドライブ (HDD) は含まれません。All-flash deployments aim to maximize storage performance and do not include rotational hard disk drives (HDD).

利用可能なオールフラッシュ展開

ハイブリッド展開の組み合わせHybrid deployment possibilities

ハイブリッド展開では、パフォーマンスと容量のバランスを保つこと、または容量を最大化することを目標とし、回転式ハード ディスク ドライブ (HDD) が含まれます。Hybrid deployments aim to balance performance and capacity or to maximize capacity and do include rotational hard disk drives (HDD).

Hybrid-Deployment-Possibilities

キャッシュ ドライブの自動選択Cache drives are selected automatically

複数の種類のドライブが展開に存在する場合、記憶域スペース ダイレクトは、自動的に "最速" の種類のドライブをキャッシュとして使用します。In deployments with multiple types of drives, Storage Spaces Direct automatically uses all drives of the "fastest" type for caching. 残りのドライブはデータ格納用に使われます。The remaining drives are used for capacity.

どの種類が "最速" であるかは、次の順序に従って決定されます。Which type is "fastest" is determined according to the following hierarchy.

Drive-Type-Hierarchy

たとえば、NVMe と SSD がある場合は、NVMe が SSD のキャッシュになります。For example, if you have NVMe and SSDs, the NVMe will cache for the SSDs.

SSD と HDD がある場合は、SSD が HDD のキャッシュになります。If you have SSDs and HDDs, the SSDs will cache for the HDDs.

注意

キャッシュ ドライブは、使用可能な記憶域容量には含められません。Cache drives do not contribute usable storage capacity. キャッシュに格納されているすべてのデータは、他の場所にも格納されているか、そうでない場合はステージング解除されるときに他の場所に格納されます。All data stored in the cache is also stored elsewhere, or will be once it de-stages. つまり、展開内の生の記憶域容量の合計は、容量ドライブのみの合計値になります。This means the total raw storage capacity of your deployment is the sum of your capacity drives only.

すべてのドライブの種類が同じ場合、キャッシュの自動構成は行われません。When all drives are of the same type, no cache is configured automatically. 手動で構成を行うと、耐久性の高いドライブを、同じ種類の耐久性の低いドライブのキャッシュとして使うことができます。構成方法については、「手動構成」セクションをご覧ください。You have the option to manually configure higher-endurance drives to cache for lower-endurance drives of the same type – see the Manual configuration section to learn how.

ヒント

すべて NVMe またはすべて SSD の展開では、特に規模が非常に小さい場合、キャッシュとして "消費" するドライブをなくした方が、記憶域の効率が大きく向上する可能性があります。In all-NVMe or all-SSD deployments, especially at very small scale, having no drives "spent" on cache can improve storage efficiency meaningfully.

キャッシュ動作の自動設定Cache behavior is set automatically

キャッシュ動作は、キャッシュ対象のドライブの種類に基づいて自動的に決定されます。The behavior of the cache is determined automatically based on the type(s) of drives that are being cached for. ソリッドステート ドライブを対象とするキャッシュ (SSD 用の NVMe キャッシュなど) では、書き込みだけがキャッシュされます。When caching for solid-state drives (such as NVMe caching for SSDs), only writes are cached. ハード ディスク ドライブを対象とするキャッシュ (HDD 用の SSD キャッシュなど) では、読み取りと書き込みの両方がキャッシュされます。When caching for hard disk drives (such as SSDs caching for HDDs), both reads and writes are cached.

Cache-Read-Write-Behavior

オールフラッシュ展開での書き込み専用キャッシュWrite-only caching for all-flash deployments

ソリッドステート ドライブ (NVMe または SSD) をキャッシュする場合は、書き込みだけがキャッシュされます。When caching for solid-state drives (NVMe or SSDs), only writes are cached. これによって容量ドライブの劣化が軽減されます。つまり、多数の書き込みと再書き込みがキャッシュ内でまとめられ、必要時にのみステージング解除されるため、容量ドライブへの累積トラフィックが減り、容量ドライブの寿命を伸ばすことができます。This reduces wear on the capacity drives because many writes and re-writes can coalesce in the cache and then de-stage only as needed, reducing the cumulative traffic to the capacity drives and extending their lifetime. このような動作を考慮して、キャッシュには、耐久性が高く、書き込み用に最適化されたドライブを選択することをお勧めします。For this reason, we recommend selecting higher-endurance, write-optimized drives for the cache. 容量ドライブは、書き込みに対する耐久性が比較的低くてもかまいません。The capacity drives may reasonably have lower write endurance.

読み取りはフラッシュの寿命に大きく影響しないことに加えて、ソリッドステート ドライブは一般に読み取り待機時間が短いため、読み取りはキャッシュされず、容量ドライブから直接行われます (データが最近書き込まれたためにまだステージング解除されていない場合は除きます)。Because reads do not significantly affect the lifespan of flash, and because solid-state drives universally offer low read latency, reads are not cached: they are served directly from the capacity drives (except when the data was written so recently that it has not yet been de-staged). これにより、キャッシュ全体を書き込みのためだけに使用でき、キャッシュの効果が最大限に発揮されます。This allows the cache to be dedicated entirely to writes, maximizing its effectiveness.

この展開では、書き込み待機時間などの書き込み特性はキャッシュ ドライブによって決まり、読み取り特性は容量ドライブによって決まることになります。This results in write characteristics, such as write latency, being dictated by the cache drives, while read characteristics are dictated by the capacity drives. どちらも一貫性があり、予測可能で定常的です。Both are consistent, predictable, and uniform.

ハイブリッド展開での読み取り/書き込みキャッシュRead/write caching for hybrid deployments

ハード ディスク ドライブ (HDD) をキャッシュする場合は、読み取り 書き込みの両方がキャッシュされ、どちらについてもフラッシュと同様の待機時間 (多くの場合は最大 10 倍向上) が達成されます。When caching for hard disk drives (HDDs), both reads and writes are cached, to provide flash-like latency (often ~10x better) for both. 読み取りキャッシュには、最近読み取られたデータと頻繁に読み取られるデータが格納されます。これによって高速アクセスが実現され、HDD へのランダム トラフィックも最小限に抑えられますThe read cache stores recently and frequently read data for fast access and to minimize random traffic to the HDDs. (シークと回転の遅延のために、HDD へのランダムアクセスによって発生する待ち時間と失われた時間は重要です)。書き込みを吸収して、書き込みと再書き込みを行い、容量ドライブへの累積トラフィックを最小限に抑えるために、書き込みがキャッシュされます。(Because of seek and rotational delays, the latency and lost time incurred by random access to an HDD is significant.) Writes are cached to absorb bursts and, as before, to coalesce writes and re-writes and minimize the cumulative traffic to the capacity drives.

記憶域スペース ダイレクトには、書き込みをステージング解除する前にランダム化を解除するアルゴリズムが実装されています。これにより、ワークロード (仮想マシンなど) から生じた実際の IO がランダムであっても、ディスクに対する IO パターンはシーケンシャルになるようにエミュレートされます。Storage Spaces Direct implements an algorithm that de-randomizes writes before de-staging them, to emulate an IO pattern to disk that seems sequential even when the actual IO coming from the workload (such as virtual machines) is random. これで HDD の IOPS とスループットが最大限に引き出されます。This maximizes the IOPS and throughput to the HDDs.

3 種類すべてのドライブを含む展開でのキャッシュCaching in deployments with drives of all three types

3 種類すべてのドライブが存在する場合は、NVMe ドライブが SSD と HDD の両方のキャッシュを提供します。When drives of all three types are present, the NVMe drives provides caching for both the SSDs and the HDDs. 動作は既に説明したとおりで、SSD に対しては書き込みだけがキャッシュされ、HDD に対しては読み取りと書き込みの両方がキャッシュされます。The behavior is as described above: only writes are cached for the SSDs, and both reads and writes are cached for the HDDs. HDD をキャッシュするための負荷は、キャッシュ ドライブ間で均等に分散されます。The burden of caching for the HDDs is distributed evenly among the cache drives.

まとめSummary

次の表は、それぞれの組み合わせの展開について、キャッシュとして使われるドライブ、容量として使われるドライブ、キャッシュ動作をまとめたものです。This table summarizes which drives are used for caching, which are used for capacity, and what the caching behavior is for each deployment possibility.

展開Deployment キャッシュ ドライブCache drives 容量ドライブCapacity drives キャッシュ動作 (既定)Cache behavior (default)
すべて NVMeAll NVMe なし (オプション: 手動構成)None (Optional: configure manually) NVMeNVMe 書き込みのみ (構成した場合)Write-only (if configured)
すべて SSDAll SSD なし (オプション: 手動構成)None (Optional: configure manually) SSDSSD 書き込みのみ (構成した場合)Write-only (if configured)
NVMe + SSDNVMe + SSD NVMeNVMe SSDSSD 書き込みのみWrite-only
NVMe + HDDNVMe + HDD NVMeNVMe HDDHDD 読み取りと書き込みRead + Write
SSD + HDDSSD + HDD SSDSSD HDDHDD 読み取りと書き込みRead + Write
NVMe + SSD + HDDNVMe + SSD + HDD NVMeNVMe SSD + HDDSSD + HDD HDD に対しては読み取りと書き込み、SSD に対しては書き込みのみRead + Write for HDD, Write-only for SSD

サーバー側アーキテクチャServer-side architecture

キャッシュはドライブ レベルで実装されます。1 台のサーバー内の個々のキャッシュ ドライブは、同じサーバー内の 1 台以上の容量ドライブにバインドされます。The cache is implemented at the drive level: individual cache drives within one server are bound to one or many capacity drives within the same server.

キャッシュは Windows ソフトウェア定義記憶域スタックの他の部分よりも下層に位置するため、記憶域スペースやフォールト トレランスといった概念を意識する必要はありません。Because the cache is below the rest of the Windows software-defined storage stack, it does not have nor need any awareness of concepts such as Storage Spaces or fault tolerance. これは、"ハイブリッド" (一部はフラッシュ、一部はディスク) のドライブを作成して Windows に渡すようなものと考えることができます。You can think of it as creating "hybrid" (part flash, part disk) drives which are then presented to Windows. 実際のハイブリッド ドライブと同様に、物理メディアの高速部分と低速部分をまたぐホット データとコールド データのリアルタイムの移動が外部から認識されることはほとんどありません。As with an actual hybrid drive, the real-time movement of hot and cold data between the faster and slower portions of the physical media is nearly invisible to the outside.

記憶域スペース ダイレクトの回復性は少なくともサーバー レベルである (データ コピーは常に複数のサーバーに書き込まれ、サーバーごとに最大 1 つのコピーが保持される) ことから、キャッシュ内のデータにも、キャッシュに含まれていないデータと同等の回復性が与えられます。Given that resiliency in Storage Spaces Direct is at least server-level (meaning data copies are always written to different servers; at most one copy per server), data in the cache benefits from the same resiliency as data not in the cache.

Cache-Server-Side-Architecture

たとえば、3 方向ミラーリングを使用する場合、データの 3 つのコピーが別々のサーバーに書き込まれます。これらは各サーバーのキャッシュに追加されます。For example, when using three-way mirroring, three copies of any data are written to different servers, where they land in cache. 後でステージング解除されるかどうかに関係なく、コピーは常に 3 つ存在することになります。Regardless of whether they are later de-staged or not, three copies will always exist.

動的なドライブ バインディングDrive bindings are dynamic

キャッシュと容量ドライブのバインディングは、1:1 から 1:12 以上まで、どのような比率にもすることができます。The binding between cache and capacity drives can have any ratio, from 1:1 up to 1:12 and beyond. これは、スケール アップの実行時や障害の発生後など、ドライブが追加または取り外されたときに動的に調整されます。It adjusts dynamically whenever drives are added or removed, such as when scaling up or after failures. このため、キャッシュ ドライブや容量ドライブは、いつでも必要に応じて個別に追加することが可能です。This means you can add cache drives or capacity drives independently, whenever you want.

Dynamic-Binding

対象性を保つために、容量ドライブの数はキャッシュ ドライブの数の倍数にすることをお勧めします。We recommend making the number of capacity drives a multiple of the number of cache drives, for symmetry. たとえば、4 台のキャッシュ ドライブがある場合は、容量ドライブが 7 台や 9 台ではなく 8 台 (1:2 の比率) の場合に、より均等なパフォーマンスが得られます。For example, if you have 4 cache drives, you will experience more even performance with 8 capacity drives (1:2 ratio) than with 7 or 9.

キャッシュ ドライブの障害の処理Handling cache drive failures

キャッシュ ドライブで障害が発生すると、まだステージング解除されていない書き込みはすべてローカル サーバーから失われ、(他のサーバー上の) 他のコピーだけが存在する状態になります。When a cache drive fails, any writes which have not yet been de-staged are lost to the local server, meaning they exist only on the other copies (in other servers). 他のドライブで障害が発生した場合と同じように、記憶域スペースは、残っているコピーを参照して自動的に回復します。Just like after any other drive failure, Storage Spaces can and does automatically recover by consulting the surviving copies.

失われたキャッシュ ドライブにバインドされている容量ドライブは、短時間だけ異常状態として表示されます。For a brief period, the capacity drives which were bound to the lost cache drive will appear unhealthy. キャッシュの再バインドが行われ (自動)、データの修復が完了すると (自動)、再び正常として表示されます。Once the cache rebinding has occurred (automatic) and the data repair has completed (automatic), they will resume showing as healthy.

このシナリオは、パフォーマンスを維持するためにはサーバーごとに少なくとも 2 台のキャッシュ ドライブが必要であることを示しています。This scenario is why at minimum two cache drives are required per server to preserve performance.

Handling-Failure

その後、他のドライブを交換する場合と同じようにキャッシュ ドライブを交換できます。You can then replace the cache drive just like any other drive replacement.

注意

拡張カード (AIC) または M.2 フォーム ファクターの NVMe を安全に交換するには、電源を切る必要があることがあります。You may need to power down to safely replace NVMe that is Add-In Card (AIC) or M.2 form factor.

他のキャッシュとの関係Relationship to other caches

Windows ソフトウェア定義記憶域スタックには、関連のない他のキャッシュがいくつかあります。There are several other unrelated caches in the Windows software-defined storage stack. 例として、記憶域スペースのライト バック キャッシュや、クラスターの共有ボリューム (CSV) のメモリ内読み取りキャッシュがあります。Examples include the Storage Spaces write-back cache and the Cluster Shared Volume (CSV) in-memory read cache.

記憶域スペース ダイレクトでは、記憶域スペースのライト バック キャッシュは既定の動作から変更しないでください。With Storage Spaces Direct, the Storage Spaces write-back cache should not be modified from its default behavior. たとえば、New-Volume コマンドレットの -WriteCacheSize などのパラメーターは使わないでください。For example, parameters such as -WriteCacheSize on the New-Volume cmdlet should not be used.

CSV のキャッシュを使うかどうかは任意に選択できます。You may choose to use the CSV cache, or not – it's up to you. 記憶域スペース ダイレクトでは既定でオフになっていますが、このトピックで説明している新しいキャッシュと競合することはありません。It is off by default in Storage Spaces Direct, but it does not conflict with the new cache described in this topic in any way. 特定のシナリオでは、効果的なパフォーマンスの向上を見込める可能性があります。In certain scenarios it can provide valuable performance gains. 詳しくは、CSV キャッシュを有効にする方法に関する記事をご覧ください。For more information, see How to Enable CSV Cache.

手動構成Manual configuration

ほとんどの展開では、手動構成は必要ありません。For most deployments, manual configuration is not required. これが必要な場合は、次のセクションを参照してください。In case you do need it, see the following sections.

セットアップ後にキャッシュデバイスモデルを変更する必要がある場合は、「ヘルスサービスの概要」で説明されているように、ヘルスサービスのサポートコンポーネントに関するドキュメントを編集してください。If you need to make changes to the cache device model after setup, edit the Health Service's Support Components Document, as described in Health Service overview.

キャッシュ ドライブ モデルの指定Specify cache drive model

すべて NVMe やすべて SSD の展開のようにすべてのドライブが同じ種類の展開では、書き込みに対する耐久性などの特性について、同じ種類のドライブ間の違いを Windows で自動的に識別することができないため、キャッシュは構成されません。In deployments where all drives are of the same type, such as all-NVMe or all-SSD deployments, no cache is configured because Windows cannot distinguish characteristics like write endurance automatically among drives of the same type.

耐久性の高いドライブを使って同じ種類の耐久性の低いドライブをキャッシュするには、Enable-ClusterS2D コマンドレットの -CacheDeviceModel パラメーターに、キャッシュとして使用するドライブ モデルを指定します。To use higher-endurance drives to cache for lower-endurance drives of the same type, you can specify which drive model to use with the -CacheDeviceModel parameter of the Enable-ClusterS2D cmdlet. 記憶域スペース ダイレクトを有効にすると、そのモデルのすべてのドライブがキャッシュとして使用されます。Once Storage Spaces Direct is enabled, all drives of that model will be used for caching.

ヒント

モデルの文字列は、Get-PhysicalDisk の出力に表示された文字列と一致させる必要があります。Be sure to match the model string exactly as it appears in the output of Get-PhysicalDisk.

Example

まず、物理ディスクの一覧を取得します。First, get a list of physical disks:

Get-PhysicalDisk | Group Model -NoElement

次に出力の例を示します。Here's some example output:

Count Name
----- ----
    8 FABRIKAM NVME-1710
   16 CONTOSO NVME-1520

次に、キャッシュデバイスモデルを指定して、次のコマンドを入力します。Then enter the following command, specifying the cache device model:

Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"

意図したドライブがキャッシュとして使用されていることを確かめるには、PowerShell で Get-PhysicalDisk を実行し、Usage プロパティが "Journal" になっていることを確認します。You can verify that the drives you intended are being used for caching by running Get-PhysicalDisk in PowerShell and verifying that their Usage property says "Journal".

手動展開で使用できる組み合わせManual deployment possibilities

手動構成では、次のような組み合わせの展開が可能になります。Manual configuration enables the following deployment possibilities:

Exotic-Deployment-Possibilities

キャッシュ動作の設定Set cache behavior

キャッシュの既定の動作はオーバーライドできます。It is possible to override the default behavior of the cache. たとえば、オールフラッシュ展開でも読み取りをキャッシュするように設定することができます。For example, you can set it to cache reads even in an all-flash deployment. ただし、既定の動作がワークロードに適していないことが確かでない限り、動作を変更することはお勧めしません。We discourage modifying the behavior unless you are certain the default does not suit your workload.

動作をオーバーライドするには、 ClusterStorageSpacesDirectコマンドレットと、その -cachemodessdパラメーターと -cachemodehddパラメーターを使用します。To override the behavior, use Set-ClusterStorageSpacesDirect cmdlet and its -CacheModeSSD and -CacheModeHDD parameters. CacheModeSSD パラメーターは、ソリッドステート ドライブをキャッシュする場合のキャッシュ動作を設定します。The CacheModeSSD parameter sets the cache behavior when caching for solid-state drives. CacheModeHDD パラメーターは、ハード ディスク ドライブをキャッシュする場合のキャッシュ動作を設定します。The CacheModeHDD parameter sets cache behavior when caching for hard disk drives. これは、記憶域スペース ダイレクトを有効にした後であればいつでも実行できます。This can be done at any time after Storage Spaces Direct is enabled.

ClusterStorageSpacesDirectを使用して、動作が設定されていることを確認できます。You can use Get-ClusterStorageSpacesDirect to verify the behavior is set.

Example

まず、記憶域スペースダイレクトの設定を取得します。First, get the Storage Spaces Direct settings:

Get-ClusterStorageSpacesDirect

次に出力の例を示します。Here's some example output:

CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly

その後、次の手順を実行します。Then, do the following:

Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite

Get-ClusterS2D

次に出力の例を示します。Here's some example output:

CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite

キャッシュのサイズの設定Sizing the cache

キャッシュは、アプリケーションやワークロードのワーキング セット (任意の時点でアクティブに読み取られているデータまたは書き込まれているデータ) を格納できるサイズに設定する必要があります。The cache should be sized to accommodate the working set (the data being actively read or written at any given time) of your applications and workloads.

これは、ハード ディスク ドライブを含むハイブリッド展開で特に重要になります。This is especially important in hybrid deployments with hard disk drives. アクティブなワーキング セットがキャッシュのサイズを超過した場合、またはアクティブなワーキング セットの変動が激しい場合、読み取りではキャッシュ ミスが増加し、書き込みではより積極的なステージング解除が必要となり、全体のパフォーマンスが低下します。If the active working set exceeds the size of the cache, or if the active working set drifts too quickly, read cache misses will increase and writes will need to be de-staged more aggressively, hurting overall performance.

Windows の組み込みのパフォーマンス モニター (PerfMon.exe) ユーティリティを使うと、キャッシュ ミスの割合を調べることができます。You can use the built-in Performance Monitor (PerfMon.exe) utility in Windows to inspect the rate of cache misses. 具体的には、Cluster Storage Hybrid Disk カウンター セットの Cache Miss Reads/sec を、展開の全体の読み取り IOPS と比較します。Specifically, you can compare the Cache Miss Reads/sec from the Cluster Storage Hybrid Disk counter set to the overall read IOPS of your deployment. 各 "Hybrid Disk" は 1 台の容量ドライブに対応します。Each "Hybrid Disk" corresponds to one capacity drive.

たとえば、2 台のキャッシュ ドライブが 4 台の容量ドライブにバインドされている場合、サーバーごとに 4 つの "Hybrid Disk" オブジェクト インスタンスが存在することになります。For example, 2 cache drives bound to 4 capacity drives results in 4 "Hybrid Disk" object instances per server.

Performance-Monitor

普遍的な規則ではありませんが、読み取りのキャッシュ ミスが多すぎる場合は、キャッシュのサイズが不足している可能性があるため、キャッシュ ドライブを追加してキャッシュを拡張することを検討してください。There is no universal rule, but if too many reads are missing the cache, it may be undersized and you should consider adding cache drives to expand your cache. キャッシュ ドライブや容量ドライブは、いつでも個別に追加できます。You can add cache drives or capacity drives independently whenever you want.

関連項目See also