VMworld 2014: Re-imaging VDI for Next-Gen Desktops

Session EUC2551

VDI 1.0 challenges: Storage cost and performance; 3D Graphics; Application management; Provisioning: All adds up to a frustrating experience

Broad Goals for Next Gen VDI

  • Efficient use of infrastructure – just in time desktops w/ zero copy architecture – Building at the point of demand
  • Improved flexibility- user installed apps – Dynamically assemble of JIT desktops
  • Best user experience – Low latency I/O – advanced vSAN and RAM desktops
  • Simplified implementation – adaptive designs, easy deployment

Next-Gen Solutions

  • vSAN storage: simple, affordable
  • 3D Graphics: SVGA shared GPU and DGPU for power users
  • Application management: Layering for real-time desktops – fast & flexible
  • Provisioning: Rapid hot cloning of VMs – 10x improvements (Project Fargo)
  • Decision free VDI: Simpler path to success than ever before

New Desktop Opportunity

  • VMware is poised to disrupt assumptions about VDI
  • Great user experience
  • Easier to manage
  • Build VMs on demand
  • Layering with CloudVolumes


  • Reliable, scalable performance
  • Lowest cost in the industry
  • Planning is easy
  • Uptime
  • Autonomy

Next-Gen VDI: Leaner, greener and much faster

  • Protect only what matters
  • Consider file-sync service for user documents
  • Leveraging new flash technologies: UltraDIMM (flash on DIMM) for microsecond writes

VSAN Design Topology for VDI

  • Full PC in the datacenter – Inefficient design yet affordable with VSAN – Developers and some users
  • Non-persistent task worker – Composer based clones – replication optional. Limited flexibility
  • Non-persistent knowledge worker – Layering plus VSAN – Full user state preserved, no replication of OS VMDK

VSAN Design – Non-persistent designs – gives persistent experience with a non-persistent VDI

VSAN Futures

  • All flash VSAN designs – High grade enterprise flash for cache tier, but high capacity low cost TLC SSD for data tier
  • Cache tier: $4/GB data tier flash in 40c/GB range
  • Key technologies: SanDisk ultraDIMM,

Layering 101:

  • Types of layering: Offline composition (Mirage) vs. Real Time (CloudVolumes)
  • Real-time composition leverages vSphere VMDK to mount and near instant application insertions
  • The OS doesn’t realize the CloudVolumes are even mounted. It is very transparent.

CloudVolumes Key benefits

  • Live delivery of applications
  • Image diversity solved
  • Exponential infrastructure efficiency

Project Fargo

  • Uses a VM hot cloning technology to create child VMs that share all memory pages w/ parent. Think linked clones for memory and disk.
  • A running VM is put into a zombie state and hot-cloned to create replicas. Avoid the whole boot cycle, including the associated I/Os.
  • Pre-emptive memory sharing, lower CPU, I/O reduction
  • 30x improvement in provisioning

Just in time desktop revolution

  • Build to order VDI
  • Very little CPU and modest disk IO to fork a new VM
  • Operational flexibility
  • Combine Project Fargo and CloudVolumes for near instant VDI provisioning

Zero Copy Architecture

  • Transfer bits on demand, no more tax before consumption
  • Examples are Project Fargo and CloudVolumes

Project Meteor

  • Brining together Project Fargo and CloudVolumes
  • Provision new customized desktops in 5 seconds
  • This is VDI simplified

CloudVolumes Pt 4: Testing the AppStack

This is the fourth installment of my CloudVolumes spin around the block. So far the installation as has been quick, encountered no product problems, and the experience seems polished even for a v1.0 product. Given my good experience thus far, I can’t wait to see CloudVolumes AppStack in action. Can I really instantly provision Office 2013 or browsers extensions to a running VM, or will I get a blue screen of death? Read on. If you want to start back at the beginning of this series, go here.

To recap we’ve created an AppStack of Office 2013, Adobe Reader IX, Java 7 update 25, and Adobe Flash Player 11. These are very common products probably in many golden images, and they often get regular security updates. My browser of choice is Internet Explorer 10, so let’s see how CloudVolumes handles browser-plugins.

Assigning an AppStack

Since we created an AppStack I now have to assign it, otherwise it won’t be of any use to me. The assignment process is very straight forward and completely AD integrated. First I locate my AppStack in the console and click Assign. I can then pick from a variety of AD objects (users, groups or computers) to assign the AppStack to. In today’s world we are moving away from device-centric application management to user-centric (the apps follow the user around), so I decided to select my administrator account. Next you check the box next to my user account. If I was doing an AppStack for a server then I’d of course pick a computer account.

CloudVolumes AppStack assignment

One of the killer features of the product is the ability to assign an AppStack to a running VM with a logged-in user (i.e. instantly provision apps). The apps should appear in mere seconds, ready for immediate usage. Seems almost too good to be true. Does it work?

6-30-2013 6-27-21 AM

I logged into my Windows 7 x64 VM and looked at the start menu, prior to assigning the AppStack. As you can see it’s a very bare bones install, and there’s no Office or Adobe Reader. Also, my desktop has no application icons on it.

6-30-2013 6-29-19 AM

Testing CloudVolumes AppStack

Now comes the moment of truth..I click the Assign button and eagerly listen to my QNAP and watch the VM for signs of life..or death. And do I get a blue screen of death, does the console crash, or does my AppStack magically appear in seconds on my desktop? After ~7 seconds of QNAP and vCenter activity, appearing on my desktop is the AppStack! Did not have to even log out….I’m amazed.

6-30-2013 6-45-23 AM

Anyone can make icons appear on the desktop, but let’s look at Add/Remove software. Yup..I see all of the programs in my AppStack.

6-29-2013 9-07-58 PM

But do they launch?

6-30-2013 6-47-51 AM

Word 2013

How about those pesky IE plug-ins? That looks pretty normal…except..wait..where’s Flash Player? Hmmmmm

6-30-2013 6-51-45 AM

Let’s try and watch a YouTube video clip to see what happens..maybe it’s just a cosmetic issue. Viola…Flash Player DOES work. I also went to various other Flash Player test sites and everything worked as expected. Note to self: Don’t try and watch Flash videos via the ESXi console. It will bomb after a few seconds, totally unrelated to CloudVolumes. RDP into your test VM to try out Flash or use your VDI solution.

6-30-2013 7-06-13 AM

Let’s try out Java. IE prompted me to allow the Java plug-in, and after acknowledging a Java application security warning, all is well! I actually realized after my testing that the VM I provisioned the AppStack to was using IE 9, but my AppStack master VM had IE. But the plug-ins worked. I then updated my production VM to IE 10, rebooted, and the plug-ins continued to work. So the browser plug-ins seem fairly resilient to IE version changes.

 6-30-2013 7-11-46 AM

Needless to say I was very impressed that everything worked just like in the videos. Through some further testing with Office 2013 I did run into one issue. If I tried to use some of the built-in templates that get downloaded from the internet I got a font error as shown below. The template still opens up, just minus the custom fonts. Other than this font error, all the Office functionality I tested worked flawlessly.

6-30-2013 8-13-09 AM

Now that we have a working CloudVolumes AppStack, how does one update the AppStack with newer versions of the app or add additional apps? Stay tuned for Part 5.

CloudVolumes Pt. 3: Create AppStack

Welcome to Part 3 of installing and configuring CloudVolumes. In Part 1 I provided a short introduction on what CloudVolumes is and started the management console installation process. In Part 2 I configured basic settings such as Active Directory, vCenter, and datastores. Now we are ready to install the CloudVolumes agent and build a CloudVolumes AppStack of Office 2013 and a few other applications.

I mounted the CloudVolumes ISO image and started the agent installation on my AppStack packaging Windows 7 x64 VM. The only two questions I had to answer was the CloudVolumes Manager address and the port. There wasn’t a button to validate the agent could talk to the manager (hint, feature request). After the agent installed I had to reboot the VM. As we will later find out, due to a network configuration error on my part the agent was unable to contact the manager, hence the need for a ‘validation’ button of some sort.

CloudVolumes Agent

Creating a CloudVolumes AppStack

Here comes the exciting part! We now have a VM which we can install our applications and start building up AppStacks. The following two warnings are included in their admin guide:

Important: The provisioning of AppStacks must be performed on a clean base image; that being a VM that resembles as closely as possible the target environment to which you later plan to deploy the AppStack. For example, the provisioning VM and target should be at the same patch and Service Pack level and, if applications are included in the base image, they should also be in the provisioning VM.

Provisioning should be done on a VM that did not have any AppStacks previously assigned to it. If there were any AppStacks assigned to the VM, that VM should be rebooted before provisioning a new AppStack.

Back in the management console I clicked on Create AppStack.

6-29-2013 7-18-19 PM

The console had been sitting idle for an hour, and as soon as I clicked on the button I saw two red warnings for a split second and it booted me out to the login screen. I thought oh crap, a bug. I logged in again and this time the wizard came up so clearly it was just a timeout issue and the warning needs a little tweaking. I decided to go for broke, and try Office 2013 Professional Plus as my first AppStack.

CloudVolumes AppStack

After the wizard completed I now saw an unprovisioned AppStack. I do have one grip about this screen. In the VMDK filename it puts exclamation points in for spaces, which I think is a bit odd. It would make it a lot more readable to use an underscore or hyphen, IMHO. VMFS can support spaces, so not sure why they need to substitute characters.

6-29-2013 7-23-54 PM

Clicking on Provision brought up a screen where it should list all computers that have the CloudVolumes stack installed. This list was empty. Since my name resolution in my home lab is a bit unique, I figured it was a DNS problem. I fixed that problem, but the VM still wasn’t registering with the manager. I looked on the Win7 VM logs and could find no CloudVolumes error messages. I tried to telnet to port 3000 and that worked, so I knew it wasn’t a firewall problem.

After poking around in the console a bit I found the System Messages tab. Apparently, the provisioning VM needs to be joined to the domain. Probably makes sense, but I wasn’t sure if the VM should be as pristine as possible. It would be most helpful if during the agent installation it provided a warning, and also logged error messages in the application log on the Win7 machine about not being domain joined. After I joined the computer it immediately appeared in the CloudVolumes console.

6-29-2013 7-42-55 PM


6-29-2013 7-45-13 PM

I re-ran the AppStack provisioning wizard and came to the screen below. I clicked on the computer name (without clicking the radio button) and it immediately changed to the computers tab. That threw me for a loop, until I figured out I had to click on the radio button to actually provision the application. Minor usability issue.

6-29-2013 7-48-19 PM

Click the radio button then click Provision to get:

6-29-2013 7-51-18 PM

In the Windows 7 provisioning VM I got this pop-up:

CloudVolumes provisioning

So I then mounted the Office 2013 Professional Plus ISO, and ran through the whole install. I also ran Windows update to get it fully patched. While that was running for a while I decided to look at the Win7 VM properties. As you can see CloudVolumes mounted a second VMDK to the VM, which is where all of the application bits are being written.

6-29-2013 7-54-34 PM

During the AppStack capture process I had an “Oh crap” moment. I forgot to take a snapshot of the VM prior to doing the Office 2013 capture. I checked the snapshot history, and no snapshots were present. So I thought to myself I’ll have to rebuild my VM for the next AppStack. Because of what I thought was a mistake on my part I also decided to bundle in Flash Player, Acrobat Reader and Java in this AppStack. I was very curious how browser plug-ins worked, if at all, with CloudVolumes.

After Office 2013 installed I ran Windows update so that it was fully patched. The VM rebooted, and the CloudVolumes agent reminder that I was in provisioning mode was still on the screen. Next up was Flash Player 11, Adobe Reader 11, and Java 7 update 25. After those programs were done installing I clicked on the OK button to end provisioning. The VM rebooted, and after I logged in I got this successful message:
6-29-2013 8-22-15 PM

To my delight I saw that the VM was returned to the pre-AppStack creation state! No Office, no Flash player, no Adobe Reader, no Java. I thought sweet….I didn’t screw up after all! Pretty neat. Back in the Manager console I see the Status is now Enabled, and it even shows how long I took to provision the AppStack.

CloudVolumes AppStack

I wondered what the CloudVolumes datastore looked like and how big the VMDK was, so I browsed to the datastore and found a 4.2GB VMDK.

6-29-2013 8-48-20 PM

Now all I needed to do was install the agent into my “production” Windows 7 x64 VM, assign the AppStack, and see if the magic worked! Check out Part 4 to see how to assign an AppStack and see if this really works….or not.

CloudVolumes Pt 2: Manager Config

In Part 1 of “Installing CloudVolumes” I covered the basic concept of what CloudVolumes does, and we provisioned a Windows Server 2008 R2 VM for their management console. We are now ready to configure the CloudVolumes Manager console to interface with AD, vCenter, and setup the vSphere datastores. So far the CloudVolumes installation has been smooth and extremely easy.

As a quick refresher I’m now staring at the image below on my CloudVolumes Manager VM.

Configuring CloudVolumes Manager


I clicked on Get Started, and next up was uploading my evaluation license key. That was super easy, and clearly shows what I’m licensed for and when my evaluation expires.

CloudVolumes license

Next up was to configure Active Directory. Again, this was very simple, and I’m very glad to see that it supports LDAP over SSL. Since this is just a test environment I didn’t create a service account, but in production I would.

6-29-2013 5-39-15 PM

Next it wanted to know who should be a CloudVolumes administrator. In my test environment I selected Domain Admins, but in production I’d create a delegated group.

6-29-2013 5-41-15 PM

Next I had to configure the hypervisor credentials. Again, because this is a quick test I just used my domain admin account. In production I’d create a CloudVolumes service account and configure the proper rights in vCenter. In this case I’m using a vCenter 5.1 U1 instance. It may come as a shock to some, but I hadn’t yet configure vCenter for trusted SSL certificates (did a fresh install this morning). CloudVolumes didn’t complain about any certificate issues (which I would hope it would if the cert was self-signed).

6-29-2013 5-43-04 PM

The last configuration task is to setup the datatores. What is nice about this screen is that I can specify different datastores for the AppStacks and the writeable volumes. That’s a great feature, so that you could use data tiering. Perhaps put the AppStacks on higher speed storage for quick access, and put the writeable volumes on somewhat slower mass storage. I think they said you can also use Datastore clusters, but I didn’t have one configured to try that out.

What’s also nice on this screen is that it tells you if the datastore is local or shared among hosts. Of course if you use local storage only VMs on that host could access the AppStack or writeable volume.

6-29-2013 5-46-23 PM

A nice summary screen is shown after all of that work.

6-29-2013 5-50-36 PM

In Part 3 we will install the CloudVolumes agent in my Windows 7 64-bit VM, so we can start capturing applications. So far I haven’t run into any hitches, and the installation guide they provide walks you through the entire process with a plethora of screenshots.

CloudVolumes Pt 1: Intro and Installation

CloudVolumesLast weekend I was catching up on my RSS feeds with Feedly (great Google Reader replacement BTW), and stumbled on an article on Brian Madden’s site about a new way to enable non-persistent VDI. In that article, and accompanying video, they demoed a stack of software that I found very interesting. They discussed Atlantis Computing ILIO, CloudVolumes and Immidio.

I’m actually using ILIO in my current VDI architecture, so I was quite familiar with the performance (which is great!). But I had never heard of CloudVolumes. CloudVolumes is a startup and their v1.0 product went GA within the last two months. Immidio is somewhat similar to AppSense, and provides user environment personalization/control.

What I found particularly compelling about CloudVolumes was the ability to live add applications to running VMs (client and server OS), and just store one copy of the app that thousands of VMs could share. Big space savings! “Hot adding” apps literally appeared in seconds on the desktop when the administrator assigned them to a running VM. Check out the videos on Vimeo for demos.

What the product could enable is the use of non-persistent VDI base VMs which run from a single golden image, yet to the user seem persistent. There’s an ability for the user to install their own apps (which you can disable), and retain personalized information. So you could have a pool of non-persistent VMs, assign CloudVolume “AppStacks” to a user, and when the user gets their random VM it gets assembled on the fly with their applications and personal data (if enabled).

You can leverage native VDI products to create and maintain your VMs, such as VMware Composer and XenDesktop MCS/PVS. This is different from some competing solutions that use their own technology to assemble a desktop and bypass native VDI image management. Personally I’d lean towards native VM image management tools that VMware and Citrix provide.

Frankly, all of this sounded almost too good to be true. And the company says the technology is coming to physical computers as well, but declined to give a public timeframe when that might happen. This isn’t a VDI only solution either, as they tout providing support for server workloads such as SQL, IIS and XenApp. Instantly assign an “AppStack” to your XenApp server, so they claim, and provision dozens of apps with a few clicks.

Anyone that has worked with me knows I don’t hold back with vendors and giving candid input on how their product really sucks (a lot really do suck), or is really awesome. So I wanted to put their technology to the test and see for myself whether it really works as well as they tout. It’s only a 1.0 product, so I’ve tempered my expectations and expect a few rough edges. I shot the company over a list of 20+ questions which we discussed in a conference call this past week. Given their answers, I felt it was worth trying out in my personal lab to see if it’s spectacular or a flop. I have yet to use the product, so I’m blogging about this as I do my first install and I honestly don’t know what the end result will be.

Basic CloudVolumes Installation

I reviewed the system requirements and found that the CloudVolumes Manager was supported on Windows Server 2008 R2, vSphere 5.0 or later, and worked with IE 9, 10 and FireFox 10, 11. Support for Windows Server 2012 and Hyper-V were not available in this version. For the CloudVolumes agent it supports Windows 7 32-bit, Windows 7 64-bit, and Windows Server 2008 R2. No official fully tested support for Windows 8 or Windows Server 2012, although the company did say it “should” work but hasn’t gone through the full QA cycle. A remote SQL database is optional and only needed when deploying multiple Cloud Manager environments.

I provisioned a Windows Server 2008 R2 VM for the CloudVolumes Manager, and created two Windows 7 x64 VMs. One was a “clean” master that will be used to create the AppStacks and the other will be a target computer. At this point I didn’t want to yet stand up VMware View or XenDesktop, since I wasn’t even sure how well the product would work.

Next up, which I found a little strange, is the need to copy a .zip file to a VMware Datastore then run an unzip and convert command to create their special VMDK files. Normally I’m used to deploying OVA files to create VMs/VMDKs. But the process was easy enough, and just required SSH to be turned on the ESXi host to run the script. The result was the following directory structure on my datastore.

6-29-2013 4-30-51 PM

Now that the VMDK files were ready (NO VMs were created or harmed during this process), I moved over to my Windows Server 2008 R2 server so I could install the CloudVolumes manager.  I started the installation wizard, chose the Manager role, and it then proceeded to install SQL express (or you could point it to an existing SQL server). The installer finished without any problems, and I then launched the CloudVolumes Manager console in IE 10.


That’s it for Part 1 of my CloudVolumes installation. At this point my Windows 7 packaging VM is patching, and I un-installed my regular baked-in apps so that it’s as clean as possible. In Part 2 we configure licensing, Active Directory, vCenter credentials, and datastores. Check it out!