Open Source Flash Cache?

Posted on August 31, 2011 By Jeffrey Layton

One of the big things I'm seeing in the storage world recently, is the use of flash storage as a cache for storage devices and/or file systems. Sometimes, you see this advertised as an "accelerator," such as a NAS accelerator or something similiar. But the surprising thing is that I don't see very much going on in the open source world, particuarly Linux.

You're starting to see this flash cache capability in a number of places, but it's not open source. Recently, Fusion-IO, bought a company named IOTurbine whose caching software will be integrated into Fusion-IO's ioMemory Virtual Storage Layer (VSL) that virtualizes memory and storage. The obvious target for this is using the Fuison-IO PCIe SSD as a ultra-fast cache for VM's.There are other examples as well.

In the Linux world, I'm aware of bcache and Flashcache, and I know there is some effort from the dm "team," but to be honest I see precious little coming out into the mainstream. None of these implementations are in the current kernel (as fas as I know), and there was some discussion on the fsdevel kernel mailing list a while ago about which approach was better and so on. However, maybe I missed some kernel traffic (the volume is staggering sometimes), but I don't see any general caching mechanism in the kernel.

Personally, I would like to have the generic ability to cache any block device (most likely storage block device) with another block device. This would allow me to create a flash-based block device (perhaps using RAID) and use it as a cache for a different block device such as my slow 7.2K 3TB drives in a RAID configuration. But I do know this is much harder than it looks, so I'll be patient like a dog waiting for his treat.

Using ultra-fast but fairly pricey SSD as a cache for slower but higher capacity and cheaper spinning disks, seems like a no-brainer. Let's hope the open-source world, specifically Linux, can catch up.