I am considering to purchase off-the-shelf commodity hardware in order to build server that will host virtual machines using ESXi server.
Intended purpose for this server is NOT mission critical tasks. It will have to run perhaps 20-50 Windows XP/Vista/7 virtual machines (in total, but closer to 20 figure). Each guest would have to have 1-2 GB of ram, and probably two-three times more disk space than guest OS needs with clean install and all updates applied (that would be around 6-8 GB for XP, and i believe closer to 10-15 for win7). Those guests will act as a test ground for a new product that is network management software, thus guests will idle most of their time once initially loaded, but if I give them some task to complete, they should be able to perform reasonably well.
Now, from what I have learned... CPU is usually not much of an issue (6 cores would do it), memory should not be lacking, but doesn't have to be sum of all guests, because of overcommitment... That leads me to IO, which is, as it seems, the bottleneck.
Since I have very little experience with ESXi (and ESX, too) server, I'd like to ask:
- How much memory could I save by overcommitment, and how does it affect performance?
- Is 6-core cpu enough to run above described system?
- Would it be possible to run entire server off two (or even one) SSD drives (to host system virtual disks), with few additional HDDs (2-3) in RAID 0 to be used as secondary storage?
- I read somewhere that ESXi allows having something like "master image", essentially virtual machine that is "deployed" many times, so that disk space can be saved by having only differences stored by specific guests, instead of copying around whole virtual disks. Is this true, and how can this help me?
- Are there any other things I need to take into consideration when building this off-the-shelf solution?
I should probably mention here that I'm fully aware of issues like SPOF regarding power supply, raid 0, etc, but since it's only a testing ground and not a production system, it's not so important for me.
Thanks, B.
Hope this helps but you probably want to get a few people's opinions too - that's the benefit of this site - varied experiences :)
You should choose your hardware from the official VMWare HCL. This is the only way to guarantee compatibility.
You should never use RAID 0, use a 6 disk RAID 10 if you want performance close to a 3 disk RAID 0. Also, how heavily used will these VMs be? If they are going to be used heavily, you are nowhere near that hardware that you will need. Finally, the term you are looking for is "linked clone" which uses a master disk image as its base.
I would just like to add my experience that the biggest bottleneck I'm facing with virtualization is disk IO.
Since this kind of environment has a lot of simultaneous disk IO I would suggest the IO spread among as many disks as possible, and not any form of RAID0 variant (RAID10). You don't want a disk read from a single virtual machine to lock up all disks. This is also recommended for database-servers that does a lot of simultaneous read/writes.
This is even more important if you will over commit the memory, since it will start swapping stuff to disk when you over commit.
So preferably a lot of smaller disks with RAID1 or no redundancy at all if that's of no concern to you. Maybe a separate SAN or just a drive cabinet attached to your controller.
Also, since you will be doing mostly reads I assume, then a real hardware based RAID1 would be equally fast as a RAID0 since in a perfect world it would be able to read simultaneously from both drives, but not be able to share the write load. That is commonly foreseen when people start talking about performance RAID setups.
Yes VMware View is the best virtual desktop solution software out there that I know of and would probably be more appropriate for what you are talking about. Since you seem to be unclear about how many desktops you will use, 20 - 50, VMware View has a feature you will love. You can create your base image and set it to possibly deploy up to your 50 VMs. You may have your 20 created and then every one after that will be created almost on demand, with 1 being kept in a queue ready to go and then being replaced when it is deployed.
As far as hardware demands I usually see memory as the bottle neck. I use vFoglight to monitor a virtual environment and I see 90% plus alarms being fired off all the time from a host with ~15-20 server installs. If you are using a single host with that many VMs you may see that as more of an issue.