Get-S2DCacheTierInfo¶
Analyzes the S2D cache tier configuration, classifies cache vs capacity disks, computes the cache-to-capacity ratio, and detects all-flash software cache configurations.
Syntax¶
Parameters¶
| Parameter | Type | Description |
|---|---|---|
-CimSession |
CimSession |
Override the module session CimSession. |
Output¶
Returns S2DCacheTier — a single object describing the cache tier.
| Property | Type | Description |
|---|---|---|
CacheMode |
string |
ReadWrite, ReadOnly, WriteOnly, or No Cache |
IsAllFlash |
bool |
$true when no HDD or Unknown media types are present |
SoftwareCacheEnabled |
bool |
$true on all-flash clusters (software write-back cache) |
CacheDiskCount |
int |
Number of physical cache disks identified |
CacheDiskModel |
string |
Most common cache disk model |
CacheDiskSize |
S2DCapacity |
Largest cache disk size (TiB + TB) |
CacheToCapacityRatio |
double |
Cache disk count ÷ capacity disk count |
CacheState |
string |
Active, Degraded, or None |
WriteCacheSizeBytes |
int64 |
Write cache size from ClusterS2D settings |
Cache Architecture Modes¶
Hybrid (NVMe/SSD over HDD)¶
The classic S2D cache configuration: faster media (NVMe or SSD) serves as a read/write cache for slower capacity drives (SSD or HDD). S2DCartographer identifies cache disks by Usage = Journal or by being the highest-ranked media type in the pool.
CacheMode: ReadWrite
IsAllFlash: False
CacheDiskCount: 2 (per node × 4 nodes = 8 total)
CacheToCapacityRatio: 0.5
All-Flash / All-NVMe¶
When all drives are NVMe or SSD, S2D does not use a physical cache/capacity split. Instead, it enables a software write-back cache across all drives. S2DCartographer detects this automatically:
IsAllFlash = $true— no HDD or Unknown media foundSoftwareCacheEnabled = $true— set fromClusterS2D.CacheEnabledor forced when all-flash is detectedCacheDiskCount = 0— no dedicated cache devices
All-NVMe is the Azure Local default
Most Azure Local HCI configurations validated by Microsoft use all-NVMe drives. On these clusters, the software write-back cache is the only cache mechanism — Get-S2DCacheTierInfo will report IsAllFlash = $true and SoftwareCacheEnabled = $true with no physical cache disks.
CacheState Values¶
| State | Meaning |
|---|---|
Active |
All cache disks are healthy, or software cache is enabled |
Degraded |
One or more cache disks are in a non-Healthy state |
None |
No cache tier and no software cache detected |
A Degraded cache tier dramatically reduces write performance and may increase the risk of data loss if the cluster sustains additional failures. The CacheTierHealth check in Get-S2DHealthStatus flags this as a warning.
CIM Sources¶
Get-PhysicalDisk # disk classification (media type, Usage)
Get-ClusterS2D # software cache settings (CacheEnabled, CacheMode)
The function reuses physical disk data from $Script:S2DSession.CollectedData['PhysicalDisks'] when available, avoiding a redundant Get-PhysicalDisk query.
Session Behavior¶
Results are cached in $Script:S2DSession.CollectedData['CacheTier']. Get-S2DHealthStatus reads from this cache for the CacheTierHealth check.
Examples¶
# Cache tier summary
Get-S2DCacheTierInfo | Select-Object CacheMode, IsAllFlash, SoftwareCacheEnabled, CacheDiskCount, CacheState
# All-NVMe check
$cache = Get-S2DCacheTierInfo
if ($cache.IsAllFlash) {
"All-flash cluster. Software cache: $($cache.SoftwareCacheEnabled)"
} else {
"Hybrid cluster. Cache disks: $($cache.CacheDiskCount), ratio: $($cache.CacheToCapacityRatio):1"
}
# Cache disk inventory
Get-S2DPhysicalDiskInventory | Where-Object Role -eq 'Cache' | Format-Table NodeName, FriendlyName, Size, HealthStatus
Troubleshooting¶
CacheDiskCount is 0 on a hybrid cluster
If you expect physical cache disks but see CacheDiskCount = 0, the cache disks may not be classified correctly. Check that Get-S2DPhysicalDiskInventory shows some disks with Role = Cache or Usage = Journal.
On all-NVMe clusters this is expected — CacheDiskCount = 0 with SoftwareCacheEnabled = $true is correct.
WriteCacheSizeBytes is 0
WriteCacheSizeBytes is sourced from Get-ClusterS2D. On clusters where Get-ClusterS2D is unavailable (e.g., non-domain-joined management machines without RSAT), this property will be 0 even if the cluster has an active write cache. The IsAllFlash and CacheState properties are still computed from disk data.