È possibile configurare una macchina virtuale all'interno di un'altra macchina virtuale


30

Ho giocato con macchine virtuali latley e mi chiedevo se potevo eseguire una macchina virtuale all'interno di una macchina virtuale?
È possibile?
È pratico?


3
Un motivo pratico è se stai noleggiando un server. Che il server sia fisico o virtuale non dovrebbe importare: è il mio server. E se voglio installare VirtualPC o Virtual Server sul mio server: questa è la mia attività.
Ian Boyd,

2
Questo non è in realtà un motivo pratico, poiché la "praticità" dell'installazione di una VM all'interno di una VM dipenderà in ultima analisi dal fatto che sia "pratico" implementare questa funzionalità nella piattaforma HW + SW scelta. Solo perché qualcuno "vuole" farlo non lo rende pratico.
Joe Internet,

1
Per chiunque si chieda perché uno potrebbe voler fare questo, ecco la mia ragione, anche se ammetto che non è una ragione del "mondo reale" e che non riesco davvero a pensare a una di quelle. Sto studiando per l'esame RHCSA ma non ho accesso a un sistema con virtualizzazione hardware. Pertanto, speravo di ottenere questo risultato su una macchina virtuale RHEL in esecuzione come istanza Amazon AWS. Poiché la macchina AWS è (quasi sicuramente) una macchina virtuale stessa, l'esecuzione di KVM su di essa richiederebbe macchine virtuali nidificate.
Stephen C,

Risposte:


27

La nidificazione delle VM è qualcosa che è stato fatto per sempre sull'hardware IBM Mainframe. Questo hardware fa un sacco di cose per rendere il processo molto efficiente. Puoi avere macchine virtuali nidificate a una profondità arbitraria e funziona molto bene.

L'hardware del PC molto recentemente ha reso quasi impossibile questo. Un documento sul sito Web di VMware ne discute, ma l'essenza è che puoi avere macchine virtuali nidificate 2 in profondità, ma solo su hardware molto moderno che supporti la vera virtualizzazione dell'hardware (VT-x o AMD-V) e la seconda profondità della VM deve essere eseguendo la virtualizzazione di vecchio stile BT / traduzione binaria. Ci sono anche severe restrizioni sui monitor virtuali che puoi eseguire sul guest interno.

Inutile dire che non è supportato e mi aspetto che sia davvero imperfetto se fai qualcosa di strano anche a distanza (come Hyper-V in ESX). E le prestazioni non saranno buone, indipendentemente dal fatto che siano stabili.


2
Quel documento è cambiato in modo significativo da quando è stato scritto, così come lo stato dell'arte. Questa risposta, così come è stata scritta, in realtà non è applicabile oggi. Valuta di aggiornarlo.
Michael Hampton

1
@MichaelHampton I tuoi commenti sono molto scettici e sembrano ottimisti; potresti fornire una risposta aggiornata o un link ad una?
ILMostro_7,

Ecco un link a una pagina fedora-wiki che descrive come abilitare virt nidificati in KVM .
ILMostro_7,

1
Solo per conferma - Per quanto riguarda l'offerta Hyper-v di MS, credo che la VM nidificata non sia supportata fino ad oggi.
RBT

2

Si, puoi. Ad esempio, su Linux, è possibile eseguire Xen con più VM che eseguono OpenVZ, VirtualServer o qualche altro tipo di sistema VM. È certamente possibile e anche molto pratico a seconda del tuo scopo.

Un motivo a cui potrei pensare di farlo è di eseguire più server su una singola macchina fisica. Sia che lo si esegua come un singolo livello della gerarchia di VM o più dipende dal piano di isolamento delle risorse.


2

Se hai bisogno di un sistema specifico, ad esempio legacy, per essere virtualizzato, puoi sempre farlo nel software, quindi l'annidamento non è un problema. Prova qemu, l'ho fatto 2 livelli in profondità, ma puoi andare più in profondità, tuttavia le prestazioni probabilmente lo renderanno inutile. A proposito, l'architettura del PC era di buon auspicio fatta da IBM, ma per usi totalmente diversi rispetto a quello per cui viene utilizzata oggi.


1

Non credo che la maggior parte dei pacchetti di virtualizzazione consentirà di eseguire una macchina virtuale in una macchina virtuale. So che VMware verificherà quando viene installato per vedere se viene installato in una VM e spero che altri prodotti facciano lo stesso. Non penso che le istruzioni necessarie sulla CPU sarebbero state presentate dall'hypervisor in esecuzione sull'hardware fino alla VM per raggiungere la seconda VM. Se funzionasse, aggiungeresti anche un overhead senza ottenere nulla in cambio.

Per quanto riguarda se è pratico - non vedo perché. Se hai bisogno di un'altra VM, puoi semplicemente eseguirla accanto a quella che hai già in esecuzione. Non riesco a immaginare un caso in cui devi avere una VM in esecuzione all'interno di un'altra VM. L'overhead aggiuntivo senza un guadagno proporzionale di alcune risorse renderebbe questo poco pratico.


1

Sì. Esistono anche modi per eseguire VMware ESX / vSphere in una macchina virtuale. Non so perché in pratica vorresti mai farlo, ma è stato fatto.


Ho visto persone che volevano testare ESX in una macchina virtuale, ma l'installazione richiede ulteriore lavoro oltre il normale metodo di installazione. Non è qualcosa che funziona fuori dagli schemi.
baumgart,

1

Sì, PUOI ma come tante cose non significa che dovresti. Ho visto un server ESX virtualizzato che esegue una macchina virtuale con un altro server ESX virtuale al suo interno. Concesso che era un test solo per vedere se poteva essere fatto (e può) davvero non lo consiglierei.


1

Dipende dalla tecnica di virtualizzazione. Se usi soluzioni che non sono virtualizzazione "reale" come UML, puoi eseguirle all'interno, diciamo, VMWare. O se stessi per quella materia.

Le installazioni basate su UML possono essere eseguite all'interno di macchine virtuali VMWare e altre installazioni basate su UML (anche nidificate). Tuttavia, le metriche delle prestazioni non saranno belle!


1

Sì, è possibile ma molto lento.

È particolarmente utile se si affitta un server con un IP pubblico allocato limitato (che dipende, ad esempio, dal proprio indirizzo MAC per non avvelenare la rete del proprio provider di server); e che desideri che il tuo IP della VM sia collegato a ponte per comunicare direttamente con Internet. Quindi quando non puoi avere più di, ad esempio, 3 indirizzi IP pubblici, ma hai bisogno di 10 VM, è una buona idea avere VM in una VM globale: utilizzerai solo uno dei tuoi IP pubblici e poi hanno molte VM con bridge secondario.

Ma potresti effettivamente utilizzare un mix di bridge e configurazione di rete instradata, è solo più difficile per quanto riguarda la configurazione.


0

Per quanto ne so non è possibile, ma VMware ESX può essere eseguito, ad esempio, in VMware Workstation. IMHO è buono solo per i test.


0

Come molte persone hanno già detto tutto: ovviamente è possibile. Dipende da quanto bene viene emulato l'hardware della VM e dal software di virtualizzazione in uso. VMWare Workstation, almeno, non vuole che tu la virtualizzi.

Per quanto riguarda se è pratico, forse dovremmo farti la domanda: perché dovresti fare quel tipo di cose? Cosa c'è di sbagliato nel far funzionare solo due VM fianco a fianco? E in che misura chiedi se è pratico? Cioè, se sei preoccupato che sia pratico da installare e configurare, probabilmente no. Se sei più preoccupato per il suo utilizzo pratico, ancora una volta, non riesco a pensare a nulla per cui dovrei fare questo a meno che non stia cercando bug nel software di virtualizzazione o qualcosa del genere.



0

Puoi, ma non lo consiglio.

Le prestazioni sono di solito colpite abbastanza pesantemente in questo intero processo sulla macchina "ospite dell'ospite". Se davvero devi farlo senza hardware e software specializzati, buona fortuna a te. Tuttavia, in genere non è una buona pratica soprattutto con i metodi comuni utilizzati per ottenere la virtualizzazione.

So che se si tenta di eseguire VMWare all'interno dei sistemi VMWare, si lamenterà e non lo lascerà fare. Non sono sicuro su VirtualBox. Conosco alcune persone che, per qualsiasi motivo, distribuiscono container Docker all'interno di container Docker (o almeno così dicono). La morale della storia è: sebbene possa essere possibile, probabilmente non è intelligente farlo a meno che tu non sappia davvero cosa stai facendo.

Personalmente non conosco alcun caso d'uso reale al di fuori della rete.


2
L'hardware "specializzato" di cui hai bisogno è praticamente qualsiasi CPU prodotta negli ultimi sette o otto anni.
Michael Hampton
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.