Is it necessary to have RAID in a virtual machine?

Generally no, this is not a good thing to do.

Let your underlying storage do the RAID and don't add software RAID unless you have a compelling edge case, and even then you probably should reconsider your design. It will increase overhead, decrease performance, and not add a whole lot of benefit.

Software RAID has its place. That place isn't on top of hardware RAID.


Software RAID is really intended for use when you have multiple physical disks without an accompanying RAID capable HDD controller. If you have hardware RAID then I'm hard pressed to see where software RAID in addition to hardware RAID provides any benefit. To the contrary, software RAID on top of hardware RAID probably induces a performance hit on the disk subsystem.

There may be some edge cases where software RAID on top of hardware RAID provides some benefit, but I can't think of any at the moment. Furthermore, I'd be especially hard pressed to envision a scenario where using software RAID in a VM would provide any benefit... with or without underlying hardware RAID.

If you implement software RAID in your VM and the underlying non-RAID physical disk(s) fail, I'm hard pressed to see how the software RAID is helpful in this scenario.


Software RAID inside a VM is generally a bad idea:

  • it doubles the number of write requests that the host system must handle
  • it degrades read cache efficiency on the host (if the client requests the same data from a different disk, how could the host know that the data is already cached)
  • the configuration is more complex (e.g. when transferring the VM to another host, you need to copy and reconnect both virtual disks)

Your VMs should behave as dumb as possible, which is even dumber than the default: disable the I/O scheduler, just write all data to the virtual disks as quickly as possible. Optimizing the head movements of a virtual disk with a fake geometry is not going to give good results, and this gives the "real" I/O scheduler a better chance to optimize the entire system.

Ideally, use a hardware RAID solution, not because hardware RAID cards are better (they aren't), but because they have battery backed up drive caches, which allows transactions on journaled filesystems to go through as soon as the journal entry has been transferred to the controller, rather than written to disk. This gives a significant speed boost.


The purpose of a RAID is to manage your storage hardware. Your host system should certainly use some form of redundant storage, be it local RAID10, or RAID 5/6/Z on a SAN, etc. Since a VM doesn't store its data on actual hardware, you're wasting resources if you spend CPU doubling up storage onto things that are only going to do the same thing over again.

Of course, everything depends on what you're trying to achieve. If you're an OS developer and need to test RAID software in your kernel, then RAID in your VM is probably a good thing. :)

But for most folks, it's a better idea to keep your VMs as small and lean as possible. Remove unnecessary software (or even better, don't install it in the first place), use sparse filesystems for storage, and always make sure your HOST system has a spare drive handy in case one fails. (You're building RAID10. You don't need four disks. You need five, at least.)