sviluppo-web-qa.it

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



30
Tester101

La nidificazione delle VM è qualcosa che è stato fatto per sempre sull'hardware IBM Mainframe. Quell'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 il punto è che puoi avere macchine virtuali annidate in profondità 2, ma solo su hardware molto moderno che supporta la virtualizzazione hardware reale (VT-x o AMD-V), e il secondo VM depth deve eseguire la virtualizzazione BT/binaria di vecchio stile di traduzione. Ci sono anche severe restrizioni sui monitor virtuali che è possibile 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.

27
chris

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 gran moda fatta da IBM, ma per usi totalmente diversi rispetto a quello per cui viene utilizzata oggi.

2
MichaelS

Si, puoi. Ad esempio, su Linux, puoi eseguire Xen con più VM che eseguono OpenVZ, VirtualServer o qualche altro tipo di 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 di VM o più livelli dipende dal piano di isolamento delle risorse.

2
sybreon

Non credo che la maggior parte dei pacchetti di virtualizzazione ti permetterà di eseguire un VM in una VM. So che VMware controllerà quando è installato per vedere se è installato in una VM, e spero altri prodotti fanno lo stesso. Non credo che le istruzioni necessarie sulla CPU verrebbero presentate dall'hypervisor in esecuzione sull'hardware fino a VM per raggiungere la seconda VM. Se funzionasse, aggiungeresti anche le spese generali senza ottenere nulla in cambio.

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

1
baumgart

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

1
Kevin Kuphal

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
SQLChicken

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
David Spillett

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 VM IP sia collegato a ponte per comunicare direttamente con Internet. Pertanto, 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 global VM: userete solo uno dei vostri IP pubblici dati e quindi avrete 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.

1
Yannovitch

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

0
Saabi

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

Per quanto riguarda se è pratico, forse dovremmo farti una 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
mrduclaw
0
Massimo

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.

0