Por que é possível implantar um hipervisor em um hypervisor?

2

Por que um hypervisor, que precisa estar em hardware físico, pode ser implantado em uma VM?

Por exemplo, o XenServer (o hipervisor real) pode ser implantado em uma VM ESX?

Por que isso é possível (embora não seja uma boa ideia por muitas razões, mas ainda funciona)

Além disso, por que as pessoas dizem que um hipervisor precisa de hardware físico (do ponto de vista da arquitetura, em vez de óbvias razões de desempenho).

Obrigado

    
por blade3 15.01.2011 / 03:40

4 respostas

5

Um hipervisor virtual (por exemplo, ESX, Hyper-V) é simplesmente um sistema operacional projetado para controlar e monitorar o acesso ao hardware. Então, naturalmente, um hypervisor em uma máquina virtual controlaria e monitoraria o acesso ao hardware a que ele tem acesso. Isso funciona porque o hardware virtual se parece exatamente com o hardware real.

Paravirtualização (por exemplo, Xen), por outro lado, não passa a arquitetura de hardware para os convidados virtuais, mas sim fornece uma API para usar recursos. Assim, sistemas operacionais convencionais (e hipervisores) não seriam capazes de rodar em um sistema paravirtualizado.

    
por 15.01.2011 / 05:28
2

Depende do tipo de hipervisor. Existem hipervisores que podem ser implantados em outros hipervisores. Há muitas dicas, e o suporte de hardware abaixo de 64 bits não é bom. Eu tenho que enfatizar que você nunca faria isso além de testes - mesmo assim, é útil apenas para testar certas funcionalidades (como o vMotion ou o HA no lado do VMware). Ele não fornece nenhuma indicação sobre o desempenho do software em um ambiente de produção.

Primeiro, você precisa entender os níveis de privilégios do x86 (toques): link

Normalmente, um sistema operacional (com acesso privilegiado ao hardware) será executado no Ring 0 e seus programas no nível do usuário (que devem interagir com o proxy pelo sistema operacional) serão executados no Ring 3. Quando um programa cria um sistema chamada, ele passa uma mensagem para o sistema operacional solicitando que execute uma função específica em seu espaço Ring 0 e retorne os resultados para o programa Ring 3.

Quando você implementa a virtualização completamente em software (sem assistência de hardware como Intel VT-x ou AMD-V), o que você faz essencialmente é inspecionar os níveis de privilégio do código dentro da VM em execução. No VMware, essa técnica é chamada de tradução binária. Qualquer código em execução no Anel 3 continua a ser executado no Anel 3, não modificado. Tudo o que é executado no Ring 0 é executado no Ring 1, com o acesso ao hardware do Ring 0 intermediado pelo hardware virtual do hipervisor. O hardware virtual é apenas um conjunto de software que informa ao sistema operacional host para fazer algo em seu espaço Ring 0.

Certos hardwares não fornecem suporte para tradução binária, porque não suportam os níveis de toque necessários para que isso aconteça. Notavelmente, os Anéis 1 e 2 não existem nos modos de 64 bits da maioria dos modernos processadores x86 (alguns processadores da AMD suportam, mas a Intel não). Portanto, a tradução binária é normalmente restrita a um sistema operacional convidado de 32 bits.

Como você já está usando o Anel 1 quando está usando um hipervisor com tradução binária, não é possível executar um hipervisor BT dentro de outro. (Ok, então, hipoteticamente, alguém poderia escrever um hipervisor que usa o Ring 2 quando ele mesmo está sendo virtualizado. É um caso tão complicado que não acho que alguém tenha feito isso.)

Os hipervisores paravirtualizar, como o Xen, funcionam sob uma premissa similar. Os hypervisores paravirtualizados usam kernels de convidado especialmente modificados que, em vez de executar no Ring 0, sabem que não estão sendo executados em hardware físico e são codificados para usar métodos especiais para conversar com o hipervisor. Como a paravirtualização funciona inteiramente dentro dos níveis de toque já em uso pelo sistema operacional, acredito que você deve ser capaz de executar níveis aninhados arbitrariamente de hipervisores paravirtualizados, desde que o hipervisor não exija nenhum acesso direto ao hardware. Existem obviamente limites práticos para o quão profundo você pode ir, e como observado, o desempenho não será bom.

As extensões de hardware, por outro lado, funcionam de maneira oposta à tradução binária - elas fornecem um nível de hipervisor superprivilegiado ou Ring -1 (um nível abaixo do Ring 0), que executa todo o código do Ring 0 não modificado. Quando esses conjuntos de instruções estão em uso, o Ring -1 fornece um ambiente no qual as operações do Ring 0 da máquina virtual são capturadas e tratadas pelo hipervisor sem nenhuma análise de código em execução.

Você não pode executar dois hipervisores usando extensões de hardware ao mesmo tempo, mesmo que esteja tentando executá-las lado a lado. Por exemplo, você não pode executar o Windows XP Mode no Windows 7 se já estiver usando o VirtualBox para executar uma máquina virtual usando o suporte de virtualização de hardware.

O que isso nos deixa é que você pode executar um hipervisor de tradução binária dentro de um hipervisor usando a virtualização de hardware, mas não o contrário. Além disso, o hypervisor-in-a-hypervisor geralmente só poderá executar convidados de 32 bits, mas o impacto sobre o desempenho geralmente não é tão substancial quanto alguns outros pôsteres sugeriram. (Os aplicativos que precisam de acesso pesado à memória, como servidores de banco de dados, ainda sofrerão porque precisam passar por dois conjuntos de tabelas de páginas virtuais.) A maioria dos hipervisores detecta quando estão sendo executados dentro de outro hipervisor e se recusam a executar. Alguns hipervisores funcionarão bem em uma capacidade de teste; Você pode executar várias instâncias do VMware ESXi no VMware Workstation, por exemplo (mas só pode usar o modo BT em qualquer máquina virtual do ESXi hospedada no VMware Workstation).

O Xen não realiza tradução binária - ele usa virtualização assistida por hardware ou realiza a paravirtualização. É possível executar o Xen paravirtualizado sob outro hipervisor, mas você não pode executar máquinas virtuais Xen-under-ESX usando virtualização completa de hardware dessa maneira.

Espero que isso ajude.

    
por 15.01.2011 / 20:07
2

Você não pode executar o Hyper-V em nenhuma máquina virtual. Deve ser executado diretamente no hardware. Você pode instalar a função Hyper-V em alguns sistemas de virtualização, mas não pode executar uma VM. Você pode, no entanto, executar o programa Gerenciador de Hyper-V.

    
por 15.03.2014 / 11:54
-2

Why is that a hypervisor, which alledgedly needs to be on physical hardware, can be deployed within a VM?

NÃO PODE - com bom desempenho.

Also, why do people say a hypervisor needs physical hardware (from an architectural point of view, rather than obvious performance reasons).

Por que a rodada está cansada?

Os hipervisores normalmente usam os recursos de virtualização de hardware. Não são suportados a partir de uma aplicação cliente dentro da camada virtual. Basicamente, o processo ou tem um modo de trabalho para o hipervisor, e um para o sistema operacional normal, e o sistema operacional normal não pode voltar para o modo de monitoramento.

Sem a virtualização de hardware, você tem que simular isso de forma d-acutânea - intetar muitas instruções do processador (através de um programa) com o resultado de ser muito mais lento que o nível do hardware.

    
por 15.01.2011 / 06:12