I'm looking for a cloud software solution that:
Can run on both server and desktop machines;
Virtualizes hardware and has the option of exposing each real
machine to the cloud;
Allows a VM to be "locked" to a set of real hardware capabilities and stay there until moved (e.g. a user's "real" desktop);
Allows a VM to link to some types of devices elsewhere (e.g. USB/serial via ethernet); and
Is geography-aware to control movement of VMs between real networks.
I'm aware that this may be the holy grail of virtualization, and I've searched alot. Some solutions appear to meet some criteria but not others. Most cloud implementations appear to ignore real hardware, for example.
I realise that this may be solved by using three different implementations in combination:
A standard cloud server farm.
A bare-metal network backup utility with PXEBoot.
VNC and/or VDI. (VNC obviously would require the real hardware to be running.)
This combination, however, has some serious drawbacks that I'd like to solve by treating it as one system.
My explanation follows...
I have a network of real servers and desktops in multiple locations.
I've virtualized servers before using Virtualbox and that's worked quite well. I've even connected USB devices to VMs on servers.
I would like to virtualize the desktops in all my offices to facilitate movement of desktops, remote access (e.g. VDI) and bare-metal backups. However, I know that there are problems with this. For example, some desktops have specific hardware (e.g. 3D graphics cards, USB devices, etc) that limit their mobility. Geographic constraints also limit movement in that VMs can be moved easily within offices, but transferring between offices is not always preferable.
What I would like to find is a system that can virtualize everything from bare-metal easily by maintaining an abstraction layer on each client and server machine that exposes the hardware available and runs as a cloud. Then certain VMs would be "locked" to specific hardware (so that, e.g. the VM runs only on their own desktop.) This would be required for situations where speed is important (e.g. 3D graphics pass-through).
In addition, abstracted low-speed devices (e.g. USB) could be piped from real hardware to a VM in the cloud. This is important since if a VM is taken down, another VM can connect to the real hardware for minimum downtime.