Configuring RAID on a VM Host for best performance of multiple Virtual Machines

raidvirtual-machines

What is the best way to configure disks in a VMWare server that will be hosting multiple machines?

A single RAID 5 array hosting multiple VMs would provide good throughput but means all VMs are accessing the same disks (so one VM accessing the disk will delay another accessing the disk)

Skippig RAID and having a single VM per disk means the disk access will be slower in general (single disk speeds) but there will never be delays caused by another VM accessing the drives at the same time.

Best Answer

If all your VMs are sharing the same disks you'll get better overall throughput because your disk controller (and the disks themselves) should be able to reorder reads and writes. With a larger buffer depth, it will be able to reorder those reads and writes better. If your concern is that one VM will be doing a ton of disk access and slow down the other ones...well, you just need a hypervisor that supports quality of service and makes sure one VM doesn't starve another one (offhand, I think Solaris Containers allows this).

For the disk configuration, it depends on your workload. RAID5 performs badly if you're doing a lot of random writes (e.g. database). For sequential writes, or a workload that is mostly reads, you'll get better performance out of it. But the main downside to RAID5 arrays is their fragility - two disks fail and you lose everything. And those double failures happen more often than you'd think. Overall if you can afford it, RAID10 offers a better balance of performance and reliability.