A Virtualization First from KVM
I have been withholding my posts lately, as I am working on moving over to WordPress (should be done this week). However, this news is too big to wait.
The new version of KVM (KVM-79) was just released, and it includes a feature that is unique to KVM (compared to all other x86 virtualization platforms - in other words, VMWare and Microsoft can’t do this, but I’m sure they’ll add it soon),
PCI device assignment
With this new release, you can now pass an entire PCI device directly to a Guest virtual machine. No emulation or para-virtualization required. If you understand what that means, then you understand just how cool it is. This is HUGE, both in the virtualization world, and for PCs in general. In time, the paradigm is going to shift to having your complete PC virtualized - this is the first step.
What in the world would I use it for, you ask? Examples? You could have a PC with an additional video card that is directly passed to the Guest virtual machine, so that it can have its own dedicated video. A network card that can now operate at full native speed, as it is completely controller by the Guest system. Or a hard disk controller card managed by your Guest computer. This opens the door to now have a completely virtual desktop experience, and native speed servers. It will be possible, over time, to have a completely virtual desktop without the current issues with heavy graphics/ 3D systems.
The code for this has been in the cooker for several months. This is the first inclusion in a “release” of KVM, so expect continued improvements. I believe at this stage it is supported only with Intel’s Virtualization extensions (which means the AMD PC I have wont do it, but the Intel one will). I’ll double check on that and update that here with the requirements.
I am looking forward to testing this out with my MythTV (Tivo type software under Linux) system in the next few weeks.
salubrium said,
Thanks for this information. I agree that it’s extremely cool. I have only been playing with KVM for a little bit due to time constraints and deadlines. I’m interested to know if it offers some thing provisioning like Xen does.
Also, on your “San on the cheap” article, I’d like to see the follow up, especially if you used Openfiler or were booting via iSCSI
salubrium said,
It’s supposed to be “if it offers THIN provisioning”
bitbud said,
Yes - KVM supports thin provisioning. KVM’s default disk format is QCOW2 - Copy On Write. For example, you can create a virtual disk that is 100GB in virtual size, but it will only take up a few bytes on the physical disk, and then grow as data is written. You can also use RAW disks on any file system that supports ‘holes’. This is similar to how Xen works as well.
D said,
Are you sure that the support isn’t VT-d constrained?
VT-d is different than the virtualization extensions in the CPU instruction set. VT-d is a capability found in the chipset of the motherboard. Currently, only specific Intel chipsets have this, such as the Q35 (available in the Dell Optiplex 755.) AMD released the IOMMU specification, but has yet to release any compatible chips.
Second, this is not a capability unique to KVM if in fact it requires VT-d support. XEN can also pass through PCI cards to specific guest OSes if the DomO is compiled with the PCI backend extensions and booted with “iommu=required” option. The PCI cards also need to be listed in the boot parameters with the “pciback.hide” option and made available in the VM’s configuration file using a python list and the “pci=” directive. You can find more details, and some clarification, in the XEN user manual.
What I’ve been trying to find out is if KVM will support PCI pass through to unmodified guests WITHOUT VT-d. So far, I don’t believe it will, but may be able to support passing PCI devices to paravirtualized guests similar (or possibly better than) XEN currently can.
bitbud said,
Xen’s support for PCI pass-through is for para-virtualized guests only (that’s my understanding, and look here.
KVM supports fully virtualized guests only - the guests are always unmodified (there are para-virt drivers for NIC cards, but the Guest OS is unmodified). That makes KVM unique in that PCI devices can be passed-through to Vista, XP, or any other operating system.
KVM always requires either Intel or AMD virtualization extensions. For PCI passthrough, VT-d is currently required, and I am sure AMD support (via IO-MMU) will follow.
Add A Comment