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?
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?
Respostas:
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.
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.
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.
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.
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.
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.
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!
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.
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.
Sim. Veja aqui:
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.