Xen vs. KVM: comparação entre dois hipervisores de código aberto
Na era da computação em nuvem, hipervisores como KVM e Xen são absolutamente essenciais. Em que estas tecnologias de virtualização diferem? Nesta comparação entre Xen e KVM, abordamos as semelhanças e particularidades de cada uma.
Resumo do hipervisor Xen
O hipervisor Xen é um software de virtualização de código aberto que permite executar simultaneamente vários sistemas operativos convidados no mesmo computador anfitrião. O hipervisor Xen é responsável por distribuir os recursos de hardware do computador anfitrião.
Que tipo de hipervisor é o Xen?
O Xen, um hipervisor de tipo 1 ou bare-metal, é instalado diretamente no sistema físico. Ele comunica-se com o hardware através dos seus próprios controladores. Os sistemas host e guest são instalados sobre o hipervisor Xen. O Xen atribui os sistemas operacionais instalados aos domínios dom0 e domU para distinguir entre níveis de privilégio. O sistema operativo anfitrião pertence ao dom0 e, portanto, desfruta do nível mais alto de privilégio. Todos os sistemas operativos convidados fazem parte do domU, como sistemas sem privilégios, ou unprivileged.
No entanto, o sistema operativo anfitrião e o hardware não comunicam diretamente através dos controladores do sistema operativo, mas sim através de uma API especial do Xen por meio do hipervisor. A integração profunda do hipervisor Xen garante uma utilização mais eficiente do hardware, com menos sobrecarga e uma menor superfície de ataque.
Xen: maior eficiência graças à paravirtualização
O Xen utiliza a paravirtualização para aumentar a eficiência. Neste caso, o hipervisor não emula os componentes de hardware, pelo que o sistema anfitrião sabe que está a ser executado num ambiente virtualizado. Desta forma, a comunicação entre os sistemas operativos anfitriões e o hipervisor Xen ocorre mais rapidamente, o que aumenta o desempenho. No entanto, esta técnica tem exigências especiais para os sistemas operativos instalados no Xen, entre as quais se encontram que o núcleo do sistema operativo suporte a paravirtualização ou que existam controladores especializados. De qualquer forma, há anos que os núcleos dos sistemas operativos típicos, como Linux e BSD, já cumprem estes requisitos.
Se não for possível ou desejável paravirtualizar o sistema operativo, o Xen também suporta uma virtualização completa, na qual os componentes de hardware são emulados virtualmente. Esta opção torna a virtualização mais lenta, mas oferece maior compatibilidade. Assim, também é possível executar no Xen sistemas operativos que não permitem a paravirtualização.
Características do hipervisor KVM
KVM (do inglês Kernel-based Virtual Machine) é outro hipervisor de código aberto com o qual é possível executar vários sistemas operativos convidados num único computador físico. Embora, em princípio, o KVM e o Xen tenham a mesma finalidade, eles baseiam-se em princípios de funcionamento diferentes e, portanto, são ideais para casos de uso distintos.
Que tipo de hipervisor é o KVM?
No passado, o KVM costumava ser classificado como um hipervisor do tipo 2, pois só conseguia comunicar com o hardware através dos controladores do sistema operativo do host. Também não permitia a paravirtualização, e todos os componentes de hardware do sistema hospedeiro tinham de ser emulados pelo KVM.
Desde então, o KVM adicionou a função de paravirtualização, embora funcione de maneira diferente do Xen, pois no KVM não é instalado no sistema operativo anfitrião. Em vez disso, o KVM integra-se diretamente no núcleo do Linux e utiliza os componentes de software do sistema Linux para administrar os sistemas virtualizados e os seus processos. No KVM, cada sistema operativo convidado tem o seu próprio hardware virtualizado, incluindo interface de rede, armazenamento em disco rígido, etc. Para acelerar essa virtualização total, o KVM utiliza a Virtualização Assistida por Hardware, já integrada na maioria dos processadores modernos.
No entanto, com o KVM, nem todos os componentes são totalmente virtualizados. Para acelerar os sistemas e aplicações, ele oferece algumas interfaces paravirtualizadas que podem se comunicar diretamente com o hipervisor através da API Virtio. Portanto, a paravirtualização no KVM é oferecida principalmente para dispositivos de entrada e saída, como interfaces de rede, de modo que este hipervisor fornece mais uma paravirtualização parcial.
KVM vs. Xen: qual hipervisor tem melhor desempenho?
A principal diferença entre esses dois hipervisores é o nível do conjunto de software em que operam. Como parte do núcleo Linux, o KVM utiliza virtualização assistida por hardware para virtualizar totalmente muitos componentes de hardware sem prejudicar significativamente o desempenho. As interfaces IO mais importantes são paravirtualizadas; esse é provavelmente o fator mais importante para a maioria das aplicações de servidor. Por sua vez, o Xen é instalado de forma clássica como hipervisor de tipo 1 no sistema operativo correspondente. É o próprio hipervisor que se encarrega de distribuir os recursos de hardware, o que garante que o Xen possa, em teoria, oferecer uma comunicação mais eficiente e com maior desempenho com o hardware. No entanto, o Xen e o KVM têm um desempenho semelhante graças ao controlador Virtio do KVM e à virtualização assistida por hardware.
Fixação da CPU
Evidentemente, os dois hipervisores não funcionam da mesma forma com todas as aplicações. O KVM oferece aos seus utilizadores mais potência do que o Xen, especialmente no que diz respeito ao CPU Pinning. Graças à afinidade do processador, o KVM pode atribuir um processador físico (ou núcleo do processador) a um processador virtualizado para que apenas o sistema virtual possa usar o processador. Isso é especialmente vantajoso para aplicações que consomem muita CPU e só é possível com o KVM.
Desempenho da rede
Em termos de desempenho de rede, o Xen leva vantagem. Embora ambos os hipervisores ofereçam interfaces de rede paravirtualizadas, no KVM cada sistema virtualizado tem o seu próprio dispositivo de rede. No Xen, todos os sistemas hospedeiros partilham uma única interface de rede virtual, o que garante uma melhor eficiência.
Conclusão
Para saber qual hipervisor é melhor, se o Xen ou o KVM, deve pensar nas suas necessidades. O KVM costuma ser mais fácil de usar, pois além de ser líder de mercado, integra-se ao núcleo do Linux e permite a virtualização completa. O Xen oferece, em princípio, um desempenho superior graças à paravirtualização completa. Portanto, tudo depende das aplicações que deseja virtualizar e do seu nível de experiência.