The Problem
We have an issue with performance on an existing platform, so I'm turning to the hive mind for a second opinion on this. The performance issue so far relates to IOPS rather than throughput.
The Scenario
A blade centre of 16 hosts, each with 64GB of RAM. (It's a Dell M1000e w/ M610s, but that's probably not relevant) 500 VMs, all web servers (or associated web technologies such as MySQL, load balancers, etc), around 90% are Linux and the rest Windows. Hypervisor is VMWare vSphere. We need to provide host HA, so local storage is out. As such the hosts just have an SD card to boot.
A bit of background thinking
At the moment we are up to 6 hosts (the blade centre will be at full capacity in a years time at current growth) and we are running iSCSI to a Dell MD3220i w/ MD1220 for expansion.
Possible options we have considered, and immediate thoughts along with them:
- Spreading the VMs across NFS datastores, and running NFS storage that meets performance requirement for up to a given number of VMs. NFS seems cheaper to scale, as well as been abstracted a bit more than block level storage so we can move it around as needed.
- Adding more MD3220i controllers/targets. We are concerned though that doing this could have a negative effect somehow in how VMWare handles having lots of targets.
- Swapping all disks from Nearline SAS to SSD. This ought to entirely solve the IOPS issue, but has the obvious side effect of slashing our storage capacity. Also it's still very expensive.
- vSphere 5 has a storage appliance. We haven't researched this much, but it must work well?
The Question
What sort of storage would you run underneath all of that? It wouldn't need to scale to another blade centre, it would just need to provide relatively good performance for all of those VMs.
I'm not looking for "Buy SAN x because it's the best" answers. I'm looking for thoughts on the various SAN technologies (iSCSI, FC, FCoE, InfiniBand, NFS, etc), different types of storage (SATA, SAS, SSD), and methodologies for handling storage for 100s of VMs (Consolidation, Separation, Sharding, etc).
Absolutely any thoughts, links, guides, pointers etc are welcome on this. I'd also love to hear thoughts on the above options we'd already considered.
Many thanks in advance for any input!
Update 5th March '12
Some fantastic responses so far, thank you very much everyone!
Going by the responses to this question so far, I'm beginning to think the following route is the way:
- Tier the available storage to the VMWare cluster and place VM disks on suitable storage for their workloads.
- Potentially make use of a SAN that is able to manage the placement of data on to suitable storage automagically.
- Infiniband looks to be the most cost effective to get the required bandwidth with the hosts at full capacity.
It definitely sounds like it would be worth making use of the pre-sales services of a major SAN vendor to get their take on the scenario.
I'm going to continue to consider this problem for a while. In the mean time any more advise gratefully received!