Updated: January 14, 2009
If you're a fan of testing new software, you're probably using a virtualization product of some kind for your experiments. In this article, I'd like to show you how you can increase your productivity when working with virtualization software.
The term virtualization is a rather generic term and could apply to many different types of programs - emulation, thin-layer virtualization, sandboxing, or full virtual machine suites. Today, we will talk about the last - full virtualization.
Full virtualization products include VMware Player, VMware Server, VirtualBox, to name a few. These products offer the desktop user a simple and powerful way of encapsulating entire operating systems as guest machines for the purpose of study, testing etc.
The only downside of these products is that they are rather big, take lots of resources, mainly RAM and hard disk space. I will show you how you can utilize these precious and limited resources to the maximum, with no complex changes to your environment.
If you only have a single hard disk, your virtual machines will run more slowly because the hard disk will have to access both your real OS and the guest OS files simultaneously. Placing virtual machines on the second / third hard disk will significantly increase performance.
Virtual machines can easily take 4-6GB or more. Having tens of virtual machines on your hard disk can eat valuable space that you might not be able to afford to spare for this task. Although hard disks have become big and cheap, it is quite easy to gobble the free space.
Using external hard disks serves many purposes, all at once. First, you will be able to free your internal hard disk space for other stuff. Second, you will solve the performance issue mentioned before. Third, you add a layer of mobility that allows you to take your virtual machines with you (virtual machines are just files). Fourth, you will reduce the fragmentation and wear on internal hard disks.
External hard disks also solve any scalability issues you might have. Any time you need more space, you simply add another external hard disk. You won't have to open your boxes and meddle with the internal layout. They can be easily switched, upgraded, ported, moved about without touching your productivity setup.
Both VirtualBox and VMware support remote connections. This means that you can run virtual machines located on a separate machine without any physical access to that machine, save a network connection (even Wireless will do).
I have demonstrated this in my openSUSE 11 article, on page 5; running VMware Server in openSUSE 11 on my T42 laptop, I fired up Windows and Linux guest machines located on remote Windows and Linux hosts via Wireless.
This may sound strange, but the thing is: Windows only supports Microsoft formats, whereas Linux, Mac and other, more advanced operating systems support practically every filesystem available. This means that your bottleneck / weakest link will always be Windows machines. If you have a mixed environment, Linux machines will be able to use virtual machines resides on partitions formatted as NTFS, but Windows machines won't be able to even see virtual machines on Linux filesystems.
Placing virtual machines on NTFS drives / partitions allows you to use them anywhere anyhow. Likewise, avoid using FAT32 filesystem, because it limits your virtual machine files to 4GB size.
Virtual machines are files. You can split them into smaller segments to make them more easily portable. For instance, if you limit your virtual machine segments to less than 4.7GB, you'll be able to back them up to DVDs.
Pre-allocating disk space can be costly, especially if your virtual machines are going to be large. However, dedicating an entire section of the hard disk to the virtual machine allows you to restrict the virtual hard disk to a contiguous segment of the drive, reducing future fragmentation and thus, disk access times.
The pre-allocation benefits both the host and the virtual machines. They will not have to fight one another for space as virtual machines change dynamically with use over time, improving performance.
Virtualization can be fun. What more, you can make this fun run fast. By spreading your resources wisely across all available storage devices, including secondary/tertiary internal hard disks, external hard disks (via USB or firewire) and remote network locations, you increase your performance, flexibility and redundancy.
This allows you to focus on productivity, without worrying about the logistics of your infrastructure. In the follow-up article, we'll focus on virtualization security. Till then, happy experimenting!