É possível configurar uma máquina virtual dentro de outra máquina virtual

30

Eu tenho jogado com máquinas virtuais latley e me perguntei se eu poderia executar uma máquina virtual dentro de uma máquina virtual?
É possível?
Isso é prático?

Tester101
fonte
3
Um motivo prático é se você está alugando um servidor. Se o servidor é físico ou virtual, não importa - é o meu servidor. E se eu quiser instalar o VirtualPC ou o Virtual Server no meu servidor: esse é o meu negócio.
3107 Ian Boyd
2
Essa não é realmente uma razão prática, pois a "praticidade" de instalar uma VM dentro de uma VM dependerá, em última análise, se é "prático" implementar esse recurso na plataforma HW + SW escolhida. Só porque alguém "quer" fazer isso não o torna prático.
Joe Internet
11
Para quem se pergunta por que alguém pode querer fazer isso, eis a minha razão, embora eu admita que não é uma razão do "mundo real" e que eu realmente não consigo pensar em uma delas. Estou estudando para o exame RHCSA, mas não tenho acesso a um sistema com virtualização de hardware. Portanto, eu esperava conseguir isso em uma máquina virtual RHEL em execução como uma instância do Amazon AWS. Como a máquina da AWS é (quase com certeza) uma máquina virtual, a execução do KVM nela exigiria VMs aninhadas.
Stephen C

Respostas:

27

O aninhamento de VMs é algo que foi feito para sempre no hardware IBM Mainframe. Esse hardware faz muitas coisas para tornar o processo muito, muito eficiente. Você pode ter VMs aninhadas a uma profundidade arbitrária e funciona muito bem.

O hardware de PC muito recentemente tornou isso quase impossível. Um documento no site da VMware discute isso, mas o essencial é que você pode ter VMs aninhadas em profundidade 2, mas apenas em hardware muito moderno que suporte a verdadeira virtualização de hardware (VT-x ou AMD-V), e a segunda profundidade da VM deve ser executando a virtualização de estilo de tradução BT / binária de estilo antigo. Também existem restrições severas nos monitores virtuais que você pode executar no convidado interno.

Escusado será dizer que não é suportado e eu esperaria que fosse realmente ruim se você fizer algo até remotamente estranho (como o Hyper-V no ESX). E o desempenho não será bom, independentemente de ser estável.

chris
fonte
2
Esse documento mudou significativamente desde que foi escrito, assim como o estado da arte. Esta resposta, como foi escrita, realmente não é aplicável hoje. Considere atualizá-lo.
Michael Hampton
11
@MichaelHampton Seus comentários são muito céticos e parecem otimistas; VOCÊ poderia fornecer uma resposta atualizada ou link para uma?
ILMostro_7
Aqui está um link para uma página wiki do fedora descrevendo como habilitar virt aninhada no KVM .
ILMostro_7
11
Apenas para confirmação - No que diz respeito à oferta Hyper-v da MS, acredito que a VM aninhada não é suportada até a data.
RBT 21/03
2

Sim você pode. Por exemplo, no Linux, você pode executar o Xen com várias VMs executando o OpenVZ, o VirtualServer ou algum outro tipo de sistema de VM. É certamente possível e também muito prático, dependendo do seu objetivo.

Uma razão pela qual pensei em fazer isso é executar vários servidores em uma única máquina física. A execução como um único nível de hierarquia de VM ou vários depende do seu plano de isolamento de recursos.

sybreon
fonte
2

Se você precisar de algum sistema específico, digamos legado, a ser virtualizado, você sempre poderá fazê-lo em software; o aninhamento não é um problema. Tente qemu, eu fiz 2 níveis de profundidade, mas você pode ir mais fundo, mas o desempenho provavelmente o tornará inútil. BTW, a arquitetura de PC era um presságio feito pela IBM, mas para usos totalmente diferentes em comparação com o que é usado atualmente.

MichaelS
fonte
1

Não acredito que a maioria dos pacotes de virtualização permita executar uma VM em uma VM. Sei que o VMware verificará quando está instalado para ver se está sendo instalado em uma VM e espero que outros produtos façam o mesmo. Não acho que as instruções necessárias da CPU sejam apresentadas através do hypervisor em execução no hardware até a VM para alcançar a segunda VM. Se funcionasse, você também adicionaria sobrecarga sem receber nada em troca.

Quanto a ser prático - não vejo por quê. Se você precisar de outra VM, basta executá-la ao lado da que já possui em execução. Não consigo imaginar um caso em que você deve ter uma VM executando dentro de outra VM. A sobrecarga adicional sem um ganho proporcional de algum recurso tornaria isso impraticável.

Baumgart
fonte
1

Sim. Existem até maneiras de executar o VMware ESX / vSphere em uma máquina virtual. Não sei por que você iria querer na prática, mas já foi feito.

Kevin Kuphal
fonte
Vi pessoas desejando testar o ESX em uma VM, mas a instalação requer trabalho adicional além do método de instalação normal. Não é algo que funciona imediatamente.
Baumgart
1

Sim, você PODE, mas como tantas coisas, não significa que você deveria. Vi um servidor ESX virtualizado executando uma máquina virtual que possui outro servidor ESX virtual. Concedido que era um teste apenas para ver se poderia ser feito (e pode), eu realmente não o recomendaria.

SQLChicken
fonte
1

Depende da técnica de virtualização. Se você usar soluções que não são virtualização "real" como a UML, poderá executá-las dentro, por exemplo, do VMWare. Ou eles mesmos para esse assunto.

As instalações baseadas em UML podem ser executadas dentro das VMs do VMWare e outras instalações baseadas em UML (mesmo aninhadas). As métricas de desempenho não serão nada bonitas!

David Spillett
fonte
1

Sim, é possível, mas muito lento.

É particularmente útil se você estiver alugando um servidor com IP público alocado limitado (que depende, por exemplo, do seu endereço MAC para não envenenar a rede do seu provedor de servidores); e que você deseja que o IP da sua VM seja conectado diretamente à Internet. Portanto, quando você não pode ter mais do que, por exemplo, três endereços IP públicos, mas precisa de 10 VM, é uma boa idéia ter VMs em uma VM global: você usará apenas um de seu IP público e, em seguida, tem muitas VMs sub-pontes.

Mas você pode realmente usar uma combinação de ponte e configuração de rede roteada, é apenas mais difícil quanto à configuração.

Yannovitch
fonte
0

Tanto quanto sei, não é possível, mas o VMware ESX pode ser executado no VMware Workstation, por exemplo. IMHO é bom apenas para testes.

Saabi
fonte
0

Como muitas pessoas já disseram: é claro que é possível. Depende de quão bem o hardware da VM é emulado e qual software de virtualização você está usando. O VMWare Workstation, pelo menos, não deseja que você o virtualize.

Quanto a ser prático, talvez devêssemos fazer a pergunta: por que você precisaria fazer esse tipo de coisa? O que há de errado em apenas executar duas VMs lado a lado? E até que ponto você pergunta se é prático? Ou seja, se você estiver preocupado com a possibilidade de instalar e configurar, provavelmente não. Se você está mais preocupado com o uso prático, novamente, não consigo pensar em nada para fazer isso, a menos que esteja procurando bugs no software de virtualização ou algo assim.

mrduclaw
fonte
0

Você pode, mas eu não recomendo.

Normalmente, o desempenho é bastante afetado em todo esse processo na máquina "convidado do hóspede". Se você realmente deve fazer isso sem o hardware e software especializados, boa sorte para você. No entanto, geralmente não é uma boa prática, especialmente com os métodos comuns usados ​​para obter a virtualização.

Eu sei que se você tentar executar o VMWare nos sistemas VMWare, ele reclamará e não permitirá que você faça isso. Não tenho certeza sobre o VirtualBox. Conheço algumas pessoas que, por qualquer motivo, implantam contêineres do Docker nos contêineres do Docker (ou é o que dizem). O moral da história é: embora possa ser possível, provavelmente não é inteligente fazê-lo, a menos que você realmente saiba o que está fazendo.

Pessoalmente, não conheço nenhum caso de uso real para isso além da rede.

Mítico Juggernaut
fonte
2
O hardware "especializado" necessário é praticamente qualquer CPU fabricada nos últimos sete ou oito anos.
Michael Hampton