¿Es posible configurar una máquina virtual dentro de otra máquina virtual?

30

He estado jugando con máquinas virtuales de forma muy informal, y me pregunté si podría ejecutar una máquina virtual dentro de una máquina virtual.
¿Es posible?
¿Es práctico?

Probador101
fuente
3
Una razón práctica es si está alquilando un servidor. No importa si el servidor es físico o virtual, es mi servidor. Y si quiero instalar VirtualPC o Virtual Server en mi servidor: ese es mi negocio.
Ian Boyd el
2
Esa no es realmente una razón práctica, ya que la "practicidad" de instalar una VM dentro de una VM dependerá en última instancia de si es "práctico" implementar esta capacidad en la plataforma HW + SW elegida. El hecho de que alguien "quiera" hacerlo no lo hace práctico.
Joe Internet
1
Para cualquiera que se pregunte por qué uno podría querer hacer esto, esta es mi razón, aunque admito que no es una razón del "mundo real" y que realmente no puedo pensar en una de esas. Estoy estudiando para el examen RHCSA pero no tengo acceso a un sistema con virtualización de hardware. Por lo tanto, esperaba lograr esto en una máquina virtual RHEL que se ejecuta como una instancia de Amazon AWS. Dado que la máquina AWS es (casi seguramente) una máquina virtual en sí misma, ejecutar KVM en ella requeriría máquinas virtuales anidadas.
Stephen C

Respuestas:

27

Anidar máquinas virtuales es algo que se ha hecho para siempre en el hardware IBM Mainframe. Ese hardware hace muchas cosas para que el proceso sea muy eficiente. Puede tener máquinas virtuales anidadas a una profundidad arbitraria y funciona muy bien.

El hardware de PC recientemente ha hecho que esto sea apenas posible. Un documento en el sitio web de VMware lo discute, pero lo esencial es que puede tener máquinas virtuales anidadas en profundidad 2, pero solo en hardware muy moderno que admita la verdadera virtualización de hardware (VT-x o AMD-V), y la segunda profundidad de VM debe ser ejecutando la virtualización de estilo de traducción BT / binary de estilo anterior. También hay restricciones severas en los monitores virtuales que puede ejecutar en el invitado interno.

No hace falta decir que no es compatible y esperaría que sea realmente inestable si haces algo remotamente extraño (como Hyper-V en ESX). Y el rendimiento no será bueno, independientemente de si es estable.

Chris
fuente
2
Ese documento ha cambiado significativamente desde que esto fue escrito, al igual que el estado del arte. Esta respuesta, como fue escrita, realmente no es aplicable hoy. Considera actualizarlo.
Michael Hampton
1
@MichaelHampton Sus comentarios son muy escépticos y suenan optimistas; ¿podría USTED proporcionar una respuesta actualizada o un enlace a una?
ILMostro_7
Aquí hay un enlace a una página de fedora-wiki que describe cómo habilitar virt anidado en KVM .
ILMostro_7
1
Solo para confirmar: en lo que respecta a la oferta de Hyper-v de MS, creo que la VM anidada no es compatible hasta la fecha.
RBT
2

Sí tu puedes. Por ejemplo, en Linux, puede ejecutar Xen con múltiples máquinas virtuales que ejecutan OpenVZ, VirtualServer o algún otro tipo de sistema VM. Es ciertamente posible y también muy práctico dependiendo de su propósito.

Una razón por la que podría pensar para hacer esto es ejecutar varios servidores en una sola máquina física. Si lo ejecuta como un solo nivel de jerarquía de VM o múltiples depende de su plan de aislamiento de recursos.

sybreon
fuente
2

Si necesita algún sistema específico, digamos heredado, para virtualizar, siempre puede hacerlo en software, entonces el anidamiento no es un problema. Prueba qemu, lo hice con 2 niveles de profundidad, pero puedes ir más profundo, aunque el rendimiento probablemente lo hará inútil. Por cierto, la arquitectura de PC fue un nombre presagiado por IBM, pero para usos totalmente diferentes en comparación con lo que se usa hoy en día.

MichaelS
fuente
1

No creo que la mayoría de los paquetes de virtualización le permitan ejecutar una VM en una VM. Sé que VMware verificará cuando esté instalado para ver si se está instalando en una VM, y espero que otros productos hagan lo mismo. No creo que las instrucciones necesarias de la CPU se presenten desde el hipervisor que se ejecuta en el hardware hasta la VM para llegar a la segunda VM. Si funcionó, también estaría agregando gastos generales sin obtener nada a cambio.

En cuanto a si es práctico, no veo por qué. Si necesita otra máquina virtual, puede ejecutarla junto a la que ya está ejecutando. No puedo imaginar un caso en el que deba tener una VM ejecutándose dentro de otra VM. La sobrecarga adicional sin una ganancia proporcional de algún recurso haría que esto no sea práctico.

Baumgart
fuente
1

Sí. Incluso hay formas de ejecutar VMware ESX / vSphere en una máquina virtual. No sé por qué querrías hacerlo en la práctica, pero se ha hecho.

Kevin Kuphal
fuente
He visto personas que desean probar ESX en una máquina virtual, pero la instalación requiere un trabajo adicional más allá del método de instalación normal. No es algo que funcione fuera de la caja.
baumgart
1

Sí, PUEDES pero como muchas cosas no significa que debas. He visto un servidor ESX virtualizado que ejecuta una máquina virtual que tiene otro servidor ESX virtual dentro. De acuerdo, fue una prueba solo para ver si se podía hacer (y se puede). Realmente no lo recomendaría.

SQLChicken
fuente
1

Depende de la técnica de virtualización. Si usa soluciones que no son virtualización "real" como UML, entonces puede ejecutarlas dentro, por ejemplo, VMWare. O ellos mismos para el caso.

Las instalaciones basadas en UML pueden ejecutarse dentro de máquinas virtuales VMWare y otras instalaciones basadas en UML (incluso anidadas). ¡Sin embargo, las métricas de rendimiento no serán bonitas!

David Spillett
fuente
1

Sí, es posible pero realmente lento.

Es particularmente útil si está alquilando un servidor con IP pública asignada limitada (que depende, por ejemplo, de su dirección MAC para no envenenar la red de su proveedor de servidor); y que desea que su IP de VM se conecte para comunicarse directamente con Internet. Entonces, cuando no puede tener más de, por ejemplo, 3 direcciones IP públicas, pero necesita 10 VM, es una buena idea tener máquinas virtuales en una VM global: usará solo una de sus IP públicas dadas y luego tener muchas máquinas virtuales sub puenteadas.

Pero en realidad podría usar una combinación de configuración de puente y red enrutada, es más difícil en cuanto a la configuración.

Yannovich
fuente
0

Hasta donde sé, no es posible, pero VMware ESX puede ejecutarse en VMware Workstation, por ejemplo. En mi humilde opinión, solo es bueno para las pruebas.

Saabi
fuente
0

Como muchas personas ya han dicho: por supuesto que es posible. Depende de qué tan bien se emule el hardware de VM y qué software de virtualización esté utilizando. VMWare Workstation, al menos, no quiere que lo virtualice.

En cuanto a si es práctico, tal vez deberíamos hacerle la pregunta: ¿por qué necesitaría hacer ese tipo de cosas? ¿Qué tiene de malo simplemente ejecutar dos máquinas virtuales una al lado de la otra? ¿Y hasta qué punto preguntas si es práctico? Es decir, si le preocupa que sea práctico instalarlo y configurarlo, probablemente no. Si está más preocupado por su uso práctico, nuevamente, no puedo pensar en nada por lo que deba hacer esto, a menos que esté buscando errores en el software de virtualización o algo así.

mrduclaw
fuente
0

Puedes, pero no lo recomiendo.

El rendimiento generalmente se ve muy afectado en todo este proceso en la máquina "invitado del invitado". Si realmente debe hacerlo sin el hardware y el software especializados, buena suerte para usted. Sin embargo, generalmente no es una buena práctica, especialmente con los métodos comunes utilizados para lograr la virtualización.

Sé que si intenta ejecutar VMWare dentro de los sistemas VMWare, se quejará y no le permitirá hacerlo. No estoy seguro acerca de VirtualBox. Sé de algunas personas que, por cualquier razón, implementan contenedores Docker dentro de los contenedores Docker (o eso dicen). La moraleja de la historia es: aunque puede ser posible, probablemente no sea inteligente hacerlo a menos que realmente sepas lo que estás haciendo.

No conozco personalmente ningún caso de uso real para esto más allá de las redes.

Juggernaut mítico
fuente
2
El hardware "especializado" que necesita es prácticamente cualquier CPU fabricada en los últimos siete u ocho años.
Michael Hampton