VMware View Composer and recomposing a Pool (Video included)

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);

  1. View Manager creates the linked-clone entry in View LDAP and puts the virtual machine into the Provisioning state.
  2. View Manager calls View Composer to create the linked clone
  3. 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.
  4. 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.)
  5. View Composer creates the linked clone using the vCenter Server API.
  6. 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:

  1. View Manager puts the linked clone into the Maintenance state.
  2. 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.
  3. 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.
  4. View Composer deletes the current OS disk for the linked clone and creates a new OS disk, linked to the new replica.
  5. 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;

  1. 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.
  2. 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.

Options/choices Creating a Floating Linked Clone Pool

After discussing Creating Floating Linked Clone Pools it is time to go through the options you get when creating such a pool. If you haven’t created a Floating Linked Clone Pool before or can’t recall the options, take a look at the video. I will not discuss every option. Just the ones I get most questions about.

The first option you get after choosing “User Assignment-Floating” is the choice between “Full virtual machines” and “View Composer linked clones”. Now, I have to mention I don’t really understand this option. Why would you choose for a Floating Full VM Pool? I just don’t see the use case. It isn’t because you want to use Local Mode, because you need a dedicated pool for that. It also isn’t for Local Admin/installation rights because you will end up on a different VM, so your apps will be gone. You will just use more storage capacity as I see it. Oh well, it is there as an option.

The next options you will see are under “Pool Settings”.

“Remote Desktop Power Policy”; basically has 3 options; leave your VM’s turned on, suspended or turned off. This is the policy you set on VM’s which aren’t in use by users and which don’t belong to the “spare (powered on) desktops”. The amount of “spare” VM’s can be configured later on under “Provisioning settings-Pool Sizing”. Most of the times, I set the power policy to power off. Why burn CPU cycles when no one is using the VM? If you have enough (and that’s the magic word I guess) VM’s set as spare, no one needs to wait before a VM completely boots. It has to be said, when you leave all the VM’s on, no one needs to wait. Not even in the case suddenly everyone logs on.

“Automatically logoff after disconnect”; what do you want to happen when someone disconnects its sessions? Automatically logoff? Straight away or after a period of time? Straight away means freeing up the VM so others can use it. On the other hand, what about roaming through a building? Disconnect, go to a different level connect and directly go on with your work because your session is there. I have seen the setting “after a period of 4 hours” so users could go home and continue there. Do keep in mind, when a session logs off after a disconnect, all open applications (yes, that also means an open Word document which cost hours of work) will close as well.

“Delete or refresh a desktop on logoff”; I do believe you have to pick either delete or refresh in this case. Refresh means reverting to the original snapshot where as delete means that the Linked Clone gets deleted and build up again. Delete takes longer and cost more IO’s.

Just a quick comment on “Remote Display Protocol” settings; when you pick PCoIP as the default protocol and don’t allow users to choose protocol, you will be able to enable Windows 7 3D Rendering and set an amount of Video Ram per VM.

“View Composer Disks”; you have an option to redirect system temp files and page file. This disposable file gets deleted after using the VM. Again, I believe that you always should use the delete or refresh option with a Floating Linked Clone Pool. In that case you don’t need to use a disposable file.

“Pool Sizing”; max amount of desktops and number of spare desktops. Do look back at the “Remote Desktop Power Policy”. All policies together set the behavior of the pool.

Example; max amount is 100. Spare is set to 20, Remote Power Policy is set to turned off and provisioning is “up-front”.  In this example all 100 VM’s get created and configured. When they all are created, 20 VM’s will remain turned on and 80 turned off. When someone logs on to a VM, only 19 VM’s are spare because 1 has been taken. Automatically 1 VM will be turned on to meet the policy again. This continues till all VM’s are turned on.

“vCenter Settings-Datastores”; I will come back on this topic later on. Also, a lot of information already has been released around this topic. It is important which datastores you use for Replica’s and Linked Clones so do get familiar with the options you have around storage.

Hopefully you have an understanding now what these options bring you. Know what to provide to your users.

Creating a Floating Linked Clone Pool (video included)

One of the things I always show during a demo of View Manager is the creation of a pool. I show which choices you have as an admin; dedicated/floating pools, 3D turned on/off, storage tiering etc. I created a video in which I provision a Floating Linked Clone Pool. My message; it is very easy to create pools in VMware View and also that for different user groups you can create different pools, which behave differently.

In this post I would like to discuss the creation of a Floating Linked Clone Pool with Refresh after first use. Why start with this pool? Because I think this is the pool to aim for, to go for, which will give you flexibility, efficiency and the least management.

A Floating Linked Clone Pool is a pool mechanism where there is no permanent relationship between user and VM. On a random day I could log on to VM1 and the next time logon to VM20. When you know, on average, 70% of your employees are working every day you only need to provision 70% of the workspaces/VM’s. You don’t have to create a VM for every employee. This way you can work more with concurrency. With 70 VM’s you can provide a workplace for 100 employees.  This impacts the size of your VMware View environment but also 3rd party software running on your VM’s. So, you could save on hardware and software when working with concurrency.

Linked Clone Pools mean that you work with a Parent VM, or also known as Golden Image. Instead of giving every concurrent user a VM, which is 30GB in size, you can create a pool based on a 30GB Parent VM and users start with a small “Linked Clones”. These Linked Clones will grow over time but you will save on storage capacity. With a Linked Clone Pool, you only have to patch and manage the Parent VM so you will have single image management.

You can delete/refresh these Linked Clones after first use so storage management will be reduced. You don’t have to monitor these Linked Clones in detail. Most likely, they won’t grow that much during a user’s workday. In my opinion, do use the delete of refresh option when you use Floating Linked Clone Pools. The pool is floating, so delete changes made by a user before the next user logs on. Everybody starts with a clean VM, with his/her set of applications.

A couple of things you have to keep in mind;

  • Profiles; because you delete/refresh the Linked Clones, profiles/user settings need to be saved centrally. Use View 5’s Persona Management or any other 3rd party tool like Roaming Profiles, RES, Appsense etc. This way a user will get his/her settings back when logging on to a clean VM.
  • Local Admin/Installation rights; when users have Local Admin rights, giving them a Floating Linked Clone Pool is most likely not the best choice. After a refresh/delete, all user installed applications are gone and the next time your users have to install the applications again..and again.
  • Virtualizing your applications will make this mechanism even more flexible and efficient.  You can then reduce the amount of different Parent VM’s with a specific application set locally installed.

After knowing the boundaries I believe most employees/users can be placed on a Floating Linked Clone Pool. You will get storage savings, you can work with concurrency, single image management and users will see a full, complete Windows desktop with applications

Next, I will discuss the options you get during the creation of a Floating Linked Clone Pool. To check out the options, see the video.

VMware View4-Pools; Basics

VMware View gives you a lot of options to chose from. One of them is about provisioning Automated Desktop Pools.

You could create a virtual desktop in vCenter for every user individually and make those VM’s available through the View Manager but is this you want to do for a large group of user? I don’t think so. This would be time consuming with a lot of manual work. For specific users, who, for example, need special software, settings etc, creating individual VM’s could be a valid option.

For groups of users, you would like to have an automatic way of rolling out virtual desktops. Let “the system” do all the work. This is what the View Manager/vCenter can do for you;

To use this mechanism you first create a VM with all the required settings and applications for those users. Don’t add the VM to the domain but shut it down and “convert to template”. When you configure a pool (and we will talk about the options shortly) through the View Manager, based on that template, View will send a signal to vCenter and vCenter will start cloning and customizing VM’s. This is all automated. Did you configure a pool of 10 VM’s, vCenter will create 10 VM’s for you, add them to the domain and make them available to a group of users you have entitled.

Now, let’s go back to the “Pool options”. View offers you 2 Pools mechanisms;

1. Persistent Pools,

2. Non Persistent Pools.

A Persistent Pool means that there will be permanent relation between user and VM. When a user logs on for the first time a VM will be assigned to him/her. Next time this user logs on again, he will connect to the same VM..and so on. There will be a relationship between user and VM. If you want users to be able to change setting, install applications, this is the pool to pick for them.

A Non persistent Pool means the relationship discussed above won’t happen. A user logs on to an available VM. Next time, he or she will log on to any available VM. After the logoff the VM goes back into the pool of available VM’s. With the right settings you could revert the VM to it’s original state so all changes made by a user are deleted. This pool can be used for a group of task workers; users who use applications do to their jobs and only that. No need for them to change setting or install applications. It shouldn’t matter where they logon to.

Now you can combine the Non Persistent/Persistent Pool with Full/Linked Clone VM’s. So you can get;

1. Persistent Pool based on Full Clone VM’s,

2. Non Persistent Pool based on Full Clone VM’s,

3. Persistent Pool based on Linked Clone VM’s,

4. Non Persistent Pool based on Linked Clone Clone VM’s,

Each combination has it’s own features and options. I will discuss those in the near future. Get to know all the options so you can make a good choice which pool or pools fit within your organization the best. You are not bound to 1 pool and mechanism of course. You could have them all for different kind of users.