What's a virtual hard disk? Microsoft describes it thus: The Virtual Hard Disk (VHD) is a file, stored on the host’s hard disk, which a virtual machine sees as a hard disk and uses to perform storage functions including essential disk read and write activities. This is in a Microsoft web page called Using Microsoft Virtual Server 2005 to Create and Configure a Two-Node Microsoft Windows Server 2005 Cluster.

What you do is to create virtual servers and then these talk to virtual hard drives which are, in effect, like partitions on an actual physical drive. They are actually files with a .vhd extension. The virtual server interacts with them exactly as it would a real hard drive.

On an IDE controller the maximum .vhd file size is 127GB. On a SCSI adapter the maximum size is 2TB. This means a .vhd file can span multiple physical drives. The virtual disks are attached to virtual IDE controllers or SCSI adapters. THere can by multiple simultaneous virtual disk transactions on a virtual SCSI controller but only one at a time per bus on the virtual IDE controller. Microsoft says choose SCSI for performance.

The physical disks are invisible from within the virtual machine. It cannot inspect the physical disk's parameters such as size and format.

The .vhd file is implemented by default in dynamic mode. That is to say that the IT administrator specifies a maximum virtual disk size but the Windows Virtual Server 2005 only allocates blocks on the physical drives in 3MB chunks. You can specify a static .vhd in which case the physical blocks are allocated when it is set up to create the virtual disk size.

In both instances you need enough physical drive space to allow for the maximum .vhd file size.

Service Pack 1 for Virtual Server 2005 will add Linux support. That is a virtual machine in the Microsoft environment could be running Linux. That means its VHD will be a Linux-formatted VHD, implemented on top of a Microsoft Windows-formatted physical drive.

Microsoft is going to license, royalty-free, the Virtual Hard Disk (VHD) format to make it easier for partners to develop VHD-based solutions and continue to enhance the capabilities and extensibility of the VHD file format. Steve Ballmer said about this: "We're going to take the virtualization format, the .vhd format, which we're working today to get standardized across industry participants, we're going to take that format and make it extensible, which we think is very important for all of you and for us in terms of where virtualization technologies can go in the future, open and extensible approach to virtualization we think is very important."

We might well expect to see Virtual Server host virtual machines running Solaris which read and write to/from a Solaris VHD. This wouldn't be surprising given the strong alliance between Microsoft and Sun. We might, we just might, see the opposite, a Solaris-hosted virtal machine running Windows which talks to the Solaris equivalent of a VHD.

These virtual servers are suited to a data centre with a SAN. So we see another laevel of abstraction between the servers and the LUNs in the SAN. Only this level of abstraction is in the servers. The SAN switches and SAN arrays don't know anything about VHDs.

This has implications for a potential future storage utility. It means that it, if located either in the SAN or in the back-end drive arrays, cannot be entirely responsible for data protection. The virtual servers will need to have files in their virtual disks protected. But these files will only be visible as files to the virtual servers, not to the SAN fabric or SAN back-end array controllers. They will just see unassociated disk blocks.

I think that what this implies is that virtual servers will prevent a pure all-responsible storage utility being possible - unless the VHDS are implemented by the storage utility.

Comments anyone?