67

I would like to use a (small) SSD disk as a cache for a large hard disk. I realize there are hardware-based products that do this: HighPoint RocketHybrid HBA, Intel SmartResponse and others. There is only one software-only product that I could find: ExpressCache by Diskeeper:

ExpressCache intelligently and automatically combines the best attributes of SSDs and HDDs without any effort or pre-requisite knowledge from the user, so users get the best of both worlds; dynamic performance and scalable capacity. Since SSDs as small as 4GB can be used, it provides an incredibly affordable solution for manufacturers.

Comprised of User mode and Kernel Mode components, ExpressCache uses the SSD as an intelligent cache, coupled with an HDD, to improve overall system performance and greatly speed up Windows PC startup, application launches and data access speed.

However, this product is OEM only!

I looked for alternatives, without any success... I cannot understand this: It sounds like a great idea, no additional hardware is needed, and it could really boost the disk performance without spending a fortune.

So, I'm asking if anyone knows any software that does this, either for Windows or Linux. Or if you think this is a bad idea, I'd like to know why.

Note: ReadyBoost is not really suitable for this. It is built with the assumption that disk writes are really expensive, has very little effect on systems with plenty of RAM, and does not scale properly if your SSD is 100GB+.

1
  • PrimoCache (for Windows) can do this; it specializes in using RAM as a cache, but can use an SSD partition as L2 cache -- I do not believe it's limited in size, and it says it can speed up boot times even (assuming you're using an SSD and not just RAM). Oct 27, 2014 at 3:43

10 Answers 10

62
+100

There are several ways to use an SSD as a cache for your regular hard drive. This is not a new idea, and already has several implementations.

In Windows:

The best implementation is by NVelo: Dataplex - It has read caching and optional write caching. Unfortunately, like ExpressCache it is available to OEMs only. The cheapest way to get it is to buy an OCZ SSD which packages a PCIE adapter with a small SSD and uses the dataplex software to cache your existing harddrive.

There are however, pure software implementations too: FancyCache - It works like you might expect performing read and write caching at the block layer. It primarily exists as a memory cache, but recently has gained support for a second layer SSD cache (a bit like the ZFS L2ARC), which can be arbitrarily large.

If you are just looking to max out on IOPS at the cost of write durability (perfectly fine in conjunction with a UPS for example), an alternative might be something like: SuperCache - This will use RAM only, no SSD. But unlike the others, will happily exceed 100,000 IOPS on commodity hardware. Very useful for caching the block device containing database indexes for example. Essentially giving RAM-Disk like performance for any sized volume (assuming the underlying device can keep up with the write volume).

In Linux, things are a bit nicer:

As a previous poster mentioned, you have Flashcache - It works rather well, but its performance varies greatly with your workload. In many cases with poor access locality it will not perform as well as you might expect. Not sure why that is, but for most workloads this is a great option.

The best option (though the code is still not quite "production ready") is bcache (more information here, though some of if is outdated) - It has the best performance of any SSD cache I have yet tried, and unlike all the other options mentioned supports caching multiple block devices on a single cache. It also supports (though I haven't personally tried this, it may not work yet) multiple cache devices, so you can use multiple cheaper SSDs for maximising your IOPS. The code is in a git repository: git://evilpiepirate.org/~kent/linux-bcache.git. There is talk of merging it into the next kernel release, though it hasn't yet been decided for sure.

Personally I find the best performing option is bcache (my workload is mostly database related, though I also cache my main laptop in its entirety). In my experience the sequential write throughput of the HDD is often the bottleneck, as the cache fills up fast and the HDD needs to write the cached sectors, so the faster the better. This is of course for a write heavy workload, in a more balanced read-write workload things will likely be different.

I should also warn you, that at full speed, you will burn through the write limits of your SSD fairly quickly. I'm currently on my third OCZ Vertex 3. SSDs though very very fast, are simply not very durable, so expect to replace them every few months.

14
  • 2
    Thank you for the great answer! As for the "burnout" rate, I think now this is the main reason most of these products are OEM-only, e.g. OCZ Synapse (Cache SSD bundled with Dataplex) is 50% overprovisioned...
    – haimg
    Feb 22, 2012 at 20:29
  • 2
    @Supercilious Why not just use an SLC or eMLC SSD? That must be more efficient (and certainly more dependable) than frequent replacement of unreliable MLC flash. May 23, 2012 at 3:12
  • 6
    @Supercilious This is where you're losing me. Slightly greater longevity? The longevity of SLC and eMLC flash is orders of magnitude greater, not slightly greater. May 24, 2012 at 0:12
  • 1
    @Firebug I have been inactive on stack for some time, but the answer I posted stands. While the newer SSDs offer much higher write endurance, they still fail quite quickly. In my machines (mainly HP DL360 G9 + some Lenovo) I burn through dozens of SSDs for every single mechanical SAS or SATA drive. In 2017 I averaged a lifespan of 8 months from my Samsung SM863a SSDs which are the best ones I have found. This is completely fine and totally worth the cost for my workload, but its worth bearing in mind and constant write activity will kill any SSD within a year. Jan 8, 2018 at 16:01
  • 1
    @Firebug Yes all the heavy lifting is done on my servers (mostly HP DL360 Gen9), and the workload is 30%/70% read/write and the SSDs are basically being hammered 24/7 at around 300-350MB/s with rare peaks over 500MB/s. All I/O is random with a 64KB block size and occassional bulk TRIMs of the entire SSD. Under desktop use it would take years to kill these datacentre SSDs but consumer SSDs have 180-300TB TBW which is still quite low IMO. Jan 9, 2018 at 8:49
10

There is a very interesting piece of software for Linux, in use by very busy servers:

https://github.com/facebook/flashcache

On a SATAII, 8 magnetic rotational drives in a RAID6 setup I get serious performance boost. Random read with SATAIII flashcache SSD device (540 read, 420 write) saturates my SATAII bus to almost 90-95% - I have 280MB read (in peak times), 270MB write (only in simulated load... never reached in production). It lasts for about a half year now. The disk drive writes are... 20-30MB/s - use spare I/O time...

7

How large your SSD is?

Probably the best effect you'll achieve by installing the entire OS and software on SSD, while storing bulks of data on your HDD.

If your SSD is small, then it could be useful to put a pagefile on it. I doubt Windows will put much of your files to cache, but, at least, it will allow you to have recent-used applications memory and files cache in RAM, while allowing for fast switching to not-so-recent used applications (which will reside in pagefile which is, in turn, on SSD).

4
  • 1
    My SSD is 120GB. While this is enough for a working set or cache, it is definitely not enough to host all my system files + apps. Secondly, I don't want to keep, say, MSSDK sample code (read seldom) on SSD and my own code which gets accessed 100 times a day, on disk. Moreover, I'd need two SSDs for RAID -- I never trust my data to just one disk, be it magnetic or solid state...
    – haimg
    Feb 15, 2012 at 16:24
  • 3
    You can use symbolic links and move MSSDK / Windows installer cache / etc to your hard drive (while having symbolic links pointing to new locations from the required paths on your system drive); and put your own code on SSD (the portion of it that needs fast random access). And using a backups would probably be better solution than to rely on RAID.
    – penartur
    Feb 16, 2012 at 4:15
  • 4
    +1 for this solution. Actually using an SSD will yield far better performance. There's unlikely to be significant benefit from yet another level of cache whereas using an SSD for your system partition will.
    – Jesse
    Feb 22, 2012 at 19:05
  • 1
    I'm using ssd for system files and hdd for home folder. I've noticed that hdd is a bottle neck then you need to read a lot of files from it, f.e. fire fox first start after boot.
    – aisbaa
    Feb 17, 2013 at 8:45
3

FancyFlash did the job. I have my own Hyper-V R2 server @home for my labs and I got a OCZ Revo Hybrid PCIe drive. Unfortunatly, the build in cache driver only works with Windows 7. No plan for Windows Server 2008 R2. So I installed the FancyFlash driver on my Hyper-V Host and configure my SSD on Revo Hybrid to act as cache for the 1tb embedded disk (where my VHD are). TaDa! Works and accelerate my VMs a lot! :)

I hope the final release will be affordable $$$...

2
  • 3
    Do you have a link for this software?
    – haimg
    Jun 13, 2012 at 15:14
  • I wonder if he meant "FancyCache" (now known as PrimoCache)? -- It was in beta (and the final price unknown) about the time this answer was posted (IIRC). But it's been two years and he has a 21 point score, so I doubt he'll ever log in again and tell us. :-/ Oct 27, 2014 at 4:05
2

eBoostr is an application that caches large parts of regularly used applications in order to speed up your system. Typically it is meant to use USB drives or unused RAM but there is no real reason you can't use an SSD instead.

It is available for all major versions of Windows and sounds a lot like what you are after.

  • eBoostr tracks the use of applications on your system and can pre-cache data of the ones most frequently used, this reduces load delays and optimizes performance
  • Easy to use drag-and-drop interface allows you to selectively enhance applications on your system as well as prioritize applications enhanced by eBoostr
  • Reduced load times and less hard drive access help prolong battery life of laptops and netbooks using eBoostr

Read more: http://www.eboostr.com/feature

2

While it is certainly possible to load an entire operating system and applications on a single SSD, you probably shouldn't. Over time, SSDs slow down by continuous re-writing and should be "refreshed" to speed them back up. You are better off using the fastest hard disk you can find, such as a SATA 600 Gbps drive and get a motherboard or other controller that supports SSD caching at the hardware level. The Asus ROG Maximus motherboards all support this function built-in.

However, until I build this new system, I have found a way to gain some benefit from an SSD. I built a memory cache on the SSD and even though there is one on my main hard drive, Windows seems to automatically use the faster SSD instead. I also moved all of my Internet Explorer cache to the SSD, which has sped up surfing and internet video at least 2 or 3 times.

I will be building my new system around the Asus Maximus VI Hero motherboard with a 4th generation Intel i7 processor in the 1150 socket format. Seems to be a good level of performance without spending thousands to get there. Total cost is projected to be in the $800-900 range, to include a new version of Windows.

2

One can use the Windows I/O technologies of ReadyDrive and ReadyBoost. Because these technologies date from before SSDs were introduced, there is little information on whether they do work with SSD or how well.

For ReadyBoost, see some hint on How can I use my SSD as a ReadyBoost cache disk?, although this other thread claims the opposite.

ReadyDrive is a feature of Windows Vista that enables Windows Vista or later computers equipped with a hybrid drive or other Flash memory caches (such as Intel Turbo Memory) to boot up faster and resume from hibernation in less time.

One can also put the page file on the SSD, although with limited expected improvement if your system memory is sufficient.

The best improvement will come, as remarked by penartur, from installing Windows on the SSD.

1
  • 2
    SSD failure rate is significantly lower than traditional hard drives - it may once have been the other way around, but not at the time of this question and answer. There was a bunch of concern about SSD write-erase cycles a few years back and everybody seemed to temporarily forget that HDDs are extraordinarily fragile and fail regularly, often with no warning. The concern about write cycles is almost never an issue with modern wear-leveling, unless you are writing terabytes of data every week for several years. Sep 18, 2015 at 11:59
1

Download ExpressCache

Have you searched Google for ExpresCache? I can see one can download it from

  • SanDisk - link on the right; only works with SanDisk SSDs
  • Lenovo - link below in guide; could have hardware dependency as well

Especially at Lenovo, you can download an x86 or an x64 version. Sandisk seems to just offer ExpressCacheSetup.exe and I don't know which arhitecture it supports. Maybe one maybe both...

1
  • 2
    Both require hardware from the respective vendors. The software will not install correctly unless it passes the hardware checks.
    – Sun
    Nov 10, 2014 at 18:43
0

ExpressCache is an OEM product only. I am reasonably certain that it has internal controls preventing it from being used on hardware other than the licensed OEMs.

It seems that right now, FancyCache is the only viable tool for general use/non-oems. I may misunderstand things, but I would think that something like readyboost on an SSD would burn through its write cycles pretty fast. To me, the idea here is to only have one drive letter to cover the main HDD and the SSD, putting the most commonly accessed and generally static files on the SSD and storing the less commonly used and often modified files on the hard drive. This would give the performance benefit of an SSD and the long-term viability of a HDD and not require the user to have to be trying to balance space on the SSD with that of the HDD. The need for this is so obvious, at least to me, that I am stunned at the lack of solutions for this need.

-2

Not named here is VeloSSD. I can not give agood reputation to this software, since it wrecked my data ways to often, but other user reported it's working fine

1
  • 2
    Just adding a product name to a list of products isn't considered an answer, and this "glowing recommendation" isn't very useful. With a little more rep, you could post this as a comment.
    – fixer1234
    Oct 12, 2016 at 7:53

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .