May 14, 2014 - Sven Huisman

Fusion ioVDI hands-on experience

I recently got some hands-on experience with Fusion ioVDI which I would like to share. Fusion ioVDI software is a desktop-aware solution for VDI. ioVDI uses shared storage to store the virtual desktops and Fusion-io ioDrives or ioScale cards to offload IO traffic. ioVDI has the following features:
– Write Vectoring

  • Accelerates desktop performance by intelligently vectoring non-persistent writes to local server flash
  • Offloads up to 77% of SAN/NAS write workload
  • Limits shared storage interaction to the small number of writes that persist between login sessions, while preserving the use of VMware value-added features such as vMotion, HA, DRS, and SRM

– Transparent File Sharing speeds boot times by allowing all virtual desktops to share common files
– Storage-agnostic Architecture preserves storage and data protection investment on any SAN or NAS storage
– Storage Snapshots transparently supported with any VAAI shared storage management solution

You can also read about Fusion ioVDI and the architecture in this labreport.

ioVDI 1.0.0 has the following requirements:

  • VMware vCenter Versions: All VMware supported versions of vCenter 5.0, 5.1, 5.5
  • VMware ESXi Host Versions: ESXi 5.0, 5.0 U1, 5.0 U2, 5.0 U3, 5.1, 5.1 U1, 5.5
  • VMware Horizon View Versions: VMware Horizon View 5.0, 5.1, 5.2, 5.3
  • Microsoft Operating System Versions: All 64-bit versions of Windows 7

The ioVDI management server is a virtual appliance you install on a host in the backend-cluster, not on a host on which you run desktops which you want to offload using ioVDI.

Global installation steps
The following steps are involved installing the ioVDI solution:
1. Deploy the ioVDI Management Server virtual appliance (OVA)
2. Install the ioVDI license
3. Install the ioVDI Host Package (on each host)
4. Configure the Fusion-io ioMemory Cache devices for ioVDI
5. Prepare the Windows 7 golden image for ioVDI
6. Clone the pool of ioVDI VMs
7. Enable the pool of ioVDI VMs

The instructions are well described in the administrator guide, but I will describe in short my experience with each step.

1. Deploy OVA
Straight forward installation of the appliance. You can assign a fixed ip if you want, but you can also use DHCP.

– Login to the ioVDI appliance (console)
After the installation is finished, you can open the console and login using root and the password which is documented in the admin guide.

– Register the appliance with vCenter
The first thing to do is to register the vCenter server, which manages the VDI-hosts. Use this command:
iovdi vcenter –register –va <vCenter FQDN or IPAddr> -vu “domain\username”

2. Install license
I skipped this step because the appliance comes with a trial license that remains effective until June 30, 2014. But when you get a license, you get a license-iso file. You mount the file to the virtual appliance, and then apply the following command:
iovdi ms –installlicense

3. Install the ioVDI Host Package
Make sure you enable the HTTP client firewall rule on the ESXi host(s), or else you get an error. Then, login to the vCenter. By default, inactive login sessions timeout and close automatically after 30 minutes. After a timeout, you must login again before you van issue an ioVDI command. Use the following command to login:
iovdi vcenter –login –va <vCenter FQDN or IPAddr> -vu “domain\username”

Then, put the host in maintenance mode and use the following command to install the host package:
iovdi host –install –vh <ioVDI host FQDN or IPAddr>

Verify that the host package was installed:
Iovdi host –listpackage –vh <ioVDI host FQDN or IPAddr>

4. Configure the Fusion-io ioMemory Cache devices for ioVDI
ioVDI uses a Fusion-io ioMemory Cache device to cache system I/O on a host. There can be only one ioMemory Cache device configured for ioVDI on each host. Use the following command to lost the available devices:
iovdi host –listluns –vh <ioVDI host FQDN or IPAddr>

In my case, I have a Fusion-IO duo2 card installed, but I can use only 1 lun.
Use the following command to configure the device:
iovdi host –confighost –vh <host FQDN or IP Address> -sd <cache device canonical name>

Now verify that the configuration is successful using the following command:
iovdi host –stats –vh <ioVDI host FQDN or IP>

5. Prepare the Windows 7 golden image for ioVDI
Now that the host is prepared, you can prepare the golden image for ioVDI. The golden image needs to be Windows 7 x64.
– Shut down the golden image.
– Add a disposable disk for Write Vectoring by using the following command:
iovdi guest –enablevm –np <GMI in vCenter> –adddisk –-editvmx
Verify that the installation is successful, by viewing the properties of the VM. There should be an extra virtual disk (Independent, non-persistent) of 5 GB added.
– Verify that the golden image is configured for ioVDI by using the following command:
iovdi guest –gueststatus –np <GMI VM name pattern>

– Now start the golden image and wait for it to power up to Windows.
– Install the ioVDI guest package using the following command on the ioVDI appliance:
iovdi guest –install –np <GMI in VC> -gu <GMI Administrator> -gp <password>

– Verify that the installation was successful by using the following command:
iovdi guest –version -np <GMI VM name pattern> -gu Administrator
– Verify that all temp files are being redirected to the disposable disk by using the following command:
iovdi guest –doctor -np <guest name pattern> -gu Administrator
The Golden image can now be used to create a pool of desktops.

6. Clone the pool of ioVDI VMs
You can now use VMware Horizon View to create a pool of VMs from the golden image for use with ioVDI. When creating and naming your VMs, it is recommended that you use a generalized prefix (for example, ioVDI-VM) for easier identification of the ioVDI VMs by ioVDI and in the vCenter Server. Keep in mind the following:
– Do not use VMware’s Disposable File Redirection with ioVDI.
– Do not use VMware’s View Storage Accelerator (VSA) with ioVDI.

7. Enable the pool of ioVDI VMs
The pool you just created can not be used just yet. You first need to enable the disposable disk on all the replicated VMs in the pool. This can be done by taking the following steps:
– Open the vSphere Console and connect to the vCenter Server.
– Use VMware Horizon View to disable and then power off all of the VMs in the pool.
– Use SSH to connect to the ioVDI Management Appliance or open the console of the ioVDI appliance.
– Enable the disposable disks on all of the replicated VMs using the following command:
iovdi guest –enablevm –np <Prefix of named VMs + *> –adddisk –editvmx

As you can see, I had only 3 desktops in the pool.
– Verify that the VMs have been enabled using the following command:
iovdi guest –gueststatus –np <Prefix of namedVMs + *>
– Power on the VMs from the pool and enable the pool in Horizon View.

The installation and configuration of ioVDI is now completed.
As you noticed, I had to enable caching on the VMs after I deployed the pool using Horizon View. You might ask yourself, what happens when the desktops are refreshed? Exactly, you have to re-enable caching! There is a script documented which you can schedule that re-enables VMs for ioVDI. Unfortunately, if you set your pool to refresh desktops after the user logs off, scheduling this script doesn’t make sense.
For now, I would recommend to use ioVDI with persistent desktops. If you would like to use non-persistent desktop, I would not refresh the desktops after logoff, but schedule a refresh of the pool every night. After the refresh is completed, schedule the ioVDI re-enable script.

I haven’t performed any performance tests using ioVDI, so I can’t comment on that. There is a whitepaper from Fusion-io and it looks promising (of course, the whitepaper is marketing but it should work as described in the whitepaper).

The good, the bad and the ugly

The good:
I’ve done a lot of Horizon View implementations using local Fusion-io storage. An architecture like that can’t be used for persistent desktops. Also, putting a host in maintenance is not easy because desktops can’t be migrated to other hosts. ioVDI solves these issues. I can use shared storage for VDI-desktops (so I can vMotion desktops and use persistent desktops) and I can use Fusion-io cards to give my desktops a really good experience and to offload my central storage.

The bad:
Commandline interface only. I can live with it, but I can imagine most Horizon View administrators would like to use a GUI, or at least have a webinterface to check the status.
Only Windows 7 x64 supported, no Windows 8.1 yet.
Driver installation required within golden master desktop. I would rather see that the desktop VMs won’t have to be edited at all, no disk added, no driver installed. Keep it clean.

The ugly:
Non-persistent desktops needs to be re-enabled after a refresh of the desktop. I’m not sure this is something I would rely on.

Overall, I like ioVDI and the potential it has. For a 1.0.0 version, it’s not bad but it lacks certain features and I don’t like the fact the golden image has to be altered. For customers using persistent desktops who wants to offload their SAN using Fusion-IO cards, this could be a good start to look at!

Virtual Desktop Fusion-io / Horizon / ioVDI / non-persistent / persistent / stateful / stateless / View / VMware /