Return to

NVME bcache backed up by SATA array - realistic or a pipe dream?


I’m about to do a major hardware upgrade after 7 years on the same system and want to ensure I get the most bang for the buck.

I’ve never used bcache before and have been doing some research. I have a background in enterprise storage and have seen many production setups of SSD’s backed by SATA arrays providing screaming performance for many workloads.

I’ve been using Linux as my sole desktop for about 10 years, and will, of course, be sticking with it. What I would like to do is have an attempt at GPU Passthrough to expand some of my gaming options.

My thoughts are to create a RAID 1 array from two 6TB SATA drives for redundancy, add in a 1TB NVME M.2 SSD, and use this as the caching device, with all of my partitions residing on the SATA drives

Does anyone have enough real-world experience with bcache to comment if this is a viable setup for a desktop system?

Having an older system is going to mean even an upgrade gone wrong will provide a performance improvement over what I have, so I’m cautious of going down this route, seeing the bump from the new components, but missing out on extra gains that are possible with a different or sub-optimal config, but settling for it anyway because it will be better than what I have…

Thanks for taking the time to read my post!


I don’t see why it’s not doable. bcache only needs a block device.

I’d say it’s worth trying. You could try it with loop devices if you don’t have the hardware on hand yet.


Seems like you could experiment a little using your existing hardware and a SATA SSD as bcache backed by HDD mirror? Maybe only using small partitions? Should provide proof of concept anyway.


Yes, it’s viable. I’ve done several workstations using it.

For funsies, I’ve also got a few servers with RAID1 NVMe caching devices using RAID1 SATA backing devices.

Stability wise, I’ve never run into a software issue, but recovering from a failed drive can be… not fun. Standard “have backups” disclaimer.

Disk images for KVM don’t benefit much from bcache, but smaller more numerous files typical for workstation use cases benefit quite a bit. Docker builds and large git checkouts specifically seem to benefit a lot.

For the best bang for your buck, there’s no reason to allocate the entire SSD to act as cache. Create a partition (120GB, perhaps) to act as the caching device, and use the rest of the space as a typical SSD filesystem. I’ve not noticed any meaningful performance impact from allocating more space, but I’ve seen benefits using as little as 16GB caching devices on 2TB arrays.