Your desktop virtualization project relies on disk images to store data, but there are so many virtual disk image file formats out there that it's hard to tell them apart.
Disk image files store all the contents of a hard drive. They come with many different software packages and in different formats, but each one works best with the vendor that developed it. For instance, the VMDK virtual disk format integrates with VMware vSphere and View.
That said, there's a growing trend toward different types of virtual disk images being recognized across multiple virtualization products. So, you need to understand the major differences between them. Here's a rundown of the most common types, their associated software and limitations to be aware of.
VMware originally created the VMDK format as a proprietary disk image file format for use with its server and desktop virtualization products. It has since had its specifications released as an open file format, which allows almost anyone to implement a VMDK handler in their software. Oracle VM VirtualBox, for instance, can read VMDK volumes.
More on virtual disk image formats
Comparing Microsoft's VHD with VHDX
How to convert from VMDK to VHD
Resizing virtual disk image files
VMDK volumes support snapshotting, sparse allocation (meaning that the file can expand on demand up to the maximum volume size specified at its creation) and advanced features, such as 64K sub-blocks. That means that if a single large-sector drive, such as a 4K sector, is non-zero in the file system within the VMDK, then the file only needs a 64K block to represent that cluster. (VirtualBox VDI clusters, which I'll cover next, use 1 MB pages, so the same 4K cluster would need an entire megabyte to represent it.)
So, VMDKs can make more efficient use of space when they need to. For desktop virtualization admins, this means VMDK files can deliver sparsely populated volumes to a client with less overhead than other virtual disk image file formats.
The VMDK specification is currently in its fifth revision. VMware publishes the spec as a "technical note" with the rest of its developer documentation, or you can request the spec online. Because of the vendor's broad industry acceptance, it's common for other virtualization products to recognize VMDK disk image files and even work natively with them.
Oracle VirtualBox's VDI
The Virtual Disk Image (VDI) format is the native virtual disk format in Oracle VM VirtualBox. This format supports many of the features of disk image files found in other virtualization products, such as snapshotting and sparse allocation.
You can use other disk file formats in VirtualBox, but they have to be converted to VDI before you can do any maintenance on them -- and I've seen the conversion process fail on occasion. It's best to create a VirtualBox VM, mount the image to be converted along with a new, blank disk image in the VDI format and copy the contents with a disk-copying utility.
While many virtual disk image file formats can be converted to the VDI format, the reverse might not always be true. You shouldn't use it to roll out images to desktop clients unless they are actually using VirtualBox as the client or you've verified that the clients can use VDI virtual disk images seamlessly.
While the format is technically open, it is very difficult to find detailed documentation in the form of a spec, apart from the source code for VirtualBox itself. A forum post in the VirtualBox community has a fair amount of technical detail about it, but that has not been updated since 2008.
Connectix originally developed the VHD format for its Virtual PC product and was later acquired by Microsoft for the vendor's Virtual Server and Hyper-V virtualization platforms. The specs for the VHD format are available openly and anyone can implement it. Like other virtual disk formats, VHDs reside as a file on the host's file system. The disk image files support features such as fixed and dynamic disk sizing, differencing and snapshots.
VHDs also have some unique advantages when used with Microsoft OSes. For one, the boot loaders for recent editions of Windows can be configured to boot directly from a VHD file. That means a given system can boot multiple instances of Windows OSes stored as separate VHDs, which can, in turn, be manipulated via other instances of Windows.
VHDs can also be mounted directly in Windows and assigned drive letters via Microsoft's Disk Management utility; no other tools are needed to access a VHD disk image file's contents. This also means that desktop virtualization admins can deploy VHDs as-is to most recent Windows OSes (Windows 7 and up for the best results) and use them for a variety of functions apart from just virtual machines.
Keep in mind that VHDs cannot be larger than 2 TB, which can be an issue now that 3 TB and larger drives are available to end users. Microsoft ups that limit to 64 TB in its new VHDX format for Windows Server 2012.
The HDD format can be found in Parallels, a Mac OS X software hypervisor used mainly to allow Mac users to run Windows on their systems.
Like the VDI virtual disk image file format, HDD is used mainly by Parallels and few other programs. VirtualBox can mount and use HDD disk image files without needing to convert them, but only if they are "simple format" HDD files (version 2 of Parallels or earlier). Newer versions of the format have to be converted before they can be used in VirtualBox.