Thursday, March 12, 2009

USB in ESX - Why Not?

I was recently talking with a friend about the beauty of USB devices in Workstation and we quickly began talking about the difficulties of USB devices in ESX. This is a problem I had already tackled some years ago with AnywhereUSB but earlier this evening I found a post discussing USB connectivity to an ESX hosted VM and felt it time to talk about it with you.

In the post the author describes several means for connecting USB devices in both temporary and permanent scenarios. I personally have never had much need for one time connectivity but since many of our applications require USB dongles for their license managers it's safe to say that connecting through the host or through RDP just won't do as a permanent solution. This is especially true as virtualization continues to branch out into the desktop arena where USB devices are more than just a pretty face, they're often a non-negotiable requirement.

While the post was extremely helpful one of the items that I feel the author failed to discuss is why VMware would continue to not support USB connectivity to guest VMs from their ESX hosts. Why wouldn't they indeed?

My immediate belief is that like most things it is for our own protection. Just imagine how upset your management, or you if you are the management, would be if DRS did not properly balance your resources, HA did not restart your server upon a failure, or you were not able to put a machine into maintenance mode due to a USB device preventing Vmotion because of a device associated to a single host. I know I wouldn't want to tell the boss that the thousands of dollars I fought hard for to purchase these features were all done in because of a USB dongle. Note: I have not yet tested this scenario but it seems reasonable given the results I've seen from having VMDKs and ISOs on local storage.

The greatest strength of VMware over its competitors is that they control the hardware and control the drivers that the VMs see. They have worked hard on their hypervisor to make these features available and I'm pretty sure that they won't open their arms to USB devices on the host anytime soon. After all, there are clearly many different options out there that solve this issue. Where's the benefit in complicating their already growing datacenter OS further?


  1. I don't really agree. I think if we can make storage follow a VM so too should all the resources of the host. If I have a cluster of resources I should be able to share all the resources including USB ports. I do see a problem if the server that the USB devise is plugged into is actually shut down but a warning message when shutting down the host would go a long way to helping with that. I don't think you can just ignore a major hardware component just because it's "Hard" to deal with.

    And didn't Wes find AnywhereUSB? :)

  2. The point I was going for was not to determine whether VMware SHOULD make it available, but to state WHY they do not currently support it and the inherent issues that USB has in a VI3 environment.

    I certainly think that as long as the host is booted there shouldn't be any reason why USB communication couldn't be shared between hosts, although I feel the same way about local storage and they are not opening that up either. It is quite tiring copying ISOs between local VMFS datastores but such is the technology. There are ways to make that available, just like there are mechanisms for connecting USB devices to ESX, but not native to the software.

    Scott Lowe spoke at a Raleigh VMUG meeting and talked about vSphere prior to release. I posed the question to him about USB shared among hosts. My argument is that with the release of the distributed switch why can we then not designate a portgroup for USB communication to pass through that distributed switch and be made available to any host connected to that distributed switch. While this is "technically" feasible from my perspective, he did not see that in the ESX roadmap as it were. This leads me to believe that VMware still does not have enough justification for investing the development time to provide greater support for USB devices. This likely means people are not telling them they want it.

    Rest assured that if enough customers (especially large ones) were to ping VMware for this feature, we'd get it! Proof of this can be seen in the new features such as paravirtualized SCSI and NICs which are vMotion, DRS, and HA killers. Since the community has deemed that this is OK on their own terms there is no reason (based on my previous argument) why it shouldn't be up to the customer to determine if that is a valid compromise. My argument that VMware is protecting its customers is no longer as strong as it once was, but transitions to "use at these risks".

    I am certainly a fan of keeping things open and allowing the engineer/architect/admin determine what is acceptable risk when using features that may interrupt some of VMware's key features. I do stick to the fact that if done irresponsibly and without properly measuring risk vs return with management, there is a good chance someone will inevitably hang themselves out to dry.

    If someone at VMware reads this...please make USB sharing available among hosts. If you do it through Distributed Switches and require an Enterprise Plus license then so be it. Perhaps you can use the DS and a VM appliance to manage if you will. You will once again be putting it into the hands of the consumer to ante up or find another option.

    For the record:
    He sure did. :)