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?
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?
Respuestas:
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.
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.
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.
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.
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.
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.
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!
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.
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.
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í.
Sí. Mira aquí:
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.