Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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+.

share|improve this question

9 Answers 9

up vote 31 down vote accepted
+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.

share|improve this answer
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 '12 at 20:29
    
@haimg Yeah the burnout rate is a bit abysmal at the moment. Hopefully this will improve with time, but still despite that, I think its well worth £120 every 3-6 months to go from around 120 to around 20,000 IOPS. As long as you backup frequently or simply preemptively replace the SSD every 3 months everything should be fine. Sadly the SMART data does not predict remaining lifetime at all (at least on OCZ SSDs), so be careful about trusting that. –  Supercilious Feb 22 '12 at 23:32
    
@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. –  Miles Erickson May 23 '12 at 3:12
    
@MilesErickson The current generation of SATA III SSDs are already fast enough at random IOs to saturate the bus, and significantly cheaper than the enterprise grade SSDs. There would be no advantage to the enterprise SSDs aside from slightly greater longevity, but I haven't calculated the IOPS/$ cost to compare them. –  Supercilious May 23 '12 at 6:38
4  
@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. –  Miles Erickson May 24 '12 at 0:12

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...

share|improve this answer

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).

share|improve this answer
    
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 '12 at 16:24
2  
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 '12 at 4:15
2  
+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 '12 at 19:05
    
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 '13 at 8:45

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. Although one should keep in mind that SSD failure-rate is much higher than traditional hard disks.

share|improve this answer

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 $$$...

share|improve this answer
1  
Do you have a link for this software? –  haimg Jun 13 '12 at 15:14

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

share|improve this answer

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.

share|improve this answer

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...

share|improve this answer

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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