As we all know, a single image management solution is extremely important in the VDI world. We will have hundreds or thousands of desktops that must be built and maintained. Image management is even more important when we have stateless desktops because we want our desktop to be reset to its original state after each user session. If you are doing stateless desktops without some form of image management in order to keep the desktops identical on initial startup, people would think you are crazy (and I think you would be).
What about RDS-based (session virtualization) implementations? I don’t hear much discussion on the need for image management with session virtualization. Is it because it is simply a common sense requirement that everyone already does or is it because people believe that you can get by without it?
Just in case it’s the latter, that’s take a trip in the “Wayback machine” (sorry, just saw Mr. Peabody and Sherman with my kids) to the 1990s and remember the world of WinFrame and MetaFrame and a world without single image management. We would build MetaFrame servers with Ghost, automated scripts and other deployment tools. They worked great. They let us build servers without having to sit in front of a screen all day hitting Next, Next, Next and did I mention Next. Deployment was easy. And then, a week or two later, you would start to hear the user complaints…
My app worked correctly yesterday, but it doesn’t today
Why is this different than it was yesterday?
Where did my add-on go?
This sucks. I hate it.
It all came down to a single reason, although our servers were built identically, they start to take on a unique persona once the server is turned on. And when users start connecting and doing things (work), the servers change more and more. Eventually, you begin to hear the users and life is no longer good if you are the IT Admin.
This was a major issue for every organization, which is why we have Provisioning Services. Regardless if your server is physical or virtual, they will be identical because Provisioning Services delivers a single image to every target. And Provisioning Services makes sure those targets remain consistent because on startup, each target starts at a clean state.
There are also some organizations that will want to extend their session virtualization environment to include VDI desktops. It only makes sense that your enterprise image management solution should be able to handle physical and virtual VDI, physical and virtual RDS and any other combination.
Before single image management solutions like Provisioning Services and Machine Creation Services came around, a user’s computing workspace was like a box of chocolates, you never knew what you were going to get.
Virtual Feller’s virtual thoughts
Test your Citrix knowledge…
True or False: Citrix Provisioning Services requires PXE
When using Provisioning Services, which is an optional component of XenDesktop, the target device utilizes a bootstrap file, which initializes the Provisioning Services stream. The target device must be able to obtain that bootstrap file, or else the stream will never begin.
Unfortunately, I still hear people saying that the only way to accomplish this is with PXE, which is incorrect.
Provisioning Services has a few different options for delivering the bootstrap file (these have been the most common approaches for many years):
- The DHCP Method:
Target device boots and sends DHCP discover broadcast
DHCP server responds with a client IP, Option 66 & 67
Target device uses the IP and contacts the server identified in Option 66 requesting the file from option 67.
The PVS server sends the requests bootstrap file via TFTP to the target device.
- The PXE Method:
Target device boots and sends DHCP discover broadcast with Option 60 PXE Client
DHCP server responds with IP
PVS Servers, which are running PXE Services, respond with Boot Server
Client uses the IP and picks one of the PVS responses and requests more information
PVS responds with boot server/file name information
Target device contacts the boot server and requests the file name.
The PVS server sends the requests bootstrap file via TFTP to the target device.
- The Local Method: An local file is created with the Boot Device Manager, a component of Provisioning Services. The local file is the bootstrap file, which tells the target how to contact the Provisioning Services farm. It is assigned to each target device either as an ISO attached to the target deices DVD drive, a USB drive, or as a small attached virtual hard disk drive.
It is a pretty good mix of organizations opting for DHCP or Local, much less using the PXE method. Both work, but DHCP and PXE requires more integration with your current environment than the Local method.
Daniel – Lead Architect
When installing XenDesktop 5, I bet many people were interested in using Machine Creation Services. And why not? It is easy to setup and configure because there is nothing to setup and configure. What could be easier? However, as many of you start to grow your desktop virtualization implementations to include more users, more desktops and more scenarios, you might realize that MCS is no longer able to meet all of your demands. What if you want to do Hosted Shared Desktops or Streamed VHD desktops? No MCS allowed.
If you want single image management, you are going with Provisioning Services. And if you start using PVS for these new use cases, will you also go back and update your other pooled VDI desktop users to also use PVS? Probably. It will make the operational aspect easier with only being required to support a single provisioning solution. Of course the big issue with moving from MCS to PVS is how to migrate your images.
Chances are, you spent a lot of time installing, configuring, and optimizing the base desktop image to align with your business. Do you really want to start over and create a new image for PVS? No way. Well, luckily, it isn’t too difficult to migrate images from MCS to PVS. A new Implementation Guide has just been added to the XenDesktop Design Handbook that provides the steps required to migrate images. Now you don’t have to figure this out on your own, just follow the steps. Take a look at the latest: Implementation Guide: Migrating from MCS to PVS.
I got a great question into the Ask the Architect email bag that I thought it would be great to share and potentially create a good discussion. Let’s say you are in a classroom setting where students are only in the class for 4 weeks and then after those 4 weeks, you need to reset all desktops back to a base image. Before desktop virtualization, you could use Ghost or other tools. But could we use desktop virtualization for this? Does it make sense?
As this environment is already using the local, physical desktops, I’m assuming the desktops have adequate resources, so let’s continue to use them by using the Streamed VHD FlexCast model. For those unfamiliar with Streamed VHD, I’ve provided a very rough drawing
Because the desktops have enough resources, we want to use those for computing power, thus reducing the need to buy a lot of servers in the data center. All we need is a Provisioning Services server. The classroom image (1 per classroom or 1 for all classrooms) will be streamed across the network to each physical desktop.
The unique thing with this use case is that students need to be able to modify the desktops and then when the 4 weeks class ends, those modifications are thrown away. With Provisioning Services, you simply use the Differential Disks, which will store the changes (write cache or delta disk) on the Provisioning Services server. So the PVS server will be holding the differential disks for all of the classroom desktops.
When the 4 week class is over, you simply remove the differencing disks and the desktops reset to the base state, ready for a new class. Pretty slick.
What do you need to make this work?
- One or two PVS servers (for redundancy) with enough storage to hold the disk image and the differential disks. You will want these disks to be fast as well to reduce latency
- At least 100Mbps switched to each endpoint
- Endpoints that are similar in hardware configuration (the more identical they are, the easier this will be)
- Network boot capabilities on the desktops and configured within the environment (DHCP, PXE, TFTP)
Note: If you want to see how to configure the difference disk or to see it in action, take a look at this CitrixTV Video.
I was recently asked a question about how we can still utilize endpoint hardware computing power when doing desktop virtualization. If doing a hosted VM-based virtual desktop, you can do the client-side rendering of flash and other multimedia activities, but there is another option that most people forget about… Streamed VHD. You simply turn that endpoint into a virtual desktop. Did you know you could do this? Honestly, I was happy when I got this question. Too many people forget about the Streamed VHD option and it solves so many of the Hosted VM-Based challenges like IOPS, storage, server costs, server footprint, scalability, etc. I think we should be talking about this option more as I think it is a great alternative for a large number of users.
But let’s get to the details. XenDesktop includes a feature called Provisioning Services. Most people think of this to deliver a desktop image to virtual machines, or even a XenApp image to a virtual machine. But guess what? You can also stream to bare metal hardware (desktop or server hardware). And that hardware doesn’t have to be locked up in the data center. It can be sitting under your desk. All we need is a network. That means you effectively turn your endpoint into a virtual desktop. BTW, this is what is known as Streamed VHD; at least that is what it is called within Citrix’s FlexCast model.
So let’s say you decided to go with Streamed VHD instead of the hosted VM-based desktop model (VDI), what do you need to think about?
- Desktop Image: One of the beauties about using Provisioning Services to stream to a VM is that each VM is identical from a hardware perspective. The hardware differences are hidden due because of the hypervisor. However, when streaming to a physical endpoint, this is not the case. Your desktop image must contain all of the drivers for the endpoint. This doesn’t seem like a big deal until you start looking at little nuances across 500 different physical endpoints, especially if there were not purchased at the same time. This doesn’t’ necessarily mean you have to now have 500 images. There is a thing called common image, which allows you to use one image and deliver it to multiple hardware types (assuming the chipset is the same). Honestly, I would only do common image to similar hardware profiles, as it will make things much easier. If you try to create one image for all of your Intel-based desktops, you will have an image with hundreds or thousands of different audio, video, network, etc drivers. Can become quite difficult to manage.
- Network Connectivity: Streamed VHD requires a network connection. In fact, it requires a fairly fast network connection. How fast? 100 Mbps switched at least. Remember, to boot up Windows 7, you will need to send roughly 200MB across the wire. If you have a slow network link, that 200 MB will take longer, thus adding a perceived slowness to the solution. The faster your network, the more responsive the desktop will seem.
- Network Stability: Even if you have a fast network, if it isn’t stable, you will notice. Streamed VHD is Just In Time, meaning that Provisioning Services only sends what the endpoint needs at that instant. If you are dropping packets, you will have slowness as the data is retransmitted.
- Write Cache: The write cache should be stored on the endpoints physical drives. That way we reduce the impact on the network and improve performance.
- User Data: Just like with Hosted VM-Based pooled desktops, a streamed VHD is often done in a read-only fashion where any changes are deleted upon reboot. That means you need good profile/data practices. User’s application settings should be stored on a network drive. All user data should be stored on a network drive.
This isn’t a complete list of what to look out for when doing Streamed VHD, but it is a start. One thing should look familiar; many of the recommendations mimic those of a Hosted VM-based desktop or a hosted shared desktop model. You are able to re-use the same design principles regardless of the type of virtual desktop you decide to implement. So it isn’t like we have to learn a whole set of new design best practices, we just have to apply them to a different type of virtual desktop.
Hope this helps