Friday, January 4, 2013

Desktop virtualization and SSD

Ever since I started using virtualization software on my workstation, my disk subsystem has always been the bottleneck I struggled with the most. I have exhausted my desktop computer with all kinds of RAID setups, gotten bigger cabinets to hold more disks for better RAID performance, risked my behind with RAID0, used external RAID disks, and so on. Then along came SSD.


Welcome SSD

You are all aware of the fact that SSD disks have great performance compared to mechanical harddisks. A while back, I started using an SSD disk for my OS. I also got blown away by the speed of my virtual machines when I stored them on the SSD. But I only had room enough for a few VMs on the SSD, so after a while I moved my OS back to a mechanical disk, to free up some space for more VMs on my SSD. Yes, I am that much into virtualization, the performance of my VMs are more important than anything else I use my computer for.

However, the limited capacity of my 128GB SSD soon got filled up, as the disk files for my numerous VMs tend to grow huge. Getting more and bigger SSDs was not an option at this time.

Welcome, SSD caching

I looked into SSD caching, first by checking some of the hybrid disks available. I checked products from Seagate and Western Digital, and although the tests looked good, they only had 4 or 8 GB NAND cache. That wouldn't do, I wanted the option of cloning bigger disk files at high speed, so I needed bigger cache.
I checked out the OCZ RevoDrive Hybrid, but got turned off by the fact that it is Windows only, the cache control is software. I realized though, that I would have to settle for some software caching.

Flashcache on Linux

As I was running Linux Mint as my host OS, I started checking what options I had in the open source world. There are basically two options, Bcache and flashcache. I found enough references and test results to decide to go for flashcache. Installation of flashcache was rather easy, and following the guide, I managed to establish an SSD cache for my mechanical data disk, using the full capacity of the SSD. To get as much performance as possible, I configured flashcache with writeback caching, and adjusted my backup routines to make sure I was safe.

The results where great, although I didn't run any tests or measurements, I just started using it. But I must say, it felt like having my VMs stored directly on SSD. This is probably due to the fact that the 128GB capacity of the SSD was enough to keep most of the VMs I worked on daily, inside the cache. It was great not having to move around my VMs as before, to make sure the most disk intensive was stored on SSD.

Intel Smart Response on Windows

At one point, I changed from Linux to Windows on my workstation, and I had to find another way of doing SSD caching. The choice was easy, as my computer has a Z68 chipset, which made it possible to use Intel Smart Response technology. Even though this limits me to use only 64GB of the SSD for caching, it has the distinct advantage of no license expenses.
Again, I was happy with the result. It was very stable, and fast. I utilized the 64GB leftover of the disk to store my most used master disks, and my overall experience was that this solution is just as fast as flashcache on Linux, in daily usage, even though the cache is smaller.

Other options

There are other solutions available than what I have used. I should mention VeloBit, that even makes SSD caching software for VMware ESXi, as well as Windows and Linux. Their free version only gives you 32GB cache size, so I haven't bothered trying it, but I would love to hear from anyone who did, especially on Linux.

Conclusion

I highly recommend looking into SSD caching of your mechanical disks, to improve the performance of your disk intensive VMs.