In short, on Windows 11 Pro for Workstations, neither of the two approaches you’re trying gives you a reliably observable “SSD cache tier” in the way Storage Spaces Direct (S2D) does on Windows Server. What you’re seeing (FootprintOnPool staying at 0, WriteCacheUsedSize not moving) is consistent with the client Storage Spaces stack not behaving like a true write-back caching system with SSD consumption counters.
There are three separate mechanisms that often get conflated and it looks like your configs are mixing them in a way that makes verification impractical.
Tiered storage (StorageTier + New-VirtualDisk -StorageTiers) is not a cache. It is placement-based allocation. Data is written into tiers based on slab allocation decisions, not continuously promoted/demoted like S2D. On Windows 11, tier usage is often static after initial allocation, so small random writes may not show any “movement” in SSD footprint counters because nothing is being re-tiered at runtime. Once space is allocated, it tends to stay allocated unless you force optimization.
- Journal / Usage - Journal is not a general write cache, but rather a metadata journal designed to improve resiliency and reduce write amplification during metadata operations, not to absorb bulk file writes. So your SSDs can be “working” while showing almost no visible capacity change or write-cache metrics moving.
WriteCacheSize on a virtual disk in client Storage Spaces is also not a true persistent SSD cache layer. It is a hint for system write-back buffering, and its behavior is heavily dependent on workload, idle time, and flush policies. It often won’t show measurable SSD consumption the way you expect from S2D cache devices.
The key issue is expecting Windows 11 Storage Spaces to behave like Storage Spaces Direct with an explicit cache device model. That model (HDD + SSD cache devices with write-back + write-through + hot/cold tiers) is a Server feature and is tied to S2D’s clustered storage stack. AFAIK, the proper cache tiering logic is not present in client SKU Storage Spaces.
Regarding tiered vs journal vs both - on Windows 11, only tiering is meaningfully “real,” but it is not dynamic caching, and journal is not a usable performance tier. Combining them does not create a hybrid cache system - it creates two independent and mostly non-interacting mechanisms.
In your testing, small random writes may be absorbed by NTFS cache (system memory), not Storage Spaces. SSD tier allocation happens at provisioning/optimization time, not per-write. FootprintOnPool is not a real-time cache usage metric in client Storage Spaces. Write-back caching may be too small or flushed too quickly to observe. If you want to verify what is actually happening, the only reliable signals on Windows 11 are indirect.
Check actual physical disk I/O counters per SSD using Performance Monitor (Avg. Disk sec/Write, Disk Writes/sec). If SSDs are involved, you will see I/O even if Storage Spaces counters don’t move.
Force tier optimization and then inspect allocation rather than runtime footprint. Client Storage Spaces often only commits tier placement during optimization cycles, not continuously.
Check whether NTFS is absorbing writes first by comparing write rates at volume vs physical disk level. If volume writes are high but SSD/HDD disks show nothing, you are seeing OS-level caching, not Storage Spaces caching.
So unfortunately what you are trying to build (true SSD write cache in front of HDD parity using Storage Spaces on Windows 11) is not truly supported in a measurable way. It will likely behave either like static tiered allocation or like passive journal acceleration, but not like S2D-style caching with visible SSD footprint movement under workload.
You'd effectively need to use Windows Server with S2D, a hardware RAID controller with write-back cache, or a filesystem-level cache layer...
If the above response helps answer your question, remember to "Accept Answer" so that others in the community facing similar issues can easily find the solution. Your contribution is highly appreciated.
hth
Marcin