O Xen é um hipervisor fino que assume o controle antes do sistema operacional ser carregado. Além disso, ele roda seu sistema operacional principal e, possivelmente, vários sistemas operacionais convidados. O Host e o Guest precisam usar um kernel especialmente criado para o Xen, e eles podem se comunicar usando técnicas otimizadas adequadas ao Xen e correr perto da velocidade nativa.
O Qemu é um emulador completo, o que significa que o Guest vê hardware virtual "clássico" (o Qemu também pode emular outras arquiteturas além da do host), portanto, o Guest não precisa estar ciente de que está sendo virtualizado. Por outro lado, pode ser mais lento em algumas ordens de grandeza do que um sistema nativo.
O KVM é um acelerador que permite que o Qemu-kvm combine as velocidades com o Xen. Não pode ser executado em qualquer CPU, no entanto; a CPU tem que ser "virtualizável". Para x86-64, significa suporte a extensões de virtualização Intel ou AMD (veja o conteúdo de /proc/cpuinfo
e verifique um dos sinalizadores, svm
para AMD ou vmx
para intel)
O KVM é provavelmente mais fácil de implantar (não requer tocar no sistema Host) se você tiver uma CPU compatível.
Resumindo:
- Xen: rápido, roda em qualquer lugar, mas requer kernel do sistema operacional personalizado
- Qemu sem kvm: executa qualquer coisa em qualquer lugar, mas lenta
- Qemu-kvm: rápido, não requer kernel personalizado, mas é executado apenas em CPUs específicas