Tecnologie di virtualizzazione Obiettivo: disaccoppiare il comportamento delle risorse hardware e software di un sistema di elaborazione, così come viste dall utente, dalla loro realizzazione fisica. Disaccoppiamento ottenuto intoducendo un livello di indirezione (spesso costruito in software) tra la vista logica e quella fisica delle risorse. Primo esempio: oggetto astratto (risorsa virtuale). Livello di disaccoppiamento rappresentato dalle operazioni (interfaccia) con le quali è possibile utilizzare l oggetto. Secondo esempio: macchine virtuali di processo. Il livello di disaccoppiamento è rappresentato dall interfaccia condivisa offerta dal S.O. Il set di istruzioni della macchina virtuale è costituito, oltre che dalle istruzioni non privilegiate dell hardware, dalle system call offerte dal S.O. 1 Terzo esempio: macchina virtuale a livello di linguaggio. Il livello di disaccoppiamento è rappresentato dal codice del compilatore di un linguaggio HLL(codice astratto) Il codice è indipendente dall hardware della macchina fisica e dalle system call del S.O. ( es.,jvm). Quarto esempio: Il livello di disaccoppiamento è garantito da un componente, realizzato normalmente in software, chiamato Virtual Machine Monitor (VMM) o hypervisor il cui compito è consentire la condivisione da parte di più macchine virtuali di una singola piattaforma hardware. Ogni macchina virtuale è costituita oltre che dall applicazione che in essa viene eseguita anche dal sistema operativo utilizzato Il VMM si pone come mediatore unico nelle interazioni tra le macchine virtuali e l hardware sottostante, garantendo sia un forte isolamento tra esse, sia la stabilità complessiva del sistema. 2 1
Virtualizzazione e Emulazione Emulazione: eseguire applicazioni (o SO) compilate per un'architettura su di un altra. uno strato software emula le funzionalita` dell'architettura; il s.o. esegue sopra tale strato (a livello user). Le istruzioni macchina privilegiate e non privilegiate vengono emulate via SW. (Bochs, Qemu, Mame) Virtualizzazione: definizione di contesti di esecuzione multipli (macchine virtuali) su di un singolo processore, partizionando le risorse. 3 Requisiti fondamentali: Realizzazione del VMM a) Fornire un ambiente di esecuzione per i programmi sostanzialmente identico a quello della macchina reale. Uniche differenze legate alle dipendenze temporali (più macchine virtuali concorrenti) b) Garantire un elevata efficienza nell esecuzione dei programmi. Esecuzione diretta: le istruzioni non privilegiate vengono eseguite direttamente in hardware senza coinvolgere il VMM. c) Garantire la stabilità e la sicurezza dell intero sistema. Il VMM deve rimanere sempre nel pieno controllo delle risorse hardware: i programmi in esecuzione nelle macchine virtuali (applicazioni e S.O.) non possono accedere l hardware in modo privilegiato. 4 2
Differenze tra le varie realizzazioni: a) Modalità di dialogo per l accesso alle risorse fisiche tra la macchina virtuale ed il VMM. virtualizzazione completa paravirtualizzazione b) Livello dove si intende collocare il VMM. VMM di sistema: posti direttamente sopra l hardware dell elaboratore VMM ospitati: eseguiti come applicazioni sopra un S.O. esistente. 5 Host: piattaforma di base sulla quale si realizzano macchine virtuali. Comprende la macchina fisica, l eventuale sistema operativo ed il VMM. Guest: la macchina virtuale. Comprende applicazioni e sistema operativo VM1 VM2 VM3 applicazioni applicazioni applicazioni sistema operativo sistema operativo sistema operativo VIRTUAL MACHINE MONITOR HARDWARE 6 3
Virtualizzazione completa l'architettura della CPU prevede, in generale, due livelli di protezione (ring): supervisore e utente. In un contesto di virtualizzazione solo il VMM opera nello stato supervisore, mentre il sistema operativo e le applicazioni (la macchina virtuale) operano in stato utente. Problemi: ring deprivileging: il s.o. della macchina virtuale esegue in uno stato che non gli e` proprio (esecuzione di system call?) ring compression: applicazioni e s.o. della macchina virtuale eseguono allo stesso livello: necessita` di protezione tra spazio del s.o. e delle applicazioni. 7 Virtualizzazione completa Le richieste del sistema operativo nell ambiente guest non possono quindi operare direttamente sull hardware. Possibile Soluzione: Quando l ambiente guest cerca di eseguire un istruzione privilegiata, la CPU notifica un eccezione al VMM e gli trasferisce il controllo (trap): il VMM controlla la correttezza della operazione richiesta e ne emula il comportamento. Le istruzioni non privilegiate sono eseguite direttamente dall hardware senza alcun intervento da parte della CPU (esecuzione diretta). 8 4
Esempio: tentativo di esecuzione dell istruzione privilegiata che disabilita le interruzioni da parte del S.O. guest. Il VMM riceve la notifica di tale richiesta e ne emula il comportamento atteso sospendendo la consegna degli interrupt solamente per la macchina virtuale (emulazione). Se la richiesta della macchina virtuale fosse eseguita sul processore sarebbero disabilitati gli interrupt per tutti i sistemi ed il VMM non potrebbe riguadagnare il controllo della CPU. Le istruzioni non privilegiate sono eseguite direttamente dall hardware senza alcun intervento da parte della CPU (esecuzione diretta). Un architettura CPU si dice naturalmente virtualizzabile se supporta l invio di notifica allo stato supervisore per ogni istruzione privilegiata eseguita dallo stato utente. 9 Se l'architettura della CPU e` naturalmente virtualizzabile: la realizzazione del VMM e` semplificata; supporto nativo all'esecuzione diretta. Non tutte le architetture sono naturalmente virtualizzabili. Esempio: IA 32 Problemi: Alcune istruzioni privilegiate di questa architettura eseguite in stato utente non provocano una trap, ma vengono ignorate non consentendo quindi un trasparente intervento del VMM. vi sono istruzioni non privilegiate, eseguite in stato utente, che permettono di accedere in lettura alcuni registri del sistema la cui gestione dovrebbe essere riservata al VMM (ring aliasing). 10 5
Architetture non virtualizzabili Soluzioni: Fast binary translation. Tecnica usata da VMware: il VMM scansiona il codice prima della sua esecuzione per sostituire blocchi contenenti simili istruzioni problematiche in blocchi equivalenti dal punto di vista funzionale e contenenti istruzioni per la notifica di eccezioni che richiedano l intervento di VMM. I blocchi sono passati in esecuzione diretta e conservati in una cache apposita per riusi futuri Paravirtualizzazione 11 Paravirtualizzazione Il VMM rende disponibile al sistema operativo guest un interfaccia virtuale per le periferiche che i S.O. guest devono saper richiamare(api) per aver accesso alle risorse: i kernel dei S.O. guest devono quindi essere modificati per aver accesso all' interfaccia del particolare VMM. la struttura del VMM è semplificata perché non deve più preoccuparsi di individuare e catturare le operazioni privilegiate dei S.O.guest. Richiede un porting dei S.O. esistenti, mentre rimangono invariate le applicazioni. Viene meno il vincolo di operare su architetture CPU naturalmente virtualizzabili. 12 6
xen il progetto attualmente più promettente di un VMM che opera secondo i principi della paravirtualizzazione è XEN, progetto open source dell Università di Cambridge. Porting di Linux su XEN (XenoLinux). Modifica del Kernel di Linux per dialogare con le API di XEN pari a circa 3000 linee di codice (1,36% del totale). Porting di Windows XP (XenoXP) in collaborazione con Microsoft. Lavoro non completato. Le principali distribuzioni di Linux (Suse e Red Hat) offrono pacchetti precompilati per installare XEN. 13 Gestione della memoria: balloon process VMM può fare uso delle tecniche di paginazione. Occorre un meccanismo efficiente che consenta al VMM di reclamare ed ottenere in caso di necessità dalle diverse macchine virtuali porzioni di memoria meno utilizzate. Soluzione: su ogni macchina virtuale è in esecuzione un processo (balloon process) che comunica con il VMM. La richiesta del balloon process provoca da parte del S.O. guest il trasferimento su disco delle pagine meno utilizzate dalla macchina virtuale e la loro comunicazione al balloon process e quindi al VMM. 14 7
applicazioni applicazioni applicazioni S.O. S.O. S.O. hardware virtuale binary translation VMM Hardware Virtualizzazione completa 15 applicazioni applicazioni applicazioni S.O. S.O. S.O. Virtual Hardware API VMM Hardware Paravirtualizzazione 16 8
VMM di sistema e VMM ospitati VMM di Sistema. Si integrano ad un sistema operativo leggero le funzionalità di virtualizzazione, in un unico sistema che è posto direttamente sopra l hardware dell elaboratore. Si rende necessario corredare il VMM di tutti i driver necessari per pilotare le periferiche. Esempi di VMM di sistema: versione ESX di VMware e XEN, che adotta le driver derivate dal kernel di Linux. 17 VMM ospitato il VMM viene installato come un applicazione sopra un sistema operativo esistente, che opera nello spazio utente e accede l hardware tramite le system call del S.O. su cui viene installato. Più semplice l installazione (come un applicazione). Può fare riferimento al S.O. sottostante per la gestione delle periferiche e può utilizzare di altri servizi del S.O.(es. scheduling, gestione delle risorse.). Peggiore la performance. Prodotti: User Mode Linux, VMware Server/Player, Virtual Server di Microsoft 18 9
VM1 VM2 Applicazioni Applicazioni S.O. Applicazioni S.O. VIRTUAL MACHINE MONITOR SISTEMA OPERATIVO HARDWARE VMM ospitato 19 Vantaggi della virtualizzazione Uso di piu` S.O. sulla stessa macchina fisica (senza necessita` di reboot) Consolidamento HW: possibilita` di concentrare piu` macchine (ad es. server) su un'unica architettura HW per un utilizzo efficiente dell'hardware (ad esempio in server farm) Isolamento degli ambienti di esecuzione: ogni macchina virtuale definisce un ambiente di esecuzione separato da quelli delle altre -> possibilita` di effettuare testing di applicazioni preservando l'integrita` degli altri ambienti e del VMM. Gestione facilitata delle macchine: e` possibile effettuare in modo semplice: la creazione di macchine virtuali (virtual appliances) l'amministrazione di macchine virtuali (reboot, ricompilazione kernel, etc.) migrazione a caldo di macchine virtuali tra macchine fisiche: possibilita` di manutenzione hw senza interrompere i servizi forniti dalle macchine virtuali. In ambito didattico: laboratori virtuali di sistemi operativi; ogni studente puo` amministrare la propria macchina virtuale in completa sicurezza. 20 10
Architettura di xen 21 11