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.

Creating a Dedicated Full Clone Pool and choices you have (video included)

In a previous post I wrote about creating a Floating Linked Clone Pool. In another article I went through the options you have when creating such a pool.

In this post I will discuss the reasons why to choose for Dedicated Full Clone Pool and the option/choices you have when creating 1 via View Manager. To get a good picture, take a look at the video first.

So, why choose for a Dedicated Full Clone Pool? My personal opinion; the 2 reasons would be;

1. Local Admin rights/Software Installation rights; In other words; if your users need and are allowed to install software on their desktops, do give them a Dedicated Full Clone desktop. I do see customers giving users with local Admin rights Dedicated Linked Clone desktops but you have to be careful; a recompose/rebalance will delete all changes to the Linked Clone and users need to re-install their software again. Another advantage is that you know what size the VM is (let’s see 30GB or 50GB). Multiply that by the amount of users and you know the storage capacity need for that pool. No need to monitor the growth of Linked Clones.

2. Local Mode; to be able to use Local Mode, you need a Dedicated pool, either Full Clone or Linked Clone. See #1 why I don’t see Dedicated Linked Clone pool happen. Also, Local Mode isn’t Composer aware. That means when you have a Dedicated Linked Clone pool and a user takes its VM offline, that VM won’t be a subject of a recompose when an admin patches the parent and wants to recompose the pool. Only after a Check In, the VM can be recomposed again, manually.

So, which options do you get when creating a Dedicated Full Clone Pool? Again, check out the video. I won’t discuss all options, only that ones I get most questions about. If you have read my previous blog about Floating Linked Clone pools, you will find that many options are the same between Floating Linked Clone and Dedicated Full Clone pools.

“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.

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.

“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.

To sum it up, think about Dedicated Full Clone desktops when you want to provide a desktop to users with admin rights/software installation rights. Also use this kind of pool mechanism when users need to take their desktops offline and use VMware View Local Mode. In other cases a Floating Linked Clone desktop should be the mechanism to go for.

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.