Modalità CPU e virtualizzazione ricorsiva


4

Sto cercando di capire la virtualizzazione e gli hypervisor.

Quindi il sistema operativo principale, ad esempio Linux, gira su ring 0, con i programmi userspace in esecuzione su ring 3. L'utente avvia VMware, con Linux in esecuzione al suo interno. Su quali anelli / modalità è attivo il Linux virtuale? E dire che l'utente avvia un altro SO Linux virtuale all'interno del SO Linux virtuale? Altre modalità emulate da VMware? In che modo tutti questi livelli vengono tenuti separati per proteggerli da errori e comportamenti dannosi?

Ed è quanto sopra implementato in modo diverso su piattaforme diverse? Intel VT, AMD-V, ARM, pura virtualizzazione del software, ecc.?

Risposte:


2

Questo articolo dovrebbe fornire molte informazioni lungo le linee che stai cercando. Tuttavia, è specifico di VMware.

Il caso generale è che dipende davvero da un certo numero di cose:

  • VT-x / AMD-V è in uso?
  • L'EPT è in uso?
  • VT-d o qualche tipo di IOV in uso?

Le domande di cui sopra sono utilizzo di istruzioni hardware domande. A seconda delle istruzioni hardware della CPU AMD / Intel utilizzate per assistere la virtualizzazione, la struttura dell'hypervisor è in genere piuttosto diversa. Se no le istruzioni hardware sono in uso, quindi si dice che la macchina virtuale sia "Fully Emulated" o "running in software", che è spesso la modalità più lenta. Tuttavia, anche senza supporto hardware, paravirtualizzazione (dove il sistema operativo guest sa che è in esecuzione su una VM) può accelerare in modo significativo anche un livello di emulazione software, fornendo un'interfaccia di programmazione chiara tra ospite e host.

Alcune macchine virtuali, come qemu senza kqemu o kvm, possono essere eseguite interamente nell'anello 3 - ma così facendo ha diversi limiti, come le prestazioni, e la mancanza di accesso hardware di basso livello. In generale, anche quegli hypervisor senza alcuna accelerazione hardware funzionano tradizionalmente in ring 0, cioè all'interno del kernel host come driver.

L'uso degli anelli 1 e 2 è piuttosto raro, ma succede, come notato nell'articolo di Anandtech. Inoltre, gli anelli 1 e 2 sono comunemente usati per hypervisor di metallo nudo come Xen. Per quanto ne so, il kernel del sistema operativo host "dom0" in Xen gira interamente in ring 1, e solo il "microkernel" Xen gira nell'anello 0. Quindi, se Linux fosse il dom0, allora sarebbe eseguito in ring 1, e i kernel guest (domU) sarebbero ipervati da Xen nell'anello 0 e eseguiti nell'anello 2.

Naturalmente, gli "anelli" del processore non sono l'unico meccanismo di sicurezza o di isolamento e le istruzioni hardware forniscono molto supporto tranquillamente separare le VM senza dover fare tutto nel software. I dettagli, se li vuoi, si ottengono meglio leggendo il manuale di programmazione di un processore Intel, in particolare sull'argomento di VT-x.

Nidificato la virtualizzazione non è generalmente possibile tranne nel caso di VMware (è l'unico hypervisor che sono a conoscenza di ciò che è in grado di farlo). Lo fa da emulando le istruzioni VT-x (ed eventualmente EPT) all'interno dell'ospite, facendo in modo che l'ospite pensi di avere un vero supporto VT-x / EPT. Questo è probabilmente un trucco hypervisor, anche se non conosco i dettagli di implementazione. L'EPT, tuttavia, viene spesso chiamato "Tabelle della pagina nidificata", quindi mi chiedo se l'aspetto "annidato" implichi che è possibile creare ulteriori livelli di nidificazione rispetto a quello di un livello più profondo richiesto per separare le tabelle della pagina dell'host dall'ospite (S).

Molto più comune per la virtualizzazione nidificata è che si è bloccati in esecuzione "completamente emulato" o, nel migliore dei casi, paravirtualizzato - che comporta un grande successo di prestazioni.

E a proposito di prestazioni, non penso che molte persone usino la virtualizzazione annidata se possono evitarlo, tranne forse nidificate contenitore virtualizzazione (che porta a zero CPU / memoria / sovraccarico hardware). L'impatto sulle prestazioni, anche con VT-x virtualizzato di VMware, è così grande che tutti i potenziali benefici di isolamento vengono spazzati via. Fidati di me, un livello di virtualizzazione è sufficiente, fino a quando non arriveremo a un nodo hardware in cui è effettivamente possibile annidare più profondamente ed essere in grado di mangiare l'impatto sulle prestazioni dei livelli di riferimento indiretto.


1
Un caso di utilizzo utile per la visualizzazione nidificata che ho utilizzato personalmente era la creazione di un ambiente di test di un server Hyper-V da poter eseguire snapshot e rollback. Sono stato in grado di eseguire un server Hyper-V (win2k8R2) con diverse macchine virtuali in esecuzione all'interno di una VM VMware in esecuzione su una casella di Windows 7.
Scott Chamberlain
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.