Deploying Virtual Server: Q&A

I just listened in on a conference call between Ben Armstrong (https://blogs.msdn.com/Virtual_PC_Guy) and Barbara, an IT manager who’s considering deploying Virtual Server in her enterprise. I thought you all might be interested in the questions and answers, so here are my notes:

Barbara: What’s the difference between the standard and enterprise editions of Virtual Server 2005?

Ben: CPU support. Standard supports up to four processors. Enterprise five plus. There are no other differences.

Barbara. Is there a rule of thumb for selecting server candidates for virtualization?

Ben: You need to look at the current load and availability of the server. Virtualization creates some overhead, so you’re not going to get the same performance from a virtualized server as from a physical one. The best candidates for virtualization are underutilized servers and servers running on older hardware. Many of our customers are also virtualizing infrastructure servers, such as domain controllers and DNS servers, which have a light load but need to run on a dedicated system. The Active Directory team has been great about working with us on this and has posted some prescriptive guidance for deploying domain controllers, including performance issues (https://www.microsoft.com/downloads/details.aspx?FamilyId=64DB845D-F7A3-4209-8ED2-E261A117FC6B&displaylang=en).

Barbara: What should we be monitoring on our existing servers to help us with capacity planning?

Ben: There is little memory overhead with virtual machines. You should allow the same amount of memory for your virtual machines as you did for the physical servers, plus a small buffer. More important is CPU and hard disk usage. One issue is disk contention. If you store VHD files on the same physical disk, and the workloads of the virtualized servers entail a lot of disk I/O, you can end up with contention.

Barbara: What about special hardware, such as CD-ROM towers?

Ben: This is a gray area. If you have a specialized PCI card, you can’t plug it into the virtual machine. But you can still make use of it if the card is supported by Windows Server 2003 and exposes services that Virtual Server can use. For example, you can configure the CD-ROM tower on the host, mount the CDs on your virtual machines, and then share them via the host operating system. Another example is that you can install a SCSI card on the host computer, attach hard drives to it, and store your VHDs on them.

Barbara: How does IP addressing work with DNS?

Ben: We create a unique MAC address for every virtual machine. External servers cannot tell it’s a virtual machine. Networking just works. In terms of network topology, we create a virtual switch and bridge the virtual machines to the outside world.

Baraba: Do all virtual machines access the same NIC? Wouldn’t this create a bottleneck?

Ben: Virtual machines can each have up to four virtual NICs. You can connect each virtual NIC to a physical NIC. If you have multiple virtual machines on the same NIC, Virtual Server divides the bandwidth among them. If you need more bandwidth, simply add more physical NICs and attach your virtual machines to them. Doing this is like connecting a network cable.

Barbara: How do you assign resources?

Ben: There are four areas of resource allocation:

  1. CPU. Each virtual machine can use up to one CPU. If you overload your physical CPU with the requirements of a lot of virtual machines, you can use resource allocation settings to set the relative weight given to specific virtual machines. You can also specify minimum and maximum amounts of CPU that will be available for each virtual machine.
  2. Memory. You can specify the amount of physical memory allocated to each virtual machine from 4 MB to 3.6 GB. When you power up the virtual machine, this amount of physical memory must be available on the host or the virtual machine won’t turn on.
  3. Hard disk. You create virtual hard disks (VHDs) that are used by virtual machines. They appear to be real hard disks, but they’re actually files with a .vhd extension that you store on a physical hard disk. There are two basic types of VHDs. Fixed VHDs have a fixed size, such as 20 GB, and do not grow. We recommend using fixed VHDs in production environments and when performance is a concern. The other type is dynamically expanding VHDs. When you first create this type of VHD, it’s very small. As you add data to the VHD, it grows up to the maximum size that you specified when you created it. We recommend using dynamically expanding VHDs only for personal use or test/development. This is because there’s a performance overhead for expanding the disk. In addition, dynamically expanding VHDs become fragmented more quickly.
  4. Networking. As we already discussed, Virtual Server evenly divides bandwidth between the virtual machines attached to the NIC, in addition to the host computer, if it is also using the NIC.

Barbara: What if you attach the host to a SAN?

Ben: You can use SAN storage for VHDs. This gives a performance advantage. The virtual machines won’t know they’re on a SAN. You can assign a physical disk to a physical computer. If you have two or more VHDs attached to a virtual machine – one for the operating system and the others for data – you can put all of the VHDs on the SAN. The virtual machine will then boot from the SAN, which is faster.

Barbara: If we have, say two redundant HBA cards attached to the SAN, all the virtual machines would go through those cards. Wouldn’t this be a bottleneck?

Ben: Yes, that could be a bottleneck, but we have a lot of customers doing this, and haven’t heard any complaints about performance so far.

Barbara: What about storage on the host computer?

Ben: If your VHDs are stroed on a SAN, the host computer doesn’t need much storage space. Virtual Server doesn’t require much disk space.

Barbara: So you’d set up your NICs and HBAs, then you load your virtual machines.

Ben: Right. Virtual Server goes through Windows for disk access. As long as the host operating system can present a drive, virtual machines can use it.

Barbara: What about clustering?

Ben: The solutions are complex, and we’re studying a number of different ones at this time. If you are clustering two physical servers, you only get protection if the entire server goes down. So we’re looking at using iSCSI for clustering virtual machines rather than hosts. If a single virtual machine goes down, then another host can pick it up.

Barbara: What about backups?

Ben: There are two ways to back up virtual machines. Virtual Server is like SQL or Exchange in that if you take an active backup, the files may be corrupt. So you can:

  1. Suspend the virtual machines and make a backup of the host computer.
  2. If you need 24 X 7 availability, you can install a backup agent on the virtual machines and back them up like you would any physical machines. You also should back up the configuration files, but this is simple and easy because they don’t change very often. [Note from Megan: For details on this, see the topic I wrote on backup and restore in the Virtual Server 2005 Administrator’s Guide.]

Barbara: How often do you need to cold-boot the host computer?

Ben: We’ve done extensive testing, and Virtual Server can run continuously for several months without a reboot. You only need to reboot when you install security patches. Because rebooting impacts the virtual machines, we recommend using a dedicated host computer to run Virtual Server that isn’t running any other applications. This will minimize reboots required by other applications.

Barbara: Do you have performance issues with Linux guests?

Ben: Linux isn’t an officially supported operating system. It runs, but we don’t have performance data on it. Some customers have reported, however, that they get fine performance.

Barbara: How do you create images of guest operating systems?

Ben: While you can use standard imaging tools with virtual machines, and they’ll work just fine, you don’t need to. You simply set up the guest operating system environment the way you want it (OS, version, language, applications, etc), run Sysprep, shut down the virtual machine, and then copy the VHD file. You create a new virtual machine specifying the copied VHD. When you start the virtual machine, it runs mini setup and assigns a unique name and SID. [It also gets a unique IP and MAC address.]

Barbara: Are there tools that will help us figure out which servers are good candidates for virtualization?

Ben: We’re working with partners on ways to measure utilization. Platespin has been doing a lot of work in this area. Microsoft is developing more prescriptive guidance, too. [For now we have the Solution Accelerator for Consolidating and Migrating LOB Applications, available at https://go.microsoft.com/fwlink/?LinkID=31616.]

Barbara: What about tools that gather usage information on virtual machines?

Ben: Tools that work on physical machines will work on virtual machines, although most of them don’t distinguish between virtual machines and physical machines. Many companies that offer management tools are adding this support. Virtual Server also provides performance counters on running virtual machines. Look at the host statistics. You can get a graph of virtual machine CPU usage versus host CPU usage.

Barbara: What’s a standard setup for Virtual Server and Virtual machines in terms of processor and memory?

Ben: What we see the majority of the time is a machine that has either 2-way or 4-way processors, 4 to 10 GB RAM, and 2 to 4 virtual machines per processor.

Barbara: What type of workload do you recommend?

Ben: Although there is a high demand for running SQL Server in virtual machines, we don’t recommend doing this in a production environment for performance reasons. Your best workloads are low usage and periodic usage applications.