Open Source Flash Cache?

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.

This article was originally published on August 31, 2011