Diferença entre Xen PV, Xen KVM e HVM?

53

Eu sei que o Xen geralmente é melhor que o OpenVZ, pois o provedor não pode vender em excesso no Xen. No entanto, qual é a diferença entre Xen PV, Xen KVMe HVM(eu estava passando por este provedor especificações ? Qual é o melhor para que fins e por quê?


Editar:

Para um usuário final que apenas hospedará sites, qual é o melhor? Do ponto de vista da eficiência ou de outro ponto de vista, existe alguma vantagem de uma sobre a outra?


fonte

Respostas:

47

Tipos de virtualização suportados pelo Xen

O Xen suporta a execução de dois tipos diferentes de convidados. Convidados Xen são frequentemente chamados de domUs (domínios não privilegiados). Ambos os tipos de convidados (PV, HVM) podem ser usados ​​ao mesmo tempo em um único sistema Xen.

Paravirtualização do Xen (PV)

A paravirtualização é uma técnica de virtualização leve e eficiente introduzida pelo Xen, posteriormente adotada também por outras soluções de virtualização. A paravirtualização não requer extensões de virtualização da CPU host. No entanto, os convidados paravirtualizados exigem que o kernel especial seja portado para execução nativa no Xen, para que os convidados estejam cientes do hipervisor e possam executar eficientemente sem emulação ou hardware emulado virtual. Os kernels convidados Xen PV existem para os sistemas operacionais Linux, NetBSD, FreeBSD, OpenSolaris e Novell Netware.

Convidados de PV não possuem nenhum tipo de hardware emulado virtual, mas o console gráfico ainda é possível usando o convidado pvfb (framebuffer paravirtual). O console gráfico convidado PV pode ser visualizado usando o cliente VNC ou o virt-viewer da Redhat. Há um servidor VNC separado em dom0 para o PVFB de cada hóspede.

Os kernels upstream do kernel.org Linux desde o Linux 2.6.24 incluem o suporte ao convidado Xen PV (domU) com base na estrutura pvops do Linux, portanto, todo kernel Linux upstream pode ser usado automaticamente como kernel convidado Xen PV sem nenhuma correção ou modificação adicional.

Consulte a página wiki do XenParavirtOps para obter mais informações sobre o suporte ao Linux pvops Xen.

Virtualização completa do Xen (HVM)

Convidados totalmente virtualizados, também conhecidos como HVM (Hardware Virtual Machine), exigem extensões de virtualização de CPU da CPU host (Intel VT, AMD-V). O Xen usa a versão modificada do Qemu para emular o hardware completo do PC, incluindo BIOS, controlador de disco IDE, adaptador gráfico VGA, controlador USB, adaptador de rede etc para convidados HVM. As extensões de virtualização da CPU são usadas para aumentar o desempenho da emulação. Convidados totalmente virtualizados não exigem kernel especial; portanto, por exemplo, sistemas operacionais Windows podem ser usados ​​como convidados Xen HVM. Convidados totalmente virtualizados geralmente são mais lentos que convidados paravirtualizados, devido à emulação necessária.

Para aumentar o desempenho, os convidados HVM totalmente virtualizados podem usar drivers de dispositivo paravirtuais especiais para ignorar a emulação para E / S de disco e rede. Os convidados Xen Windows HVM podem usar os drivers GPLPV de código aberto. Consulte a página wiki do XenLinuxPVonHVMdrivers para obter mais informações sobre os drivers Xen PV-on-HVM para visitantes do Linux HVM.

Isto é de http://wiki.xenproject.org/wiki/XenOverview

O KVM não é o Xen, é outra tecnologia, na qual o KVM é um módulo do kernel nativo do Linux e não um kernel adicional, como o Xen. O que torna o KVM um design melhor. A desvantagem aqui é que o KVM é mais recente que o Xen, portanto pode estar faltando alguns dos recursos.

dyasny
fonte
9
+1 KVM não é Xen. Discordo totalmente de que o KVM é um design melhor. O Xen oferece um isolamento muito melhor e não depende do kernel do Linux e de possíveis vulnerabilidades.
Antoine Benkemoun
2
Obrigado pela informação! Eu não conseguia entender tudo. Do ponto de vista do usuário final, quem estará hospedando sites, o que é melhor? Existe uma vantagem significativa de um sobre o outro?
2
O Xen tem suas próprias vulnerabilidades. Mas executando um OS com dois núcleos bootstrap é uma falha de projeto, não importa quão bem você faz isso
dyasny
11
JP19: isso depende dos sites. Se você pode definir a carga no VPS, pode pedir aqui ou no google a melhor solução.
dyasny
2
O Xen é um hipervisor e o KVM também. O KVM possui dispositivos fotovoltaicos e acrescenta mais com o tempo, também permite a passagem do PCI. Então eu não vejo o ponto ao seu argumento, Nils
dyasny
32

Xen é um hipervisor que roda em metal (o pc / servidor) e hospeda máquinas virtuais chamadas de domínios.

Um Xen PVdomínio é um domínio paravirtualizado , o que significa que o sistema operacional (geralmente estamos falando de linux aqui) foi modificado para rodar no Xen, e não há necessidade de realmente emular o hardware. Esse deve ser o caminho mais eficiente, em termos de desempenho.

Um Xen HVMdomínio é um domínio emulado por hardware , o que significa que o sistema operacional (poderia ser Linux, Windows, qualquer que seja) não foi modificado de nenhuma maneira e o hardware é emulado. Isso é um pouco lento; geralmente, você instala drivers fotovoltaicos no sistema operacional convidado para hardware crítico (geralmente disco e rede), para que o convidado como um todo funcione totalmente virtualizado, mas as peças de hardware mais críticas para o desempenho serão executadas paravirtualizadas. Os sistemas linux recentes têm drivers pv para disco e rede no kernel, e existem vários drivers PV para Windows também. Com todo o desenvolvimento do HVM nos últimos anos, geralmente há pouca diferença no desempenho entre o HVM e o PV para cargas de trabalho padrão.

KVMnão é o Xen, é outra plataforma de virtualização criada dentro do kernel do Linux. Do ponto de vista do hóspede, ele se assemelha ao Xen HVM: o hóspede é executado totalmente virtualizado e há um driver específico para executar algumas partes paravirtualizadas (novamente, disco e rede).

O Xen HVM e o Linux KVM precisam de suporte de virtualização assistida por hardware (Intel VT-x, AMD AMD-V), enquanto o Xen PV não pode, mas não pode executar sistemas operacionais sem suporte a PV (você não pode executar o Windows no Xen PV).

O Xen HVM e o Linux KVM usarão partes do software de virtualização qemu para emular o hardware real de dispositivos que não usam drivers fotovoltaicos no sistema convidado.

O Xen (PV e HVM) pode fazer a migração ao vivo de um convidado em execução de um servidor físico para outro, não sei se o KVM também pode.

O Xen e o KVM não podem comprometer demais a memória, de modo que você geralmente obtém "RAM verdadeira", enquanto outras plataformas como a VMware podem trocar parte da ram convidada em disco.

Existem diferenças, mas geralmente se aplicam a instalações específicas e não ao servidor privado virtual genérico para venda a outras pessoas. Por exemplo, os hipervisores Xen recentes suportam memória transcendente que poderia melhorar a utilização da memória e o desempenho do convidado se o convidado tiver suporte para ele (kernels linux> = 3.algo).

Todas essas tecnologias oferecerão uma ótima experiência se forem implementadas corretamente e não farão grande diferença do seu ponto de vista. Obviamente, existem milhares de maneiras pelas quais as coisas podem dar errado e isso não está relacionado à solução específica de virtualização (ou seja, seu convidado pode ser armazenado em discos lentos e isso prejudicaria seu desempenho).

Luke404
fonte
3
O KVM pode comprometer demais a memória e o Xen também.
dyasny
@dyasny Eu não sei sobre KVM, mas tenho certeza que o Xen não pode comprometer demais a memória no sentido real da palavra (permitir que um tamanho máximo diferente seja uma coisa diferente). Por favor, vincule suas fontes se você acredita que sim.
precisa saber é o seguinte
O Xen suporta balooning. Adicione a troca padrão a isso e você já tem pelo menos 2 mecanismos de confirmação excessiva. Isso é tão antigo quanto 2008: blog.xen.org/index.php/2008/08/27/…
dyasny
3
@dyasny você provavelmente pensa em comprometer demais , permitindo um máximo mais alto. AFAIK, o significado aceito é realmente alocar aos convidados mais memória do que fisicamente presente no host, e isso não é implementado no Xen. Você não pode esvaziar um balão de convidado (por exemplo, fornecer mais memória) se não tiver memória física disponível no host e não poderá iniciar um novo convidado se já tiver alocado toda a memória do host (a menos que você aumente executando balões de convidados, reduzindo realmente a memória alocada para que você não comprometa demais).
precisa saber é o seguinte
11
Penso em overcommit como não apenas permitindo mais do que o host fisicamente tem, mas também como realmente usando mais do que o host fisicamente tem. A troca é horrível, mas é um mecanismo que permite que você aloque mais páginas de memória do que fisicamente em um host, seja para processos ou VMs - não importa. Isto é até onde eu vou entrar em semântica neste.
dyasny