RAID – To RAID or Not to RAID: SSDs and Virtualization

raidraid-0ssdvirtualizationwindows 7

I am approaching that time where my main PC has slowed enough due to Windows rot that I should probably reinstall. Instead of spending a week arm-wrestling, reinstalling and configuring only to find that I forgot to back up my Visual Studio settings yet again, I'm going to upgrade. I've already purchased all the parts and am in the process of benchmarking to find the best configuration.

I bought two Crucial M4 120GB SSDs (updated to latest firmware as of April '12: 00F) and have been running some quick benchmarks using CrystalDiskMark. Here are some results:

Single drive:

Single drive performance

RAID 0 via Intel Z77 chipset controller:

RAID 0

These benchmarks are obviously not exhaustive, but I think they give me a good idea of what to expect between various configurations.

My understanding is that for most common usage patterns, namely development with Visual Studio (my primary usage), 4K reads and writes are far more common, even during builds. Between RAID 0 and not, there's little difference. But with 512K and Sequential R/W, the differences are enough to merit attention.

The thing is, in order to avoid future rot issues – and, quite frankly, because I can – I'm going to be relying a lot more on virtualization. My plan is to segment different parts of my development environment into virtual machines using VMware Workstation: Visual Studio and accompanying tools on one, SQL Server on another, Adobe Design Suite on yet another, etc. By taking advantage of VM snapshots and the easy by which it is to create or clone new ones, I believe I'll see an improvement in long-term reliability (and only ever see Adobe update pop-ups when I want to).

So, my question is, does virtualization merit the usage of a RAID 0 SSD configuration over a traditional setup (in my case, OS and bare-metal apps on one SSD, VM's on the other)? Will virtualization take advantage of the 512K and Sequential R/W strengths of RAID 0?


An observation:

I've read that some modern SSDs are capable of managing garbage collection on their own, so not having TRIM is less of an issue. I don't know how to enable this on my SSDs or even see if they support it, however.


Edit:

Regarding disaster recovery, this system also has large standard platter drives for file storage and a secondary RAID controller that I'll eventually use in a mirrored array. Combined with nightly local backups, constant off-site backup via Carbonite and consistent off-site source control check-ins, I've got a sufficient means of preventing data loss.

Best Answer

First, compiling code is known to be largely CPU bound, so don't expect improvements over a single SSD there.

In your benchmark, although the 4k 0-queue depth performance does not increase, 4k 32-queue depth (QD32) does increase pretty much linearly. IMO, this result should drive your decision.

Even though workstations are not database servers with constantly large queue depths, queue depths of 2-20 are common at least in burst during semi-intensive workstation usage - in which cases the random IO will indeed improve with RAID 0. Considering that VM add a further layer of simultaneous OS activity (and you may end up using 2+ simultaneous VM eventually), I would think that this metric should improve things in your scenario.

You can monitor your current queue depth usage in windows's Performance Monitor (Add counter...Physical Disk...Avg Read/Write Queue Depth) to get an idea.

RAID does adds a layer of complexity (and backup/recovery issues), but having a larger 240gb partition is definitely a plus IMO. Do verify about any TRIM issues before using RAID with your drives - could be a show-stopper.

Related Question