VMware Horizon 7 – Virtual Desktop Pools

Last Modified: Mar 15, 2018 @ 10:54 am

This topic details Horizon configuration for Virtual Desktop Agents. RDS Farms are detailed at http://www.carlstalhood.com/vmware-horizon-7-rds-farmspools/.


This post applies to all VMware Horizon versions 7.0 and newer

Change Log

Non-Persistent – Instant Clone vs Composer

In general, use Instant Clone, if possible. Here are some advantages of Instant Clone over Composer:

  • No Composer server needed
  • Faster provisioning and recompose – lower IOPS during these operations
  • Instant Clones are always non-persistent. Composer can be mis-configured to not refresh or delete on logoff.
  • If multiple datastores, rebalance is automatic. With Composer, rebalance is a manual operation.
  • Confusing Composer features like Persistent Disks, Disposable Disks, disk space reclamation, etc. are not needed with Instant Clones. Replica Storage Tiering is still an option for Instant Clone.

Requirements for Instant Clones:

  • Horizon Enterprise licenses
  • ESXi 6 Update 1 or newer
  • Virtual Machine hardware version 11 or newer
  • View Storage Accelerator must be enabled
  • Instant Clones were added to RDS Machines in Horizon 7.1 and newer.

Limitations of Instant Clones:

  • Horizon 7.3 and newer supports dedicated pools
  • Like Composer, the master VM snapshot is copied to every LUN containing linked clones. Unlike Composer, an additional machine called the “parent” machine is created on each host and each datastore. These “parent” machines are powered on and consume CPU/Memory/Disk resources.
  • The Master VM and the snapshot used by the Instant Clones cannot be deleted.

Also see VMware Technical White Paper VMware Horizon 7 Instant-Clone Desktops

Infrastructure Prep

  • Each pool points to one vSphere cluster. 32 hosts maximum. If Virtual SAN, 20 hosts maximum.
  • Ensure vSwitch has sufficient ports for the new virtual desktops.
  • Ensure the VLAN has enough DHCP addresses for the desktop pool.
    • Lower the DHCP lease time too.
  • KMS Licensing is required for Windows 7+ and/or Office 2010+
  • The virtual desktop pools will use the same hardware specs (e.g. vCPUs, memory size, network label, GPU) specified on the master virtual desktop. Adjust accordingly.
  • The parent image should be in the same cluster where the linked clone virtual desktops will be created.
  • If Instant Clone:

Disk space

  • One or more LUNs for storage of the virtual desktops. Maximum of 140 desktops per VMFS5 LUN. 250+ desktops per NFS LUN.
  • By default, Replicas are copied to each LUN that contains virtual desktops. It’s possible to place the Replica and the linked clones on separate LUNs. If you use a dedicated Replica LUN, then there is only one copy of the Replica no matter how many LUNs are used for storing virtual desktops. Note: NFS VAAI requires Replica to be copied to each virtual desktop LUN.
    • If Instant Clone, the “parent” VM on each datastore is powered on and consumes CPU, Memory, and disk space (.vmdk and .vswp).
  • If Composer:
    • Persistent disks can be used to store the user’s profile (but not user-installed applications). To enable Persistent disks, the pool must be Dedicated Assignment. You can place the persistent disks on a LUN that is separate from the linked clones LUN. A better option is to use View Persona or User Environment Manager instead of Persistent disks.
    • Disposable disks. In Dedicated Assignment pools, you have the option of creating Disposable Disks. These disks are always stored with the virtual desktop (you can’t choose a dedicated disposable disk LUN). If you’re planning to frequently refresh the desktops, there’s no point in using Disposable disks.
  • .vswp files. Allocate disk space for memory swap and graphics memory overhead. Any unreserved memory will result in a .vswp file. For example, if the master virtual desktop has 2 GB of RAM configured and none of it is reserved then each linked clone will have a 2 GB .vswp file.

Floating (Non-Persistent) Automatic Desktop Pool

  1. DHCP – Make sure the master VM is configured for DHCP, and is joined to the domain. KMS Licensing is also required.
  2. Provisioning Agent – Ensure Horizon Agent has the imaging component you intend to use. You can install Instant Clone, or Composer, but not both.
  3. If Instant Clone, Persona must be disabled.
  4. Computer Group Policy – Make sure the Master VM is in the same OU as the Linked Clones so the Master VM will get the computer-level GPO settings. Run gpupdate on the master after moving the VM to the correct OU. New Instant Clones do not immediately refresh group policy so the group policy settings must already be applied to the master VM. See VMware 2150495 Computer-based Global Policy Objects (GPOs) that require a reboot to take effect are not applied on instant clones.
  5. Video memory – If Instant Clone, in vSphere Client, edit the master virtual machine’s settings, expand Video card, and configure the displays and video memory (click the Video Memory Calculator button).
  6. Snapshot – Take a new snapshot of the master image.
  7. If you wish to automate the creation of the pool, Aresh Sarkari at Automating Desktop Pool creation using PowerCLI – VMware Horizon 7.x explains New-HVPool -spec 'C:\temp\DesktopPool\LinkedClone.json' and the contents of the JSON file.
  8. In View Administrator, on the left, expand Catalog, and click Desktop Pools.
  9. On the right, you can clone an existing pool. This action copies many of the settings from the existing pool into the new pool.
  10. Or just click Add.
  11. In the Type page, select Automated Desktop Pool, and click Next.
  12. In the User Assignment page, select Floating, and click Next.
  13. In the vCenter Server page, select either Instant clones, or View Composer linked clones.
  14. Select the vCenter server, and click Next.

  15. Pool name – In the Desktop Pool Identification page, enter a name for the pool. Horizon creates a vCenter VM folder with the same name as the Pool ID.
  16. Display name is the name of the icon displayed in Horizon Client.
  17. Access Group – Assign the pool to an Access group to restrict delegated administration. Note: If you intend to integrate with VMware Identity Manager (aka Workspace ONE), then make sure you select the root (/) Access group. Other Access Groups won’t work. Click Next.
  18. In the Pool Settings page, do the following:
    1. Horizon 7.3 lets you select a Category Folder where the published icon will be placed on the client’s Start Menu. This applies to Horizon Client 4.6 and newer. See Configuring Start Menu Shortcuts for Desktop and Application Pools at VMware Docs.

    2. Change the selection for Automatically logoff after disconnect to After, and specify a disconnect timer.
    3. If View Composer, change the selection for Delete or refresh desktop on logoff to Refresh Immediately. Instant Clones always refresh after logoff.
    4. Horizon 7.1 and newer allows users to restart machines gracefully, instead of a reset.
    5. Scroll down.
    6. In the Remote Display Protocol section, select a Default display protocol. New in Horizon 7 is VMware Blast.
    7. In Horizon 7.3.1 and newer, if you set the Default display protocol to PCoIP, then HTML5 Blast won’t work unless Allow users to choose protocol is set to Yes. See VMware Communities Upgraded from 7.0.1 to 7.3.1, getting “You cannot access your applications or desktops”… error.  💡
    8. Composer and Instant Clone have different options for 3D Renderer. Horizon 7.1 adds an option for NVIDIA GRID VGPU when creating Instant Clones.

      1. Monitors/Resolution – If Composer, increase the number of monitors and resolution. This causes more video memory to be allocated to the VMs. If Instant Clone, these settings are configured on the Master VM’s settings in vSphere Client.
    9. Check the box next to HTML Access.
    10. Horizon 7.4 adds the Allow Session Collaboration checkbox.

      1. This enables a VMware Horizon Collaboration icon in the system tray of the remote desktop, which lets you invite users to collaborate.

      2. The invite is a URL that you can run (or click) on the collaborator’s machine that has Horizon Client 4.7 or newer installed.
      3. To give control to the collaborator, double-click the green icon to open the Session Collaboration window. Or open the icon in the system tray.

      4. Adam Gleeson at VMware Horizon Virtual Desktop Session Collaboration explains the limitations of this feature.  💡
    11. Click Next.
  19. In the Provisioning Settings page, enter a naming pattern. You can use {n:fixed=3} to specify the location for the incremented numerals. Make sure the naming pattern does not conflict with any existing machines. Note: Instant Clones does not support manual machine names.
  20. Enter the maximum number of desktops to create. You can create all of them now or wait to create them as users connect. When a user connects to one of these desktops, Horizon immediately creates another desktop (up to the maximum) and powers it on.
    1. In Horizon 6.2 and newer, the maximum number of desktops per pool is 2,000. Ensure that the DHCP scope has enough addresses for the Max number of desktops specified here.
  21. Enter the number of spare (idle, unassigned, unused) desktops you want powered on. Horizon maintains this number up to the maximum number of desktops.
  22. Click Next.

  23. If Horizon Composer, in the Disposable File Redirection page, select Do not redirect disposable files, and click Next. Since we’re refreshing the desktops on logoff, there’s no need for a separate disposable disk.
  24. In the Storage Optimization page, if you want to use storage tiering, check the box for Select separate datastores for replica and OS disk. Click Next.
  25. In the vCenter Settings page, most of these are self-explanatory. Click Browse next to each option, and make your selection.
  26. Horizon 7.1 adds the ability to select multiple Networks for the Instant Clones.
  27. If the Parent VM is not showing up in the list then check the box next to Show all parent VMs and click the next to the VM to see the issue.
  28. Instant Clones monitors/resolution – If Instant Clones, the number of monitors configured on the Master Image (snapshot) is displayed. If not correct, delete the snapshot, edit the master VM’s Hardware Settings, expand video card, make your desired changes, and take another snapshot.
  29. Datastores – select one or more datastores on which the virtual desktops will be placed.
  30. If Composer – select your Storage Overcommit preference. Since you are refreshing desktops on every logoff, they should stay small, so Unbounded is probably acceptable. VMware recommends no more than 140 virtual desktops per VAAI-enabled LUN. If the LUN is not VAAI enabled, 64 is the maximum. If Instant Clone, Unbounded is the only option. Click OK when done.

  31. For Select Replica Disk Datastores, select one datastore for the replica, and then click OK.
  32. Then click Next.
  33. If Instant Clone, View Storage Accelerator and Transparent Page Sharing are enabled by default and can’t be disabled. Storage reclamation doesn’t make sense for Instant Clone.
  34. If Composer, in the Advanced Storage Options page, be aware of the following:
    • View Storage Accelerator creates digest files, which consumes disk space. Creation of the digest files requires IOPS. Make sure to set the blackout times so that this digest creation does not happen during peak hours.
    • Reclaim VM disk space is not useful for non-persistent desktops.
  35. If you scroll down, there’s a new Transparent Page Sharing Scope. The default is no sharing. Use one of the other options to enable sharing. Click Next.
  36. In the Guest Customization page, next to AD container, click Browse, and select the OU where virtual desktop computer objects will be placed. Horizon 7.3 lets you type (paste) into the AD container field.
  37. Consider checking the box next to Allow reuse of pre-existing computer accounts. Click Next.

  38. In the Ready to Complete page, you may entitle users now or later. Click Finish.
  39. To check the status of the virtual desktops, go to Catalog > Desktop Pools.
  40. Double-click the pool name.
  41. If you scroll down, the vCenter Server section has a State field.
  42. vSphere Client shows recent tasks.
  43. On the Inventory tab, click Machines (View Composer or InstantClone Details). There’s a refresh button.
  44. You can also view the status of the desktops by looking at the Dashboard.
  45. Your VMs should eventually have a status of Available.
  46. If you encounter issues with View Composer, see VMware 2087379 VMware Horizon View Composer help center
  47. If Instant Clone, the Master VM and the snapshot used by the Instant Clones must not be deleted.

Entitle Virtual Desktops

To make a pool accessible by a user, it must be entitled.

  1. Go to Catalog > Desktop Pools.
  2. Double-click the pool name.
  3. On the Summary tab, click Entitlements, and then Add entitlement.
  4. In the Add Entitlements window, click Add.
  5. Find a group that will have permission to log into these desktops, and click OK.
  6. Then click OK.
  7. For a Persistent pool, go to the Inventory tab to see the desktops. Select a desktop and under More Commands click Assign User.
  8. Find the user and click OK. Repeat to assign users to additional desktops.

Add Machine to Pool

  1. On the left, expand Catalog, and click Desktop Pools.
  2. On the right, highlight an existing Automated Desktop Pool, and click Edit.
  3. Switch to the Provisioning Settings tab, and change the Max number of machines. Then click OK.
  4. With Instant Clones, this won’t take very long.
  5. With Composer, it might take a few minutes for the machine to boot a couple times while running QuickPrep.
  6. The pool now has new machines.

Update a Pool

  1. Power on the master/parent virtual desktop.
  2. If App Volumes agent is installed, you might have to disable svservice before you can make changes. See VMware 2129528 Virtual Machine changes are not saved in App Volumes.  💡
  3. After making your changes, shut down the master virtual desktop.
  4. Right-click the virtual machine and take snapshot. You must create a new snapshot.
  5. Name the snapshot, and click OK.
  6. If you do this often, you’ll need to periodically delete the older snapshots. Right-click the master VM, and click Manage Snapshots.
  7. Delete one or more of the snapshots.
  8. In View Administrator, go to Inventory > Pools.
  9. Double-click a pool name.
  10. For Instant Clones, on the Summary tab, click Push Image, and then click Schedule.
  11. Or if Composer, click View Composer, and then click Recompose.
  12. In the Image page, select the new snapshot. Notice the snapshot’s monitor/resolution settings. Click Next.
  13. In the Scheduling page, decide when to apply this new image, and then click Next.
  14. In the Ready to Complete page, click Finish.
  15. On the Inventory tab, you can click Machines (InstantClone Details) or Desktops (View Composer Details) to check on the status of the push/recompose task. Notice the Pending Image.
  16. For both provisioning methods, the snapshot is copied to each datastore.
  17. For Instant Clone, the snapshot is attached to a Replica, powered on, then powered off. Digest is then computed. Then the Replica is attached to a parent, and the parent is powered on. This takes a bit of time. But the Instant Clones remain accessible until the Replica preparation is complete.
  18. Once Replicas are prepared, for Instant Clones, each machine is rebooted once. While with Composer, each virtual machine is rebooted three times, which can be painful. Composer consumes considerable IOPS and time during Recompose operation. To speed up Recompose, switch to Instant Clones.
  19. Eventually the Pending Image field will be cleared and the desktops are available again.

Host Maintenance – Instant Clones

In Horizon 7.1 and newer, ESXi hosts running Instant Clones can be placed into maintenance mode without any special instructions.

Instant-Clone Maintenance Utilities at VMware Docs:

  • IcUnprotect.cmd – use this utility to unprotect folders and VMs, delete VMs, and detect VMs whose master image or snapshot is deleted.
  • IcMaint.cmd – This command deletes the master images, which are the parent VMs in vCenter Server, from the ESXi host, so that the host can be put into maintenance mode. In Horizon 7.0.3, this utility is the only method to prepare a Instant Clone ESXi host for maintenance mode. Also see VMware 2144808 Entering and exiting maintenance mode for an ESXi host that has Horizon instant clones.

Related Pages

4 thoughts on “VMware Horizon 7 – Virtual Desktop Pools”

  1. Nice article , but still confused about where to store user profiles and data .. is it OK to store it on SAS 15 K and replica on SSD, and if i used Persona how to avoid IOPs issue?

  2. Hi Carl,
    I need your input for unmanaged desktops using Manual pool..basically to access it from outside of the network.
    I have followed all the guidelines and still cannot connect to the desktops.
    Here is what I have done:
    1. Install the agent on the machine.
    2. Entered outside VIP(Site for connection servers) not the connection server. The agent suggested to add some ports to Netscaler.
    3. Added all the ports to the VIP (blaster, 389, 3389, and others)
    4. Created a manual pool and added only one machine
    5. Added entitlement
    6. Everything looked good, the desktop got published
    7. Tried to access it and couldn’t.

    What am I missing?

    As always, your input is greatly appreciated.


Leave a Reply