As you’ve probably heard by now, we’ve acquired RingCube Technologies. I’m really excited about this acquisition because I spend a lot of time in the field working with some of our largest customers…and doing VDI the “right way” in the enterprise space has been difficult at best up to this point. I’ll openly admit that. There’s a reason that many of our large, production XD implementations to date are using dedicated desktops. Sure, we’ve gotten away with pooled desktops for certain users and one-off use cases…but a correctly designed profile solution and isolation/streaming solutions can only take you so far in an enterprise with 100,000 desktops, thousands of apps and hundreds of different user groups. How do you get that level of personalization that many users require at a cost that doesn’t kill your VDI project? That’s where layering, “workspace virtualization” and companies like RingCube come in – I like to think of it as a hybrid between dedicated and pooled desktops. It gives us more personalization than a pooled desktop can offer, but without the dedicated desktop price tag.
Citrix personal vDisk 5.5
I could go on and on about the shortcomings of VDI and speculate where we’re going to take this technology, but that’s not what I wanted to share in this article. The real point of this article is to hopefully shed some light on what RingCube is and how it works. And one of the main reasons I wanted to share this is because I couldn’t find a lot of this info out there on the Net myself…so I’ve been playing with the Tech Preview of Citrix personal vDisk 5.5 (formerly called RingCube vDesk VDI Edition) in my lab the last couple weeks and trying to figure out how this stuff really works. Let me share some of the things I shared with my West Consulting team this past week at one of our monthly “Tech Forums” in Santa Clara…
After you download the bits from our website (by the way – see the comments below if you can’t find this separate download), you’ll see that there are 2 main components of personal vDisk – the agent and the server tools. Technically there are 4 things inside that Citrix personal vDisk zip file…but one is a PDF (our “documentation” up to this point) and there are two separate agent installers (one for 32-bit and one for 64-bit).
I’m not going to go through the installs and provide step-by-step directions here (because that’s precisely what’s in the PDF). But the installation/configuration of these 2 components couldn’t be easier…I was very impressed with how lightweight the components were and how easy this tech preview or “early access” release was to set up. Before I show you this next picture, let’s back up a step and dig into what this whole “workspace virtualization” thing is. Credit goes to Mike Larkin from RingCube for shedding some light on this topic for me. Workspace Virtualization refers to technologies that isolate a user’s workspace from the underlying architectural layers (in particular the OS). And a workspace is defined as the apps, settings and data “above” the OS – think layers of cake. Mike also informed me that workspace virtualization engines are a bit different than typical VM monitors – “instead of virtualizing hardware resources, workspace virtualization engines isolate and process OS-managed resources like file and registry settings. Any changes made to these resources are segregated and kept within a workspace disk.” OK…so it’s starting to make a little more sense now that we’ve defined workspace virtualization and what exactly a workspace entails. But how does it really work and how did RingCube implement it?
Like most other virtualization technologies out there, it works on the premise of interception and redirection. And in Windows systems, the interception is typically performed using a “mini-filter”, which is a software driver that attaches to the I/O processing stack inside Windows. Sound familiar? If you’ve used our AppStreaming or UPM technologies, those use file system filter drivers, too! And after you install the personal vDisk agent, you can actually look at the RingCube filter driver by executing “sc query ivm“. By the way – IVM stands for Intelligent Virtual Machine in case you were wondering.
So now that we’ve got that file system filter driver doing the interception, what about the redirection? Because for every I/O request that is generated, the IVM driver must decide what to do with it. To ease this process and help make these decisions, something called a resource catalog is used. Some of these I/O requests can be satisfied and redirected to the base disk, while others will go to that workspace disk we mentioned earlier. And this catalog is actively maintained and updated so we can do things like recomposition/construction later when updates are required to the base image, for example. Mike said it best – “you can think of the resource catalog as a set of rules that dictate where to find a particular resource”. After I installed the personal vDisk agent, I went digging again and found the catalog and rules that appear to govern redirection. I’ve highlighted rules because this was kind of amazing to me…if you’re savvy enough, you can actually go in and edit these plain-text configuration files yourself! Probably not recommended 99.9% of the time, but I could see our Consulting team doing this for certain customers that have some very unique/complex requirements. Here’s a screenshot I took showing the file system rules…you can really learn a lot by taking a look at these and seeing what we’re including/excluding. And you can also see some of the rules (toward the bottom) that we use to do that catalog construction I mentioned earlier…so the catalog and rules tell us where to redirect AND find things. It’s starting to make more sense. 😉
Workspace Disk Preferences
Let’s keep going…after installing the Citrix personal vDisk agent in the base image (I used Win7 in my lab), you will find a little black icon in your system tray…the most interesting option is “Preferences”. There are a few options in here as you can see, but the biggest being the drive letter you assign to that “workspace disk” we’ve been talking about (that holds all your personalization data). It will be the “V” drive by default and it will also be visible to users by default. But just like we do in most PVS deployments with the write cache drive, I’d recommend hiding that drive so users don’t get confused or mess with something they shouldn’t probably be messing with. And the beauty of it is you can simply check that box to “Hide Drives from User” and it will take care of it for you. Why might you ask is it “drives” plural? Hang in there…I’ll show you in a minute.
A little more detail about that “personal vDisk” drive – at system boot, the personal vDisk agent mounts the user’s workspace as the V drive. And the user’s profile and workspace settings are stored in a virtual hard disk (VHD) container. So RingCube is essentially doing here what Ardence (PVS) does…mounts a VHD file as a drive letter. This is also what we’re doing now with our AppStreaming technology…so this mounting concept should (hopefully) be familiar to some of you.
IVM is an “Early Start” Driver
After sealing up your base image (again, just follow the directions in that PDF document), you’re ready to create some VMs and attach some personal vDisk drives to those VMs. Simply create the VMs using the Desktop Studio like we always do…but there is one thing I wanted to point out here that is worth mentioning. Instead of the machine type-assignment being “pooled-random”, you need to select “pooled-static” (I’m using MCS as opposed to PVS in the example here). But what is the technical reason behind that? The reason is because the IVM filter driver is what’s referred to as an “early start” driver – this means that the vDisk needs to be attached at boot time as opposed to login time or a point in time later when requested (like we’d do with AppStreaming). The reason we do it early is so we can pick up virtualization of apps that also install drivers, like VPN software for example. It’s also how we can capture and store things like kernel objects and other early load drivers that we could never do before without RingCube! So it’s much more than user-installed apps and I hope everyone realizes that after playing with this technology a bit. But in order to do this, we have to attach that vDisk super-early (at boot time) and that’s what doesn’t fly with pooled-random. Not sure if that will change down the road, but right now it’s only technically possible with pooled-static. I also thought that was very interesting because it almost represents a change in philosophy at Citrix – we’ve seemed to always want to start with pooled or standard mode images and add the customization after the fact. Since that approach proved very difficult, I find it interesting we’re essentially flipping our approach on it’s head…starting with assigned and easily adding personalization makes sense. Here’s what I’m talking about when you’re creating a catalog via Desktop Studio…the rest of this process is really the same as we always do.
Citrix Personal vDisk Server Tools
After you’re done creating the appropriate number of VMs using the catalog wizard, it’s time to use those “server tools” we briefly mentioned at the beginning of this article. I installed the personal vDisk server tools on my Desktop Delivery Controller (v5.5) along with the Desktop Studio to make things easy. At this point (and you can imagine this will likely change in future releases…) the server tools are simply a collection of scripts and utilities. PowerShell scripts of course! And I’ve highlighted the main script you use in the screenshot below to create those personal vDisk drives we talked about earlier.
Workspace Disk Sizing
There are a couple things worth mentioning here…the minimum size for these personal drives is 2 GB which I found kind of interesting. In a typical XD+PVS implementation with Win7, we typically make our write cache drives about 3-5 GB in size. And these drives hold the PVS wC as I mentioned earlier, in addition to things like EdgeSight monitoring data, event logs and maybe some other stuff we need to persist between reboots. But with Citrix personal vDisks, we can do much more than that now…we can handle user-installed apps, plug-ins and even things like privileged services and kernel drivers! So while that’s great and we can really go to town with the personalization, this stuff adds up in terms of storage. So I’m thinking more like 5-10 GB (as opposed to 3-5 GB) is probably a good starting size for these personal vDisks. Personalization comes with a price after all.
Thick or Thin Workspace Disks? It Depends!
The other thing I wanted to mention is just like with the PVS write cache drives or MCS-based diff disks, these RingCube personal vDisk drives are a per-VM “storage hit”. So if you have 500 desktops and think you need 10 GB personal vDisk drives, that’s 5 TB of storage. But it’s never that easy and you should know that by now! The storage that is actually consumed by these diff disks or personal vDisks really comes down to what type of storage repository you are using (and also what the backend array supports if you’re using shared storage). Remember my article about how we “recommend NFS” (if you don’t – then read it now!)? The reason is simply because it’s easy to manage (don’t have to worry about things like VMs per LUN), but more importantly maybe, it supports THIN PROVISIONING! So if you’re using local storage based on the EXT3 format say in XenServer (like I am here in my example), then you’ll get lovely thin-provisioned personal vDisks. This means that 10 GB per-VM storage hit may all of the sudden become 1 or 2 GB per VM…so definitely be careful if you are using the old LVM-based storage or FC or iSCSI because you’ll likely get thick-provisioned disks. I’m not going to get into thin vs thick, VMFS or things like vStorage here, but just know that Citrix personal vDisks can take advantage of all of that stuff and these personal vDisks will be thin-provisioned if the SR type and/or array support it. Here’s what the virtual disks look like on a VM in my lab after running the “create-personal-vdiskpool” PowerShell script:
In my lab environment, I’m using local storage with the EXT3 format and MCS for image management . As you can see, there are 3 disks. The first disk is the MCS diff disk (my Win7 template is 24 GB). The second disk is the MCS identify disk that’s always 16 MB in size. And the last disk is what the PowerShell “server tools” script created…I specified a 3 GB size for my personal vDisk when it asked me. And since I’m using the EXT3 type of storage, both my diff disk and personal vDisk are sparse or thin.
Two Drive Letters for the Workspace Disk?
The last thing I wanted to show was how the resulting Win7 virtual desktop looks…here’s a shot of “My Computer”:
So you see 3 drives there…kind of weird, right? The C drive is my thin-provisioned diff disk and the V drive is my thin-provisioned personal vDisk drive that I specified earlier…but why is there another drive called “Citrix personal vDisk” that shows up as the E drive? If you take a look inside those drives, it becomes a little more clear. On the root of that E drive is a file called “UserData.vhd” and that’s what is actually being mounted as the V drive. And then if you look inside the V drive, you’ll see what looks like a near copy of my C/system drive. And this also goes back to IVM being an early start driver and having to attach the vDisk at boot time as opposed to later. It’s kind of confusing so a picture might help (and it makes more sense after you play with this stuff in your own lab – so download the bits and get started today!):
That’s about all I wanted to share at this point…hopefully that helps shed some light on how RingCube’s technology really works behind the scenes. It’s all about interception, redirection and being an early start driver so we can literally handle anything in terms of customization or personalization. I’m very excited about this acquisition and what the future holds for XenDesktop. This was that one layer on the cake that was missing…now we’ve got an answer. Stay tuned for best practices and additional articles on Citrix personal vDisks in the future.
Nick Rintalan, Senior Architect