Lab Ops 7 – Setting up a pooled VDI collection in Windows Server 2012 R2
In Windows Server you can create two kinds of Virtual Desktop Infrastructure (VDI), personal or pooled. A personal collection is a bit like a company car scheme where everyone chooses their own car. This means there needs to be car for everyone even if they are on leave or sick etc. and each car needs to be individually maintained. However the employees are really happy as they can pimp their transport to suit their own preferences. Contrast that with a car pool of identical cars, where an employee just takes the next one out of the pool and when its brought back its refuelled and checked ready for the next user, and you don’t need a car for everyone as there’ll be days when people just come to the office or use public transport to get to their destination. That seems to be a better solution than company cars for the for the employer but not so good for the employees. Pooled VDI collections work like pool cars in that they are built from one template and so only one VM has to be maintained, but that means every user has the same experience which, might not be so popular. However Pooled VDI in Windows Server 2012 has a method for personalising each users experience while still offering the ability to manage just one template VM and that’s why I want to use pooled VDI in my demos.
Carrying on from my last post I right click on RD Virtualisation Host and select Create Virtual Desktop Collection
Now I get specify the collection type
Having chosen the collection type I now need to pick a template on which to base the pool..
I found out that you can’t use the new Hyper-V generation 2 VMs as a VDI template even in Windows Server 2012R2 rtm. This does mean you can use that WimtoVHD Powershell script I have promoting in earlier posts in this series to create my template directly from the Windows installation media.
Note: you’ll need windows 8.1 enterprise for this which is currently only available on msdn, until 8.1 is generally available in a couple of weeks when there should be an evaluation edition available
In fact for a basic VDI demo the VHD this creates can be used as is; all you need to do is create a new VM from this VHD to be configured with the settings each of the VDI VMs will inherit, such as CPU, dynamic memory settings, Virtual NICs and which virtual switches they are connected as well as any bandwidth QoS you might want to impose..
Here you can see the setting for my template VM such as it being connected to my FabricNet virtual switch.
Normally when you build VMs from templates you will want to inject an unattend.xml file into the image to control its settings as it comes out of sysprep (as I have done in earlier posts in this series). This wizard helps you with that or you can just enter basic settings in the wizard itself as I have done ..
and not bother with an unattend.xml file at all.
Now I can start to configure my collection by giving it a name, how many VMs it will contain and specifying who can access it ..
In a production environment you would have several virtualization hosts to run your collection of VMs and here you can specify the load each of those hosts will have.
Having specified which hosts to use I can now get into the specifics of what storage the VMs will use. I am going for a file share, specifically one of the file shares I created earlier in this series, which will make use of the enhancements to storage in R2. Note the option to store the parent disk on a specific disk, which might be a good use of some of the new flash based devices as this will be read a lot but rarely updated.
My final choices is whether to make use of user profile disks. This allows all a users settings and work to be stored in their own virtual hard disk and whenever they log in to get a pooled VM, this disk is mounted to give them access to their stuff. This is really useful if all your users only ever use VDI as you don’t need to worry about all that roaming profiles and so on. However if your users sometimes use VDI and sometimes want to work on physical desktop such as laptops then you’ll want to make use of the usual tools for handling their settings across all of this so they get the same desktop whatever they use - remember we work for these people not the other way around!
That’s pretty much it - the desktops will build and your users can login via the web access server in my case by going to http://RDWebAccess.contoso.com/RDWeb
To demo the differences in performance on a pooled VDI collection that sits on a storage space that's had deduplication enabled I could create another collection on the Normal* shares I created in my post on storage spaces by doing this all again. Or I could just run a PowerShell command, New-RDVirtualDesktopCollection, and set the appropriate switches..
$VHost = "Orange.contoso.com"
$RDBroker = "RDBroker.constoso.com"
$ColectionName = "ITCamps"
#The VDI Template is a sysprepped VM running the Virtual Hard Disk, network settings etc. that all the pooled VMs will inherit. The VHD will run windows 8.1 configured and sysprepped with any applications and setting needed by end-users
$VDITemplateVM = get-vm -ComputerName $VHost -Name "Win81x86 Gen1 SysPrep"
New-RDVirtualDesktopCollection -CollectionName "ITCamp" -PooledManaged -StorageType CentralSmbShareStorage -VirtualDesktopAllocation 5 -VirtualDesktopTemplateHostServer $VHost -VirtualDesktopTemplateName $VDITemplateVM -ConnectionBroker $RDBroker -Domain “contoso.com” -Force -MaxUserProfileDiskSizeGB 40 -CentralStoragePath”\\fileserver1\NormalVMs” -VirtualDesktopNamePrefix "ITC" -OU “VDICampUsers” -UserProfileDiskPath “\\fileserver1\NormalProfiles”
My good friend Simon May then gradually add in more and more VMs into the collection with the Add-RDVirtualDesktopToCollection cmdlet to see how much space he can save.
The other really clever thing about a pooled VDI setup like this, is maintaining it. Clearly you will want to change the tem[plate the Pooled collection is based on from time to time, for example to add or remove version of applications and to keep patches up to date. All you have to do is to make another template VM with the new applications and latest patches and then Update the collection from the Collection management screen, or via the Update-RDVirtualDesktopCollection PowerShell cmdlet for example
PS C:\> Update-RDVirtualDesktopCollection -CollectionName "ITCamp" VirtualDesktopTemplateName "$VDITemplateName" -VirtualDesktopTemplateHostServer $VHost -ForceLogoffTime 12:00am -DisableVirtualDesktopRollback -VirtualDesktopPasswordAge 31 -ConnectionBroker $RDBroker
where I would have set $VDITemplateName to be the modified and sysprepped VM to base the updated collection on. Note the Force LogOffTime setting; that’s where users will be thrown out and forced to log on again. If you don’t set this they’ll only get to use the new version when the login and logout again. However you manage that if you have used User Profile in the collection as I have done their preferences and setting will persist on the updated collection.
So that’s the basics of setting up VDI on a laptop for your evaluations. From here I could go on to ad other parts of the Microsoft remote desktop solution such as;
- Set up RemoteApp the business of delivering individual applications over the Remote Desktop Protocol (RDP)
- Add in RD Session Hosts and RDS Collections to deliver the traditional terminal services functionality and still the most efficient way to deliver remote desktops top users
- Add in an RD Gateway to open up the RD infrastructure to remote users. Clever use of the Remote Routing and Access Services role in a VM that’s connected to virtual networks can be used to simulate this connectivity from just one host.
- Add in a Licensing host for production environments
However I would be interested to know what you would like me to post next, so please add comments or if you are shy e-mail me