Go Virtual with Your Development


Enterprise IT eco systems have gotten much more complex the last few years. Today's enterprise applications need to run well in a heterogeneous environment, meaning run well in a diverse eco system. It is common that applications need to support multiple OS versions, browser versions, support various databases, and, last but not least, have strong interop capabilities. IT departments are struggling with this increased complexity as do the development teams responsible for building these products. There are really two contributing factors.

Enterprises have heavily invested in enterprise applications during the dot-com boom in the hope of improving un-efficiencies in the day-to-day work of their employees and also to automate business processes. This resulted in an unprecedented number of applications deployed in enterprises. Business-Process-Automation is still in its early stages because it means that applications need to be able to exchange data easily and reliably. This level of data exchange and communication was achieved in the past by undertaking costly integrations which required the help of large integrators and large budgets. Most of these integrations ran over-budget and over-schedule and are quite often considered to be unsuccessful undertakings. Today's enterprise applications need strong interop capabilities as enterprises are no longer willing to undertake expensive one-of integrations.

This means it is a given fact that enterprise applications need to integrate with a number of other applications and need strong interop capabilities. This also means that your application will interact with many other enterprise applications and your development and test team needs to build these capabilities and test them thoroughly.

The bigger problem is the constant cycle of new releases. ISVs constantly improve the capabilities of their enterprise applications and every one to two years issue a new release. It is time consuming and expensive for enterprise customers to roll out a new release. Resource constraints and budget constraints force customers to wait at least two to three years before they roll out the latest release. This means ISVs have to support at least the last two to three releases of their applications. But, it also means they have to run with the last two to three releases of all the other applications they rely on or integrate with. And, that is where it quickly can become very costly for ISVs. It means your development and test team spends considerable time in making sure the release works with all the other applications.

Typically, development teams and test teams come up with a number of deployment scenarios. For example, the server component of your application can be deployed on Windows 2000 and Windows 2003 and supports Internet Explorer 5.5 and 6.x as well as Netscape Navigator 7.x access. The development team and testing team then create a number of different environments to simulate these deployment scenarios. It then needs dedicated hardware for each deployment scenario. Sometimes, the team does not have enough hardware, so it spends time reconfiguring systems. It may, for example, first install Windows 2000 and when these tests are completed install Windows 2003. But, if there is a need to go back to Windows 2000, it spends time reconfiguring the system again. This can take a lot of time and effort.

Your Virtual Development and Test Environment

Virtualization has arrived over the last few years. There are a number of companies that offer virtualization products. Most of them address slightly different needs. Also, Microsoft entered that market by acquiring Connectix. It released the redesigned product under the name "Virtual PC 2004" at the end of 2003. The sweet-spot of Microsoft Virtual PC 2004 is in the following three areas:

  • Application migration—Rolling out a new OS version or application has many implications. You might have other legacy applications that no longer run in this new environment. This can become an obstacle for the rollout of the new OS or application. It can be overcome by running the legacy application in its old environment under Virtual PC. So, you install Virtual PC, which is very easy to install and takes only minimal hard disk space, and then create an exact image of the current environment. And then, you run that application under Virtual PC till you can upgrade the legacy application or phase it out. Launching into the legacy application requires that you first launch that Virtual PC, which requires only seconds if you save its state (more on that later).
  • Application support—Support centers need to have access to environments that represent the customer's environment. Most support groups have multiple hardware environments, sometimes even an environment per customer. The other alternative is to utilize multi-boot options so you can have multiple OSs and you choose at boot-time which OS, or which environment, you start up. The multiple hardware environment option can become very costly and the multi-boot option can take a while to get the customers' environment up and running. The alternative is to create multiple Virtual PC images and keep each in the saved state. This then allows support engineers to activate a Virtual PC representing the customer's environment in seconds.
  • Application test—Test teams need to test enterprise applications in many varying environments. The most common approaches are to have a hardware environment for each scenario or to have one hardware set that is reconfigured each time. Both approaches are very costly, whether it is the cost of enough hardware and maintaining the environments or the cost of constantly re-configuring an environment. Virtual PC allows you to create multiple images, each representing an environment to test. This allows you to choose a configuration and bring it online for testing within seconds. The "Undo Disk" option becomes very handy because it allows you to keep the original image and store all changes you make for testing onto a separate disk (more on that later). When done, you can easily discard all changes or make them permanent.

Virtual PC can eliminate a lot of complexities and costs in each of these three scenarios. Virtual PC officially supports only Windows XP Professional and Windows 2000 Professional on the host machine (the OS on which you boot up the physical machine), although it allows you to install on other Windows versions. I installed it on Windows 2003 and it ran fine. On the virtual machine (guest machine), it supports almost any Window version and even some OS/2 and Novel versions (see Microsoft documentation). Microsoft is also working on "Microsoft Virtual Server 2005," which will be a server version running only on Windows 2003. I used a release candidate at the time of writing this article. The biggest difference is that Virtual Server offers a Web-based interface so you can manage the virtual machines remotely. The virtual machines all run in the "vssrvc.exe" process. The sweet spot for Virtual Server is in the following four areas:

  • Application migration—It can ease the same migration pains as Virtual PC, but targeted towards server applications. So, if you have legacy server applications that no longer work with the new server OS or other server applications, you can run them as virtual machines on the server. Clients can still access the server application the same way.
  • Server consolidation—Implementing and running enterprise applications can be very costly. The hardware and software costs are only one-time costs and very often a small part of the TOC (total cost of ownership). Over the last few years, many IT teams have started server consolidation projects. The goal of these projects is to reduce the number of servers that need to be administered. This is achieved by upgrading to newer versions of these enterprise applications which are more efficient or by running multiple server applications on the same machine. Running multiple applications on the same machine has its own complexities because these applications sometimes require conflicting configurations or versions of server resources. Virtual Server provides a powerful alternative. You can have one host machine that runs multiple guest (virtual) machines and each is completely isolated from each other. This makes it much easier to consolidate multiple enterprise applications onto one physical server.
  • Consolidate application test and development environments—Each test and development team requires many environments to be able to test enterprise server applications in all supported deployment scenarios. This results in increased hardware costs as well as administrative tasks in keeping all these environments running. Virtual Server offers an alternative by running multiple virtual machines on one physical server. For example, you have an n-tier application (data tier, application tier, and presentation tier) that you need to test on Windows 2000 Server and Windows 2003 Server. Traditionally, you have six machines so you have these two different testing environments available. With Virtual Server, you can achieve that with one or two physical machines, depending on the available resources such as CPU and memory on the machine(s).
  • Simulating distributed application deployments—Most server applications are n-tier applications that have a data tier, application tier, and presentation tier. Most enterprise ISVs recommend that you deploy these tiers on separate machines; thiis results in increased hardware demands for customers. Virtual Server provides a powerful alternative by still running each tier separately in a virtual machine but still all on the same physical server. Truth be told, most development teams develop the application by running all tiers on their single development machine and only the testing team tests the application deployed in a way as recommended to customers. Virtual Server makes it easy for each developer to run three virtual machines and test and develop the application the same way as recommended to customers. This allows you to find defects right when the code is written and unit tested by the developer. The earlier you find and correct a defect, the cheaper it is.

As the name indicates, Virtual Server is targeted towards server applications and Virtual PC towards desktop applications. You cannot install Virtual PC and Virtual Server on the same host machine. Doing so will break the previously installed version. You also cannot reuse the "Virtual Machine Settings" (*.vmc) file. They are different between Virtual PC and Virtual Server. The good news is that the "Virtual machine Hard Drive Image" (*.vhd) file is the same for both products. So, you can reuse a virtual hard drive configured and installed for Virtual PC with Virtual Server. This makes it very easy to reuse existing Virtual PC machines when migrating to Virtual Server. You create a new virtual machine, attach the existing virtual disk image, and start up the virtual machine.

Microsoft Virtual PC 2004

In this section, we look at how to install and run Virtual PC. Running setup will warn you if you install Virtual PC on any other Windows version than Windows XP Professional or Windows 2000 Professional, but it still allows you to install on any version you use. The installation is very quick and only requires about 30 MB on the hard drive. The install interrupts your network connectivity briefly so it can install the "Virtual machine Network Services" driver. This driver is used to simulate the network card to the virtual machine. When done go, to the Start menu item "All Programs | Microsoft Virtual PC" to launch it. At first launch, it brings up the wizard to create a new virtual machine. You can create a new virtual machine by providing all configuration details, create a new virtual machine with the default settings, or add an already existing machine. All files are stored under "[User Profile]\My Documents\My Virtual Machines". All "virtual machine" settings are stored as a file with the extension VMC, which is nothing more than a XML file with all the settings. This last option makes it easy to copy the files from one physical machine to another and then just connect to an already existing virtual machine.

Let's create a new virtual machine so we see how to set it up. We select "Create a virtual machine" and click Next. Next, we enter the name of the virtual machine and click Next again. Now, we select the OS we want to install on the virtual machine—for example, Windows 2000 Server—and click Next again. The next screen allows you to select how much physical memory will be available for the virtual machine. Based on the selected OS, it makes a recommendation but also allows you to change it. My physical machine has 1 GB and I know Windows 2000 wants lots of memory so I change it to 400 MB and click Next again. Your physical machine needs to have enough memory for the host machine plus all running guest machines. The next screen allows you to create a virtual disk, a disk that is used by this virtual machine. Virtual Disk Images are stored as files with the extension VHD. So, copying a virtual machine to another physical machine requires copying the VMC and the VHD files. If you have an existing disk image, you can connect to it. In our sample, we select "A new virtual hard disk" and click Next again. On the next screen, you enter the location and name of the disk image and click Next and then Finish. This creates under "[User Profile]\My Documents\My Virtual Machines" a new folder with the name we gave the virtual machine (unless you changed the default location). In this folder, you find a VMC file with the name of the virtual server and a VHD with the name of the virtual disk.

The Virtual PC console shows you that this virtual machine is "not running." Select the virtual machine and click Settings. It shows you all the settings for this virtual machine. This allows you to make changes to the configuration of the virtual machine; for example, changing the memory available or adding a second or third hard disk. We will come back to this screen later. From the PC console, you can select a virtual machine and start it. It brings up a new window that shows the console for this new virtual machine. First, you see a typical boot screen. Like the boot screen of your physical machine, it shows the memory found as well as the disk drives, CD, and floppy drives found. It then will tell you that no boot device has been found because we have not yet installed an OS on this virtual machine. So, now we enter a Windows 2000 bootable CD into the physical CD drive (or whatever OS you have selected) on the physical machine and press a key. The virtual machine starts the setup program of Windows 2000. This now allows you to install the OS the same way as you would on your physical machine. While the install runs, you can see the VHD file growing. New data and files written on the virtual disk are written to the VHD file that dynamically grows.

The mouse is a shared resource between the host and guest machine. Clicking on the Virtual PC window hands the mouse control over to the guest machine. Pressing the host key, which is by the default the right ALT key, hands the mouse control back to the host machine. You also see a separate mouse pointer for the host and guest machine. Clicking on the Virtual PC window hides the host mouse pointer, because the control is now with the guest machine. Pressing the host key shows again the host mouse pointer because control is now back to the host machine, while it also continues to show the guest mouse pointer itself in the Virtual PC window. The keyboard is a shared resource as well. Handing over control of the keyboard to the guest machine can also be achieved by clicking on the Virtual PC window. Handing control back to the host machine is done by pressing the host key and then clicking with the mouse on any window on the host machine.

You can change the host key from the Virtual PC console through the "File | Options" menu. This provides general mouse, keyboard, display, and performance settings for Virtual PC. Select "Keyboard" from the list, click in the "Current host key" textbox, and press the new host key you want to use, for example the left CTRL key. When on the guest machine, pressing the host key + ENTER allows you to switch between window and full-screen mode and pressing host key + ARROW DOWN minimizes the Virtual PC window to the task bar on the host machine.

When you log on to the guest machine, you need to press CTRL+ALT+DEL, but that key combination is always handled by the host machine. To send this key combination to the guest machine, select the "Action | Ctrl+Alt+Del" menu on the Virtual PC window. You also can change the screen resolution on the guest machine. By default, this is 640x480; changing it to 800x600 will automatically enlarge the Virtual PC window. If you run Windows on the guest machine, you should install the "Virtual Machine Additions." To install these additions, select "Action | Install or Update Virtual Machine Additions" on the Virtual PC window. This launches the setup on the guest machine itself and when completed requires you to reboot the guest machine. These additions provide a smoother integration between the host and guest machine:

  • Single mouse—There is no longer a separate mouse on the guest machine. You only see the mouse of the host machine. You can simply move the mouse in and out of the guest machine. Clicking on the Virtual PC window will translate it to a click on the guest machine at the exact location you clicked.
  • Single keyboard—Guest and host machine share the same keyboard. When the Virtual PC window has the focus, all key strokes are sent to the guest machine.
  • Sharing—The guest machine now can connect a share to the host machine. In the status bar of the Virtual PC window, you see a number of symbols, the fourth one being a folder symbol. Right-click on it and select "Share folder" from the popup menu. Now, you can select to which folder on the host machine you want to connect to plus in the lower right corner whether this share is permanent (Share every time). In the lower left corner, you choose the drive letter to use. Go to "My Computer" on the guest machine and you can open up this new drive. This provides you the same access to the host machine as your current security governs.

You can install applications on the guest machine the same way as you would on your physical machine. You can create as many virtual machines as needed and you can run as many as needed, provided you have enough resources. If you have only 512MB RAM, you won't be able to run five guest machines at the same time. If you have only a 1GHz processor, you will strain the system running five guest machines at the same time. But, there are a number of actions you can apply to running guest machines (through the Action menu on the Virtual PC window):

  • Pause—This will halt the execution of the guest machine. It will no longer take any CPU cycles but it will not free any used memory.
  • Resume—This will resume a halted guest machine. So, Pause and Resume allow you to freeze and unfreeze a guest machine.
  • Reset—This is like pressing the reset button on your physical machine. It restarts the guest machine.
  • Close—This closes the guest machine and provides three choices. It is also called when you simple try to close the Virtual PC window with the Close icon in the upper right corner.
    • Turn off—Is like switching off your physical machine. It will close the guest machine and free up all its resources. It does not perform a log off and shut down; it just kills it.
    • Shut down—Is a graceful shut down of the guest machine. So, it logs off the user, shuts down the guest machine, and then frees up all its resources.
    • Save State—This is like the "hibernate" option of your physical machine. It saves the current state of the guest machine and then frees up the resources. The state is written into a VSV file at the same location where the VMC file is located. The Virtual PC console shows the guest machine as saved and you can start it again which is the same as waking up your physical machine from the hibernated state. Starting a guest machine from the saved state is very quick.

The "saved state" is an option to quickly bring a guest machine back online as needed. For testing and training purposes, it is sometimes very useful to be able to restore the guest machine back to a known state. This can be achieved via an "Undo Disk." Open up the Settings of a virtual machine and select the "Undo Disks" item in the list. On the right side, select the checkbox and save the settings. This can be done only when the guest machine is not running and not in a saved state. The next time you start the guest machine, it creates a VUD file (Virtual Machine Undo Drive) in the same location where the VHD file exists. Any change you make while running the guest machine is no longer done on the virtual disk but on this undo disk. When you shut down or turn off the guest machine, it allows you three options:

  • Delete undo disk changes—All changes will be discarded and the VUD file deleted. The next time you start the guest machine, it is at the same known state as before, the state stored on the master disk (VHD file).
  • Save undo disk changes—Save all the changes on the undo disk (VUD file) so they are available next time. But, the changes have not been made part of the master disk (VHD file).
  • Commit changes to the virtual hard disk—All the changes are made permanent by writing them on the master disk (VHD file) and then the undo disk (VUD file) is discarded.

Resetting the guest machine will warn you that all the changes on the undo disk will be lost. You also have control about the network connectivity of each guest machine. Open up the settings of a virtual machine and select the item "Networking" from the list. You can configure multiple network adapters for the guest machine. For each, you have the following choices:

  • Not connected—No network connectivity. If chosen for all network cards, it means that the guest machine runs standalone.
  • Local—Provides connectivity between any guest machines running on your host machine. Neither Internet connectivity nor connectivity to the host machine is provided.
  • Shared Networking (NAT)—This option is only available for the first network card. Virtual PC creates a private network and also runs a virtual DHCP server and virtual network address translator. Connectivity to other systems is done through the host. This is useful when you are connected to an ISP that limits the number of machines you can connect to it. Only the host machine is connected to the ISP and gets its IP from the ISP. Your guest machine gets connectivity through the host machine.
  • Network adapter of the host—The guest machine uses the network card of the host machine. The machine appears and behaves like any other physical machine on your network.

Virtual PC is a powerful desktop virtualization solution. It provides a lot of control and can solve most desktop virtualization needs. It can reduce complexities and costs from a variety of projects. Virtual PC does not support USB drives nor does it support SCSI drives.

Go Virtual with Your Development

Microsoft Virtual Server 2005

In this section, we look at how to install and run Virtual Server. Virtual Server builds on the same virtualization framework as Virtual PC. It is different in that it has a Web-based interface and it allows you to run guest machines on a server without requiring a desktop tool. All guest machines run in the "vssrvc.exe" process and can be administrated and accessed remotely through the Web interface. Virtual Server requires that IIS is running on the host machine. The installation is very simple. It allows you to change the port on which the administrative Web interface will run. By default, it runs on port 1024. And it allows you to choose to run as authenticated user or under the local system account. For security reasons, it is always recommended that you run as authenticated users. When accessing the Web interface, it will ask you for your NT user credentials and it allows administrators to control access through standard ACLs. The install is very quick and only requires less then 40 MB on the hard drive. The install interrupts your network connectivity briefly so it can install the "Virtual machine Network Services" driver. During the installation, it creates three windows services: "Virtual Disk Service," "Virtual Machine Helper," and "Virtual Server." After it is installed, you can access the Web interface through http://<machinename>:PortNumber/ and it will ask for your user credentials. Your screen will look similar to the one shown below.


The left side navigation menu provides you with the same functionality as the Virtual PC console. It allows to create a new guest machine or add an existing one. When creating a new guest machine you provide a name, the memory size and the path to an existing virtual hard disk or the size of the new virtual hard disk to create. This creates the Virtual Machine Settings (VMC) file under "[All Users Profile]\Shared Documents\Shared Virtual Machines". It creates a folder with the name of the virtual machine and places the VMC file and VHD file (if you created also a new virtual disk image) in that folder. The VMC file is not compatible with Virtual PC. When adding an existing virtual machine, you need to provide the path and name to the existing VMC file. You also can configure any existing virtual machine. The Configure menu item lists all existing virtual machines and selecting one shows the settings for that machine. This screen looks very similar to the settings screen in Virtual PC. But it also shows the status of the virtual machine—how long has it been running, how much data has been read and written to the virtual disk image, how much data has been sent and received over the network card, and the CPU utilization over the last minute. The screen refreshes itself every minute.

The top screen shows a small snapshot of the guest machine console plus beside it the name of the machine that is a popup menu with all the actions you can apply to the virtual machine. You can start the machine, pause it, resume it, turn it off, reset it, and save its state (hibernate it). These are the same actions as Virtual PC provides with the exception of the "Remote Control" action. This allows you to get remote access to the console of the guest machine through your browser. The first time you access a guest machine remotely, it will install an ActiveX control. This ActiveX control then shows in your browser the console of that guest machine. The same mouse and keyboard behavior applies as to the Virtual PC window. So, you have a guest and host mouse and keyboard and you need to click on the ActiveX control to hand over the mouse and keyboard control to the guest machine. Control can be returned to the host machine by pressing the host key, which is by default also the right ALT key. In the upper right corner of the ActiveX control, you see a "Remote Control" menu. Click on it and it shows you a list of actions you can apply. The menu "Set Host Key" allows you to change the host key and the menu item "Special Keys | Sent Ctrl+Alt+Delete" sends this key combination to the console of the guest machine.

Also, Virtual Server has so-called virtual machine additions that is recommended to install on any Windows guest machine. In the settings of the virtual machine, you find an entry called "Virtual Machine Additions." That brings up a screen that allows you to install or update them. Select the "Install Virtual Machine Additions" checkbox and click the OK button. Now, switch back to the remote console and wait until the setup program appears. If it doesn't appear on its own, which sometimes happens, browse to the CD drive on the guest machine and launch the setup from the Windows folder. At the end of the install, it asks you again to reboot the guest machine. This provides you now with the same smooth mouse and keyboard integration as Virtual PC. The ActiveX control shows the guest machine console in the same resolution as set on the guest machine. Resetting the resolution, for example from 640x480 to 800x600, automatically resizes the ActiveX control in the browser.

The folder sharing and "Undo Disks" features provided by Virtual PC are not present in the release candidate of Virtual Server. Also, the "Shared Network (NAT)" network adapter is not available. The "Local" network adapter has been renamed to "Internal Network" in Virtual Server.

VMware Workstation 4.5

Another very popular virtualization product is VMware. VMware has beenin the virtualization market since 1998. It released the first version of VMware Workstation in 1999 and VMware GSX Server in 2001. VMware has already a large customer base and was acquired by EMC Corporation in early 2004. You can download an evaluation copy of VMware Workstation 4.5 from http://www.vmware.com/. It requires you to register; registering provides you with a 30-day trial license key.

The installation of VMware is also fairly simple and only requires about 50MB on your hard disk. It asks you if you want to turn off the "autorun" capabilities of your CD drive because it can result in unexpected interactions with virtual machines. I left it activated for convenience and did not encounter any problems. It automatically searches for any legacy disks from previous versions. It also asks you whether you want to search for legacy disks from versions earlier then 3.0, because file extensions changed with version 3.0 and higher. The install adds two new network connections to your machine—"VMware Network Adapter VMnet1" and "VMware Network Adapter VMnet8". It also adds a "VMware Bridge Protocol" driver to your current network connection and two new windows services—"VMware NAT Service" and "VMware DHCP Service". These additions are used by VMware to provide network connectivity to your virtual machines. The last step in the installation asks you to enter your license key. One disadvantage it has is that it requires a reboot of your machine at the end of the installation. The good news it that VMware also supports USB drives which Virtual PC doesn't.

After rebooting the machine, you can launch into VMware Workstation through the "VMware Workstation" symbol on the desktop or the Start menu—"All Programs | VMware | VMware Workstation". From the main window, you can create a new virtual machine. A wizard guides you through the creation process. It provides the option for a typical or custom configuration. I chose custom because it provides more control over the configuration. On the next screen, you choose the OS you install on the guest machine. It provides a large variety, including a number of Windows versions, Linux versions, Novel NetWare versions, Sun Solaris versions, and others like MS-DOS. You choose the category in the list of radio buttons and then the specific version in the drop down list. I chose "Microsoft Windows" and "Windows 2000 Server". On the next screen, you give the virtual machine a name and provide a location where to store the files for this guest machine, which is also by default under "[User Profile]\My Documents\My Virtual Machines". On the next screen, it recommends the memory for the guest machine based on your chosen OS. It shows also the minimum, recommended, and maximum memory you can choose. It allows you to change the setting, which I set to 400 MB. The same rule applies as with Virtual PC: The sum of all running guest machines plus your host machine can't exceed your physical memory. On the following screen, you choose the network connectivity. It provides four options:

  • Use bridge networking—The guest machine has access to your network card, gets its own IP address from your network, and behaves like any other physical machine.
  • Use network address translation (NAT)—The guest machine gets network connectivity through the host. This is the same as "Shared Networking (NAT)" of Virtual PC.
  • Use host-only networking—Creates a private network which allows all guest machines running on this host to connect. This is the same as "Local" of Virtual PC.
  • Do not use any network connection—Provides no network connectivity for the guest machine.

As you can see, VMware and Virtual PC have the same network connectivity capabilities. The next few screens allow you to connect to an existing virtual disk or create a new one and specify the type of it. You can configure it to be an IDE or SCSI drive and you can specify the size of it. By default, the virtual disk file (*.vmdk file) will grow dynamically as new files are copied onto the virtual disk. But, you also have the choice to pre-allocate the full size of the virtual disk (check the "Allocate all disk space now" checkbox). This will create a virtual disk file with the full size of your virtual disk. It may take a while to create it during the installation but it yields better performance for your virtual machine. Make sure you have enough disk space on your physical hard drive. So, if you choose to have a 4 GB virtual hard disk, it will create a 4 GB large virtual disk file (*.vmdk file). Finally, you provide a name of the virtual disk file and click Finish. This creates the VMware configuration file (VMX file) and VMware virtual disk file (VMDK file).


The VMware main window now displays the newly created virtual machine. The left pane shows all your guest machines and the right pane shows for each guest machine a tab. which when selected. shows the summary of the selected guest machine (see screenshot above). In my case, it shows that I created a virtual machine with the name "Windows 2000 Server" and it has 400 MB memory, one hard disk, one CD drive with autorun enabled, one network card with NAT enabled (so it uses the host network), plus audio and the USB drive are enabled. Under the commands section, it lists the commands you can apply to this guest machine. I can edit its settings or start it.

You also see in the toolbar the Start, Stop, Pause, and Reset action you can apply to the currently selected virtual machine (beginning from the left side). The "Power" menu provides the same actions plus more, for example Suspend. VMware also provides three different modes:

  • Normal mode—The right pane of the VMware main window shows a tab for each guest machine. Selecting that tab shows the configuration settings of the machine or if running its console.
  • Quick switch mode—Shows the right side pane in full screen mode. On top, you see each tab so you can switch between the guest machines. Moving the mouse to the top of your screen shows the toolbar again. The right most icon on the toolbar allows you to switch between quick switch mode and normal mode.
  • Full screen mode—Is only active for running virtual machines and allows you to switch to full screen mode of the selected machine (second right-most icon in the toolbar). You can leave the full screen mode by pressing the hot-key combination, which is by default Ctrl+Alt.

The mouse and keyboard control work the same way as with Virtual PC. Clicking on the console window of a running guest machine hands control of the mouse and keyboard over to the guest machine. The host mouse cursor is hidden. Pressing the hot-key combination hands control back to the host machine and again shows the host mouse cursor while it continues to show the mouse cursor of the guest machine in the console window. The hot-key combination can be changed through the "Edit | Preferences" menu on the "hot keys" tab. You can select any combination of Ctrl, Shift, and Alt.

The first time you start a guest machine, you need to install the OS. Enter the bootable OS CD into your physical CD drive and start the guest machine. It shows a quick boot screen and then starts the installation of the OS. You can install the OS, in my case Windows 2000 Server, and any other application the same way as on your physical machine. After you installed the OS, it is recommended that you install the "VMware tools" through the "VM | Install VMware Tools" menu. This launches the "VMware Tools" setup on the guest machine, which installs additional display, mouse, network, and SCSI drivers to improve the integration of VMware with the guest OS. The installation is very quick and requires a reboot of the guest machine. This is again very similar to the "Virtual Machine Additions" of Virtual PC.

Now, you have one integrated mouse that you can easily move between the guest and host machine. Clicking on the guest console window hands control over to the guest machine and clicking on any window of the host machine hands control back to the host machine. It now also allows you to change the screen resolution, for example to 800x600 with True Color, which automatically resizes the VMware main window to show the full guest screen. The "VM | Send Ctrl+Alt+Del" menu allows you to send the Ctrl+Alt+Del key combination to the guest machine. The "VM | Grab Input" menu does the same as clicking on the console window; it hands mouse and keyboard control over to the guest machine. VMware also gives you complete control over which devices are visible to the guest machine. You can control this through the "VM | Removable Devices" menu, which lists each device and allows you to disable/enable it or edit its settings. The settings dialog allows you to configure the settings for each device, like which network connectivity is provided (see list above), enable/disable autorun of your CD, which sound card is present, and so forth.

VMware also allows you to share folders between the host and guest machine. Bring up the settings of the virtual machine (right-click on the tab or the virtual machine in the list on the left side and select "Virtual Machine Settings" from the popup menu). Go to the options tab and select "Shared Folders" from the list. Click the Add button on the right side, which brings up a wizard. On the first screen, you give the share a name and select the host folder to share. On the next screen, you select whether the share is only read-only, temporary, or permanent and enabled or disabled. You then need to map from the guest machine to this share on the host machine. Open "My Network Places" on the guest machine, select "Add Network Place," and then type \\.host as the location. The name ".host" points always back to your host machine. Next, you select from the list of folders the item "Shared Folders", give it a name, and finish. Now you see under "My Network Places" the new item, which when opened lists all the shared folders from the host. Another way to connect to the share would be to use the UNC convention and go to "\\.host\Shared Folders\[share name you created on the host]"; for example, \\.host\Shared Folders\CDrive.

As with Virtual PC, you can also suspend (hibernate) the guest machine (through the Power menu) so you can start it up again within seconds. VMware Workstation 4.5 and Virtual PC 2004 provide very similar virtualization capabilities. There is no evaluation copy for VMware GSX available, so I did not evaluate its capabilities.


Both Virtual PC and Virtual Server from Microsoft as well as VMware are powerful virtualization solutions. Virtual PC and VMware Workstation are geared towards desktop virtualization and Virtual Server and VMware GSX Server towards server virtualization. Both can reduce complexities and costs for your development and test cycles. There are a number of ways that you can utilize it. Virtual PC or VMware Workstation is your choice if you have to simulate different client desktop configurations. It allows you, for example, to run multiple guest machines each with a different OS and browser version. Virtual Server or VMware GSX Server is your choice for running multiple server tiers on one physical machine. For example, you can run three guest machines: One guest machine has the database installed, another guest machine has the application server installed, and yet another guest machine has the presentation tier installed. You can create additional guest machines if you need to simulate different deployments like one that runs on Windows 2000 and another one that runs on Windows 2003. Both Virtual PC or VMware Workstation and Virtual Server or VMware GSX Server are easy to install, easy to use, and reliable. In all my tests, I had not one unexpected behavior. The remote administration and access capabilities of Virtual Server are very impressive. If you have comments to this article, please contact me at klaus_salchner@hotmail.com. I want to hear if you learned something new. Contact me if you have questions about this topic or article.

About the Author

Klaus Salchner has worked for 14 years in the industry, nine years in Europe and another five years in North America. As a Senior Enterprise Architect with solid experience in enterprise software development, Klaus spends considerable time on performance, scalability, availability, maintainability, globalization/localization, and security. The projects he has been involved in are used by more than a million users in 50 countries on three continents.

Klaus calls Vancouver, British Columbia his home at the moment. His next big goal is doing the New York marathon in 2005. Klaus is interested in guest speaking opportunities or as an author for .NET magazines or Web sites. He can be contacted at klaus_salchner@hotmail.com or http://www.enterprise-minds.com/.

This article was originally published on June 28th, 2004

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date