I've been doing some reading and I have a feeling that the answer is "no", but before making an implementation decision that has the potential to haunt me for years:

Can you use SSDs as pure [write] cache in Windows 2012? For example, by setting -WriteCacheSize to the total size of the fast storage tier.

I have a reasonable amount of experience using ZFS but almost no experience with Windows storage pools, and ideally what I'm looking for from Win2012 is a cache attached to a pool, not tiered storage.

That seems to be impossible, as in a Win2012 tiered storage model a particular block of data is stored either on SSD or HDD. The SSD acts as a read cache only in the sense that frequently accessed data will be moved to the SSD tier. However the fast tier does act as a write cache.

Also, I'd need as many SSDs in the fast tier as there are HDDs in the normal tier. Is that correct? Or is it just as many SSDs as needed to achieve the same level of resiliency as the HDD tier?

Finally, I'm hoping that someone can help me understand the way the write cache is allocated across SSDs. Is the cache written across SSDs in the same resiliency mode as the volume?

My ideal configuration is something which ZFS offers: A 4x 64GB SSD mirror/stripe (~RAID10) read/write cache attached to a 8x 4TB single parity (~RAID5) pool.

Since my implementation is write-intensive, I would be OK with an SSD tier that is 100% allocated to the write cache with no SSD-backed "read cache". I believe this is achievable when setting up a volume in PS using New-VirtualDisk [..] –WriteCacheSize xxGB and setting the write cache size to 100% of the fast tier size. But knowing Windows I have a feeling that might cause steam to come out of the server.


It looks like what I want is to have dedicated journal disks. They will effectively act as a write cache, at least as far as my application is concerned.

This can be accomplished by adding one or more disks (preferably SSDs) as dedicated journal disks:

Add-PhysicalDisk -StoragePoolFriendlyName "<your storage pool name>" -PhysicalDisks <physical disk name> -Usage Journal

Note to those interested: I read that you cannot attach journal disks to a storage pool after a volume has been created. (More accurately you can, but the existing volume(s) won't use the new disks for journaling.)

To create a storage space with storage tiers, the virtual disk must use fixed provisioning, and the number of columns will be identical on both tiers (a four-column, two-way mirror with storage tiers would require eight solid-state drives and eight hard disk drives).

But, storage tiers are not relevant to my implementation, because: "When using Storage Tiers, Parity layouts are not supported." Really, MS? Kinda misses the point of the whole tiered thing, IMO.


In all cases, the metadata that gets placed on the journal drives must offer the same resiliency as the space with which they are associated. This means that for a parity space and 2 way mirror (each of which can tolerate single drive failure), you will need a minimum of two journal drives available. For a three way mirror (that can tolerate a 2 drive failure), you will need a minimum of 3 journal drives.

| improve this answer | |
  • Editorial: If the journal disks do use the same resiliency scheme as the data disks that's unbelievably stupid. Why would I want to incur a parity calculation on what is effectively a cache? I understand not just striping the journal as a single disk failure could cause loss of interstitial data, but the administrator should be able to set the resiliency level for the journal as they wish. I really hope I'm wrong about and it is possible, but I haven't seen any such option going through the PS commands. – s.co.tt Jul 11 '14 at 20:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.