Virtualizing high performance SQL - VMFS or RDMs?
If you are considering virtualizing SQL, check out a great post from vm0.blogspot.com. Running SQL Server on ESX makes some great suggestions for planning CPU, RAM, and Disk I/O to allow for the highest performance possible of your database virtual machines (VM).
The section on disk I/O made me think - specifically about whether creating RDMs to raw disks was really a better choice than carefully planning VMFS LUNs. There is just too much convenience with using VMFS in my opinion, and I’ve never really been convinced that any report or testing has proven RDMs offer better performance than carefully planned VMFS. So, instead of a long comment on the vm0 post I decided to blog about it here at VM /ETC.
Be sure to read the entire post for the RAM and CPU recommendations, but here is the section that inspired me:
“I/O
I/O is by and large the biggest concern
when running a database on an ESX cluster. Your main concern here is
going to be ensuring that your database files are not impacted by I/O
operations on your other VMs. We can ensure this through Raw Device
Mappings.Generally, for a high-performance database, you’ll want your data files, log files, and program/OS/backup files totempdb all live on separate spindles. To accomplish this, we do the following:
Data Files - RAID5 or RAID10 (RAID5 is more economical but you will suffer a hit on write performance).
Log Files - RAID10
TempDB - RAID10
OS/Program Files/Backup/File Share - This can be run from a standard VMDK.”
But do you really need RDMs? What about multiple, but dedicated and separate LUNS on the same, larger RAID5 or RAID10 arrays? Give the SQL server it’s own separate VMFS LUNs to spread out .vmdks across. The multiple .vmdks controlled by different virtual SCSI adapters combined with the fact that each LUN has it’s own I/O queue should provide for more than sufficient I/O performance. Add as many disks as possible to the larger arrays so you increase your spindle count.
Sure, if you have such a big data warehouse that tweaking the .vmdks and VMFS as described above won’t help it then probably the next best thing to do would be to dedicate an entire ESX host just for that “monster SQL VM”. Actually, dedicate 2 ESX hosts so you can have a “Monster SQL VM ESX Cluster”. You’d be looking at spending the cash for a multi-node physical cluster anyways, right? This way you get the mobility and conveninence of VMotion and all the administrative benefits of a VM.
As always, I ask, YOU, the vmetc.com readers to chime in with your opinions, preferences, and experience with heavy I/O virtual infrastructure design.









