Como virtual é a virtualização?

5
Ao ler materiais diferentes sobre assuntos diferentes de vez em quando, volto à questão: quão virtual é realmente a virtualização? Com "virtualização" quero dizer coisas como Virtual PC e VMWare, que permitem que você execute um sistema operacional convidado. Em particular, o que não entendo é:

  • A máquina virtual fornece um ambiente que é fundamentalmente indistinguível de uma máquina física? Naturalmente, haverá algumas diferenças práticas (como escotilhas de escape de chamadas do hypervisor, nomes de componentes de hardware fictícios, etc.) que permitem a detecção de uma máquina virtual, mas haverá incompatibilidades?
  • Se o ambiente for totalmente compatível com uma máquina física, então serão possíveis máquinas virtuais aninhadas?
  • Se não, isso significa que o sistema operacional convidado precisa ser especificamente adaptado para rodar dentro de uma máquina virtual? Em caso afirmativo, isso significa que a maioria dos sistemas operacionais atuais já foi adaptada para a maioria dos fornecedores de VM?
  • Essas coisas são diferentes para virtualização baseada em software versus hardware?
  • Qual é exatamente a diferença entre a virtualização baseada em software e a baseada em hardware?
por Vilx- 25.01.2011 / 02:03

6 respostas

6

Tanto quanto eu sei:

  • Havia estudos sobre a possibilidade de um " rootkit indetectável ", onde um hipervisor malicioso se sentaria entre o seu computador e o hardware . Firmas de segurança (e fornecedores de CPU) ficaram furiosas porque alguém inventou algo parecido e disse que ninguém poderia detectá-lo, então eles realmente usaram as funções de temporização e compararam os resultados com uma fonte externa. Então a virtualização é quase indetectável, mas se você paga muito perto de pequenos detalhes e tem uma referência externa, existem maneiras de descobrir que você está sendo virtualizado. Não deve causar qualquer incompatibilidade, no entanto.
  • Não é. Sua CPU virtualizada não tem os mesmos recursos que a sua física. As instruções de virtualização da Intel estão disponíveis apenas para o sistema operacional host, por exemplo. Isso não significa, no entanto, que você não pode ter uma máquina virtual dentro de uma máquina virtual: significa apenas que vai ser muito lento.
  • Os sistemas operacionais
  • não precisam ser adaptados para máquinas virtuais. Em vez disso, acontece o contrário.
  • Sim, eles são até certo ponto. A virtualização de software sempre funcionará. A virtualização de hardware geralmente não é transitiva (sistemas operacionais convidados não podem usar a virtualização de hardware para hospedar mais SOs convidados).
  • Deve haver mais do que isso, mas acho que é um bom começo.
por 25.01.2011 / 02:11
2

Deixe-me responder ponto por ponto:

1 Does the virtual machine provide an environment which is fundamentally indistinguishable from a physical machine? Of course, there will be some practical differences (like hypervisor call escape hatches, dummy hardware component names, etc.) which allow the detection of a virtual machine, but will there be any incompatibilities?

Se você ignorar "escotilhas de escape de chamada do hypervisor, nomes de componentes de hardware fictícios", todos os outros diferentes serão considerados bugs. ... exceto, veja abaixo.

2 If the environment is fully compatible with a physical machine, then are nested virtual machines possible?

Isso depende. Se você usar a virtualização de hardware, não será possível executar o hipervisor no hipervisor. (em teoria, você pode emular isso também, mas ninguém se importa o suficiente para fazer esse trabalho confuso)

3 If not, does that mean that the guest OS has to be specifically adapted for running inside a virtual machine? If so, then does that mean that most of today's OS'es have already been adapted for most VM vendors?

Você tem isso reverenciado. Nós temos o sistema operacional antes da máquina virtual. A máquina virtual se adapta ao sistema operacional, e não o contrário. (há algumas exceções, por exemplo, a versão antiga do Xen. Mas isso é uma exceção)

4 Are these things different for software-based virtualization vs hardware based?

veja 2.

5 What exactly is the difference between software-based virtualization and hardware-based?

veja 4.

    
por 25.01.2011 / 02:11
2

As máquinas virtuais tentam fornecer um ambiente que seja bom o suficiente para executar o sistema operacional e os aplicativos convidados. É virtualmente impossível prover um ambiente que seja indistinguível do físico, uma vez que existem efeitos de temporização que são muito difíceis de esconder (pelo menos em uma VM que funciona eficientemente)

Máquinas virtuais aninhadas são possíveis com VMs que são puramente emuladas (por exemplo, Bochs), mas o Virtual PC e o VMware usam algum suporte de hardware que não é projetado para aninhamento.

A virtualização baseada em software emula cada instrução da CPU (às vezes, as soluções baseadas em software usam Ring-1 para executar nativamente o código Ring-0 como uma otimização e esse truque não pode ser aninhado).

A virtualização baseada em hardware usa um modo especial no processador projetado para passar o controle a um hipervisor e definir um nível adicional de tabelas de páginas.

    
por 25.01.2011 / 02:12
2

Tanto quanto o sistema operacional convidado sabe, ele está sendo executado em hardware real. Todo o sentido da virtualização é que você não tem para alterar qualquer coisa no convidado.

O VMWare (por exemplo) fornece ferramentas e drivers para carregar no guest, mas eles não são necessários em uma máquina isolada. Eles fazem do drag-and-drop entre host e guest uma possibilidade e alguns outros recursos interessantes, mas eles não são necessários para executar com sucesso um convidado em si.

A IBM foi pioneira na virtualização com seu produto VM (agora z / VM) que pode executar com êxito outras cópias do z / VM, executando ainda mais cópias do z / VM executando z / OS e zLinux.

É claro que pode haver algumas limitações na implementação real da VM, o exemplo clássico é a incapacidade do VMWare de executar o OS / 2, mesmo que isso funcione em uma CPU real.

Mas isso é uma limitação do produto, não um conceito de virtualização.

Em termos de diferenças de hardware / software, a virtualização de hardware está apenas usando algum aspecto da CPU real (ou outro hardware) para ajudar. A virtualização de software pura é, na verdade, apenas emulação (e, geralmente, terrivelmente lenta em comparação com a alternativa).

    
por 25.01.2011 / 02:12
1

O software de virtualização AFAIK emula o HAL (camada de abstração de hardware) sem problemas, de modo que o sistema operacional convidado não faz ideia da diferença. ou seja: OS normais são usados.

    
por 25.01.2011 / 02:09
0

Does the virtual machine provide an environment which is fundamentally indistinguishable from a physical machine? Of course, there will be some practical differences (like hypervisor call escape hatches, dummy hardware component names, etc.) which allow the detection of a virtual machine, but will there be any incompatibilities?

Os acessos de hardware ainda passam pelo SO host.

Os sistemas operacionais para PC foram desacoplados da maioria dos hardwares por um longo tempo. O Windows e o Linux empregam drivers que são o proxy para acesso ao hardware. Por causa disso, é possível fornecer drivers "paravirtualizados" que são um proxy para trabalhar em um ambiente virtual, tornando as coisas muito mais fáceis de implementar do que emulação - onde você teria que criar programas que 100% repliquem tudo o que é estranho e às vezes comportamento não documentado de CPUs e hardware.

If the environment is fully compatible with a physical machine, then are nested virtual machines possible?

A instrução VMXON que "liga" a virtualização da CPU não funcionará quando a CPU estiver "em" uma máquina virtual. Se isso acontecer, ocorrerá uma "saída de VM" - o que significa que o controle é passado de volta para o hipervisor - e o sistema operacional host deve agora decidir o que fazer (geralmente emulando uma exceção de "instrução ilegal"). É possível que o SO host emule esta instrução e o restante do comportamento de virtualização da CPU, se desejado (seria difícil e mais lento).

If not, does that mean that the guest OS has to be specifically adapted for running inside a virtual machine? If so, then does that mean that most of today's OS'es have already been adapted for most VM vendors?

Veja meu primeiro ponto. Drivers para virtualização para VMWare e outros hypervisores existem. O próprio core OS não tem que mudar a menos que A) seja algo strongmente acoplado a hardware específico como DOS e B) é decidido que mudar o SO é melhor do que emular o hardware que ele espera.

Are these things different for software-based virtualization vs hardware based?

A virtualização baseada em software é mais lenta e provavelmente menos segura.

What exactly is the difference between software-based virtualization and hardware-based?

Simplificando um bit, as CPUs x86 por um longo tempo tiveram geralmente dois níveis de privilégios, modo de usuário e supervisor, ou modo kernel. O suporte de virtualização de hardware adiciona um nível de privilégio superior ao do supervisor, ou seja, do hipervisor. Um exemplo de diferença é que a MMU que o sistema operacional da CPU usa para gerenciar as páginas de memória é estendida para permitir que os hipervisores trabalhem com ela. Isso torna mais fácil para um hipervisor alocar e isolar memória para uma VM específica. O IOMMU também é um recurso de hardware que também fornece muitos recursos que tornam a virtualização mais eficiente.

    
por 22.01.2014 / 15:31