VMware View has offered the ability to serve your desktops as linked clones since View 3.0 with View Composer, but with View 5.1 I still get asked many questions about how linked clones work, how snapshots are involved, delta files, and what other files make up each linked clone virtual desktop. You are probably already familiar with VMDK (Virtual Machine Disks) and snapshots, but the process View Composer takes to create linked clones may still be a bit of a mystery to you. Since the addition of View Storage Accelerator (VSA) in View 5.1 there are also some additional files that are created. This article will describe the files used by linked clones.

 

I will start by listing all of the possible virtual disk files associated with a linked clone virtual machine:

 

File extensionDescription
.vswpVirtual machine swap. This is equal to the amount of ‘unreserved’ memory for the virtual machine. If disk space needs to be conserved, then adding a memory reservation on the virtual desktop (equal to the amount of configured memory) will reduce this in your storage sizing.
.vmssThis is the suspend file. This is created if you configure the desktops to suspend at log off. I prefer not to use as it, as it creates a .vmss file that is equal to the amount of memory configured for the virtual machine.
.nvramVirtual machine BIOS lives here! (very small).
.logVM log files. These are fairly small, but depending on the number of desktops you are provisioning you may want to disable virtual machine logging.
.vmxVM configuration (very small).
.vmxfSupplemental configuration file (very small).
.vmsdSnapshot metadata (very small).
.vmdkVirtual machine disk descriptor (very small).
-delta.vmdkThis is the file that links back to the replica disk. If your virtual desktop system disk contains a Windows pagefile, in other words, you haven’t redirected it to a disposable disk, then this will typically be slightly larger than the pagefile. It may also grow depending on what happens during the Sysprep or Quickprep customisation. I tend to see this stay at around 1.5 – 2GB, but it really does depend on the level of customisation and pagefile size.
-internal.vmdkData configuration file for Quickprep and Sysprep (small).
-checkpoint.vmdkVirtual machine disk descriptor (very small).
-checkpoint-delta.vmdkThis file is created after the linked clone desktop finishes the Sysprep / Quickprep operation, before it’s ready for first use. Typically I see this to initially be between approximately 30 – 100MB. As data is written to the desktop virtual machine, this will grow. Try it, copy some large files to the desktop and watch it grow. When a refresh operation occurs, the desktop will be placed into maintenance mode, it will shut down, and the this will be deleted and a new one created. This will never grow larger than the replica disk.

 

When viewing these files, make sure to use the ESXi console (or SSH) as the datastore browser will show the .vmdk size to include the delta disk rather than separate files.

If you enable your View Desktop Pools to use View Storage Accellorator (VSA) which leverages Content Based Read Cache in vSphere (CBRC) with vSphere 5, then you will also see the following files:

 

File extensionDescription
-digest-delta.vmdk
-digest.vmdk
Digest files store hash values used for View Storage Accelerator / CBRC (small).
-checkpoint-digest.vmdk
-checkpoint-digest-delta.vmdk
Again, used with View Storage Accelerator / CBRC (small).

 

You can read more about View 5.1 VSA here: http://www.vmware.com/files/pdf/techpaper/vmware-view-storage-accelerator-host-caching-content-based-read-cache.pdf

Now we know the file structure for VMware View 5.1 linked clones, let’s discuss a 5 step high level process that View initiates when creating a desktop pool.

  1. Once you’ve created your ‘gold’ master desktop virtual machine, you will take a snapshot. This snapshot will be selected during the creation of the desktop pool in VMware View.
  2. When the desktop pool is created, along with the required pool configuration, VMware View will create an entry in the ADAM database, then instruct View Composer to clone the snapshot you created to the replica disk. View Composer will actually instruct vCenter to do this, which you’ll see in the tasks pane at the bottom of your vSphere Client. The replica disk will be read-only, and can be stored on a separate datastore to linked clones. Incidentally  since View 5.1 the Composer service can be installed on a separate server to vCenter.
  3. The internal.vmdk file is also created, which contains the Quickprep (or Sysprep) configuration data.
  4. At this stage you’ll see View entering the customization stage, the desktop will power on and will start Quickprep or Sysprep (depending on your chosen configuration).
  5. After customisation is complete, and the desktop is rebooted, the -checkpoint-delta.vmdk file is created. This is the linked clone delta file that will grow as data is written to the virtual desktop. When a refresh operation occurs, the desktop will be placed into maintenance mode, shut down and then the -checkpoint.vmdk will be deleted and a new one created. It is recommended that this is scheduled out of hours (over night).

 

For further reading I recommend the VMware technical white paper on VMFS File Locking and It’s Impact in View 5.1.