One of the best features of VMware View is Linked Clones and VMware View Composer. In this article I will discuss what composer is, the benefits and I will add a short video in which I will recompose a pool. Just for everyone to see how easy it is to recompose a pool, in just a couple of clicks.
View Composer is a tool/mechanism, which helps you streamline virtual desktop provisioning. Also, it helps you introduce single image management and reduce cost on storage capacity. Composer uses Linked Clone technology. Instead of creating multiple Full Clone VM’s for your users, you only create 1 Parent VM (Golden Image is another term I hear a lot) and roll out Linked Clones, which all are unique and point to a Master. The Master VM is Read-Only. The user writes in the Linked Clone Delta disk. The Master+Linked Clone is the complete VM for a user.
The steps to create a Linked Clone pool are;
- Create a VM in vCenter with the View Agent installed (the Parent VM),
- Turn off that VM and create a Snapshot,
- In View Manager, create an Automated Pool, Linked Clone. See video.
What happens next (KB 1021506);
- View Manager creates the linked-clone entry in View LDAP and puts the virtual machine into the Provisioning state.
- View Manager calls View Composer to create the linked clone
- The View Composer Server creates the machine account entry in Active Directory for the new clone and creates a random binary password for the newly created computer account.
- If a replica for the base image and snapshot does not yet exist in the target datastore for the linked clone, View Composer creates the replica in the datastore. If a separate datastore is configured to store all replicas, the replica is created in the replica datastore. (In View 4.5 and later, replicas can be stored in a separate datastore.)
- View Composer creates the linked clone using the vCenter Server API.
- View Composer creates an internal disk on the linked clone. This small disk contains configuration data for QuickPrep or Sysprep. The disk also stores machine password changes that Windows performs every 30 days, according to the policy setting. This disk data ensures that domain connectivity is maintained when a checkpointed desktop is refreshed.
So, now you have a Linked Clone Pool. But, what do you do when you need to update this pool? Think about patches for Windows or other applications installed in the Parent VM. My recommendation; Don’t let every user update his/her VM, nor push updates with a deployment tool. All these updates will end up in the Linked Clones. They will grow but more importantly, when you do a recompose or a rebalance, you will loose all these updates.
Use VMware View Composer and Recompose pools to push updates out to users. In this scenario you start the Parent VM again, apply the updates/changes, turnoff the VM and create a second Snapshot. From that point, use VMware View Manager to recompose the pool. The video will show which steps need to be taken to recompose the pool.
These steps occur during a recompose operation:
- View Manager puts the linked clone into the Maintenance state.
- View Manager calls the View Composer resync API for the linked clones being recomposed, directing View Composer to use the new base image and snapshot.
- If a replica for the base image and snapshot does not yet exist in the target datastore for the linked clone, View Composer creates the replica in the datastore. If a separate datastore is configured to store all replicas, a replica is created in the replica datastore.
- View Composer deletes the current OS disk for the linked clone and creates a new OS disk, linked to the new replica.
- The rest of the recompose cycle is identical to the customization phase of the provisioning and customization cycle.
The beauty is you only update 1 VM and push it out to multiple users. You also have the option to leave certain pool on Snapshot 1 and recompose other pools to use Snapshot 2. Do realize all changes inside a Linked Clone will be lost after a recompose. That’s the reason you need to separate the “user” when you want to deploy a Linked Clone Pool. Changes should be saved centrally. In case a users needs to be able to install software, provision a Full Clone VM for that user so a recompose won’t delete all the user’s work.
Two more small things at the end of this article;
- Can you keep recomposing a pool? Meaning, can you add Snapshot after Snapshot? Well, good question and I don’t have an official answer. Adding Snapshots can’t be good performance wise but the Linked Clones aren’t reading from the Parent+Snapshots. Every time a new Replica is being created, so it shouldn’t be an issue but again, I cannot find an official statement.
- In vSphere, you see 3 different numbers being mentioned what a VM uses, storage capacity wise. I admit, confusing. The “Not-Shared” number is the one to track. This is what the actual size is of your Linked Clone VM. You can read more about this here.