Citrix: MCS, Citrix’s best kept secret for server virt guys?
The last couple of days I had some great discussions with co-workers and some (VMware minded) guys on Twitter. The subject? The complexity of setting up Citrix XenDesktop, most of them refer to some demo they saw or things they’ve read on blogs/twitter etc while they know View is pretty easy to configure. But the thing is that those demo’s are mostly from a VMware View point of view and in the comparissons I’ve seen, Citrix PVS is used.
So what is Citrix Provisioning Services
Citrix PVS is a more complex way to deliver an OS to a VM as showed on the following diagram:
What’s important here is that you should realize that Citrix PVS is a independent solution from XenDesktop. You don’t have to use XenDesktop in order to leverage PVS and vice verse.
From the eDocs pages:
Most enterprises struggle to keep up with the proliferation and management of computers in their environment. Each computer, whether it is a desktop PC, a server in a data center, or a kiosk-type device, must be managed as an individual entity. The benefits of distributed processing come at the cost of distributed management. It costs time and money to set up, update, support and ultimately decommission each computer. The initial cost of the machine is often dwarfed by operational costs.
Over the years, various software solutions have been offered that are designed to address the operational challenges faced by IT organizations. For example:
Imaging solutions allow backup and duplication of existing machines.
Distribution tools can automate many of the tasks required to install and upgrade software across many computers.
Simplifies the management of the end points by removing most software and processing locally.
Each of these approaches has benefits and limitations. Provisioning Services takes a very different approach by fundamentally changing the relationship between hardware and the software that runs on it. By streaming a single shared disk image rather than copying images to individual machines, Provisioning Services enables organizations to reduce the number of systems that they manage, even as the number of computers continues to grow. This solution simultaneously provides the efficiencies of a centrally managed solution with the benefits of distributed processing.
Provisioning Services Streaming Technology
Provisioning Services streaming technology allows computers to be provisioned and re-provisioned in real-time from a single shared-disk image. In doing so, administrators can completely eliminate the need to manage and patch individual systems. Instead, all image management is done on the master image. The local hard-disk drive of each system may be used for runtime data caching or, in some scenarios, removed from the system entirely, which reduces power usage, system failure rates, and security risks.
Provisioning Services Solution
The Provisioning-Services solution’s infrastructure is based on software-streaming technology. Using Provisioning Services, administrators prepare a device (master target device) for imaging by installing any required software on that device. A vDisk image is then created from the master target device’s hard drive and saved to the network (on a Provisioning Server or storage device).
Once the vDisk is available from the network, the target device no longer needs its local hard drive to operate; it boots directly across the network. The Provisioning Server streams the contents of the vDisk to the target device on demand, in real time. The target device behaves as if it is running from its local drive. Unlike thin-client technology, processing takes place on the target device.
During the conversations it happens quite often that when I mention MCS people don’t really know what MCS is.
So what is Citrix Machine Creation Services
Daniel Feller wrote a great blog on what MCS is:
Machine Creation Services (MCS) is one option for desktop image delivery. It simply uses the hypervisor APIs (XenServer, Hyper-V, and vSphere) to create, start, stop, and delete virtual machines. Let’s say we want to create a catalog of desktops with MCS, you can pick either:
- Pooled-Random: Desktops are assigned randomly. When they logoff, the desktop is free for another user. When rebooted, any changes made are destroyed.
- Pooled-Static: Desktops are permanently assigned to a single user. When a user logs off, only that user can use the desktop, regardless if the desktop is rebooted. During reboots, any changes made are destroyed.
- Dedicated: Desktops are permanently assigned to a single user. When a user logs off, only that user can use the desktop, regardless if the desktop is rebooted. During reboots, any changes made will persist across subsequent startups.
The creation process is as follows regardless if you are doing pooled-static, pooled-random or dedicated:
- Manual Step: First, have your master virtual machine created. This means you need to define the VM (vCPU, RAM, Disk space), install the OS, install the apps and make any configurations you want to be part of your user’s desktops. If you are thin provisioning the disk, you only use the amount needed up to your maximum amount define.
- Manual Step: Within Desktop Studio, you create a catalog for a pooled desktop and you have to select the master virtual machine you want to base other VMs on. This is the one you installed and configured with the OS and applications.
- Automatic Step: MCS creates a snapshot (thin) of the master VM unless you selected a snapshot, which will not create another snapshot. This uses minimal space
- Automatic Step: MCS creates a full copy of the point in time snapshot and places this on each storage repository defined in the host connection. This will utilize the amount of space used for your complete image.
- Automatic Step: MCS adds these desktops into Active Directory. This step creates the unique AD identities to be used later in the process
- Automatic Step: MCS creates the number of VMs specified in the create catalog wizard with two disks defined for each VM. However, in addition to the 2 disks for each VM, a master will also be be stored in the same storage repository. If you have multiple storage repositories defined, then each one will get the following types of disks
- The full snapshot, which is read-only and shared across the VMs just created. Each storage repository will get one. This is the same disk identified in step 4.
- A unique identity disk (16MB) used to provide each VM with a unique identity. Functionality within the XenDesktop Controllers creates the identity disks. Each VM gets an identity disk.
- A unique difference disk used to store any writes made to the VM. The disk is thin provisioned (if supported by the storage) and will increase to the maximum size of the base VM if required. Each VM gets a difference disk.
The differences appear when the desktops are put into production:
Pooled-Static Pooled-Random Dedicated First logon User-to-desktop association stored permanently in the SQL Database User-to-desktop association stored temporarily in the SQL Database User-to-desktop association stored permanently in the SQL Database Logout User-to-desktop association remains User-to-desktop association removed User-to-desktop association remains Subsequent logons XenDesktop Controller directs the user to the permanent desktop association XenDesktop Controller picks any available desktop and temporarily stores the association in SQL Database XenDesktop Controller directs the user to the permanent desktop association Reboot Differencing disk disconnects and a new disk is created. Old differencing disk deleted after startup complete Differencing disk disconnects and a new disk is created. Old differencing disk deleted after startup complete Differencing disk is permanent
So if you want to focus on the differences in complexity of both View and XenDesktop remember that MCS is available and pretty easy to configure and more comparable to VMware View with the Composer. While PVS is more scalable and suitable for deployment of different OS’s with different purposes. Those are the key decision making points when one has to choose between PVS/MCS and keep in mind that it’s relatively easy to migrate from MCS to PVS as stated in this blog there’s a well written implementation guide here.