Università degli Studi di Roma “Tor Vergata” Facoltà di Ingegneria • M. Boari, M. Balboni, “Tecniche di virtualizzazione: teoria e pratica”, Mondo Digitale, Marzo 2007. • J. Daniels, “Server virtualization architecture and implementation”, Crossroads, September 2009. • M. Rosenblum, T. Garfinkel, “Virtual machine monitors: current technology and future trends”, IEEE Computer, May 2005. • J.E. Smith, R. Nair, “The architecture of virtual machines”, IEEE Computer, May 2005. Valeria Cardellini - SD A.A. 2011/12 1 • Virtualizzazione: un livello alto di astrazione che nasconde i dettagli dell’implementazione sottostante • Virtualizzazione: astrazione di risorse computazionali – Si presenta all’utilizzatore una visione diversa da quella reale • Le tecnologie di virtualizzazione comprendono una varietà di meccanismi e tecniche usate per risolvere problemi di: – Sicurezza, affidabilità e prestazioni (isolamento della QoS), … • Come? Disaccoppiando l’architettura ed il comportamento delle risorse percepiti dall’utente dalla loro realizzazione fisica Valeria Cardellini - SD A.A. 2011/12 2 • Virtualizzazione delle risorse hw e sw di sistema – Macchina virtuale, … • Virtualizzazione dello storage – Storage Area Network (SAN), … • Virtualizzazione della rete – Virtual LAN (VLAN), Virtual Private Network (VPN), … • Virtualizzazione dell’infrastruttura Valeria Cardellini - SD A.A. 2011/12 3 • Una macchina virtuale (VM, Virtual Machine) permette di rappresentare le risorse hw/sw di una macchina diversamente dalla loro realtà – Ad es. le risorse hw della macchina virtuale (CPU, scheda di rete, controller SCSI) possono essere completamente diverse dai componenti fisici della macchina reale • Una singola macchina fisica può essere rappresentata e usata come differenti ambienti di elaborazione – Molteplici VM su una singola macchina fisica Valeria Cardellini - SD A.A. 2011/12 4 • Il concetto di VM è un’idea “vecchia”, essendo stato definito negli anni ’60 in un contesto centralizzato – Ideato per consentire al software legacy (esistente) di essere eseguito su mainframe molto costosi e condividere in modo trasparente le (scarse) risorse fisiche – Ad es. il mainframe IBM System/360-67 • Negli anni ’80, con il passaggio ai PC il problema della condivisione trasparente delle risorse di calcolo viene risolto dai SO multitasking – L’interesse per la virtualizzazione svanisce Valeria Cardellini - SD A.A. 2011/12 5 • Alla fine degli anni ’90, l’interesse rinasce per rendere meno onerosa la programmazione hw specialpurpose – VMware viene fondata nel 1998 • Si acuisce il problema dei costi di gestione e di sottoutilizzo di piattaforme hw e sw eterogenee – L’hw cambia più velocemente del sw (middleware e applicazioni) – Aumenta il costo di gestione e diminuisce la portabilità • Diventa nuovamente importante la condivisione dell’hw e delle capacità di calcolo non usate per ridurre i costi dell’infrastruttura • E’ oggigiorno una delle tecnologie abilitanti del Cloud computing Valeria Cardellini - SD A.A. 2011/12 6 • Facilita la compatibilità, la portabilità e la migrazione di applicazioni ed ambienti – Indipendenza dall’hw – Create Once, Run Anywhere – VM legacy: eseguire vecchi SO su nuove piattaforme Valeria Cardellini - SD A.A. 2011/12 7 • Permette il consolidamento dei server in un data center, con vantaggi economici ed ambientali – Uso più efficiente delle risorse dei server nell’ottica di ridurre il numero totale di server necessari ad una azienda e di utilizzarli in modo più efficiente Valeria Cardellini - SD A.A. 2011/12 8 • Permette di isolare componenti malfunzionanti o soggetti ad attacchi di sicurezza, incrementando quindi l’affidabilità e la sicurezza delle applicazioni – Macchine virtuali di differenti applicazioni non possono avere accesso alle rispettive risorse – Bug del software, crash, virus in una VM non possono danneggiare altre VM in esecuzione sulla stessa macchina fisica • Permette di isolare le prestazioni – Partizionamento delle risorse di sistema Valeria Cardellini - SD A.A. 2011/12 9 • A che livello realizzare la virtualizzazione? • Dipende fortemente dalle interfacce offerte dai vari componenti del sistema – Interfaccia tra hw e sw (user ISA: istruzioni macchina non privilegiate, invocabili da ogni programma) [interfaccia 4] – Interfaccia tra hw e sw (system ISA: istruzioni macchina invocabili solo da programmi privilegiati) [interfaccia 3] – Chiamate di sistema [interfaccia 2] • ABI (Application Binary Interface): interfaccia 2 + interfaccia 4 – Chiamate di libreria (API) [interfaccia 1] • Obiettivo della virtualizzazione – Imitare il comportamento di queste interfacce Valeria Cardellini - SD A.A. 2011/12 Riferimento: “The architecture of virtual machines” 10 • In base alle interfacce di astrazione distinguiamo: – Macchina virtuale di processo: virtualizzazione a livello di processo – Monitor della macchina virtuale (VMM, Virtual Machine Monitor) o anche hypervisor: virtualizzazione a livello di sistema – Virtualizzazione a livello di sistema operativo • Considerando il VMM, distinguiamo: – – – – VMM di sistema VMM ospitato Virtualizzazione completa Paravirtualizzazione Valeria Cardellini - SD A.A. 2011/12 11 • Virtualizzazione solo per un singolo processo – La VM di processo è una piattaforma virtuale che esegue un singolo processo – Fornisce un ambiente ABI o API virtuale per le applicazioni utente • Il programma è compilato in un codice intermedio (portabile), che viene successivamente eseguito nel sistema runtime • Esempi: Java VM, Wine, .NET CLR Istanze multiple di combinazioni <applicazione, sistema runtime> Valeria Cardellini - SD A.A. 2011/12 12 • Uno strato sw separato che scherma completamente l’hw sottostante ed imita l’insieme di istruzioni dell’architettura • Sul VMM possono essere eseguiti indipendentemente e simultaneamente sistemi operativi diversi • Esempi: VMware, Microsoft Virtual PC, Parallels, VirtualBox, Xen Istanze multiple di combinazioni <applicazioni, sistema operativo> Valeria Cardellini - SD A.A. 2011/12 13 • Host: piattaforma di base sulla quale si realizzano le VM; comprende: – Macchina fisica – Eventuale sistema operativo nativo – VMM • Guest: tutto ciò che riguarda ogni VM – Sistema operativo ed applicazioni Valeria Cardellini - SD A.A. 2011/12 14 • In quale livello dell’architettura di sistema collocare il VMM? guest guest – direttamente sull’hardware (VMM di sistema o classico) – come applicazione su un SO esistente (VMM ospitato) host host VMM di sistema Valeria Cardellini - SD A.A. 2011/12 VMM ospitato 15 • VMM di sistema: eseguito direttamente sull’hw, offre funzionalità di virtualizzazione integrate in un SO semplificato – E’ necessario corredare il VMM dei driver necessari per gestire le periferiche – Esempi: VMware ESX, Xen • VMM ospitato: eseguito sul SO host, accede alle risorse hw tramite le chiamate di sistema del SO host – Installazione più semplice – Può usare il SO sottostante per gestire le periferiche e può utilizzare altri servizi offerti dal SO sottostante (es. scheduling, gestione delle risorse) – Degrado delle prestazioni rispetto a VMM di sistema – Esempi: VMware Server, VirtualBox, Virtual PC, Parallels Desktop Valeria Cardellini - SD A.A. 2011/12 16 • Quale modalità di dialogo tra la VM ed il VMM per l’accesso alle risorse fisiche? – Virtualizzazione completa – Paravirtualizzazione • Virtualizzazione completa – Il VMM espone ad ogni VM interfacce hw simulate funzionalmente identiche a quelle della sottostante macchina fisica – Il VMM intercetta ogni richiesta di accesso privilegiato all’hw e ne emula il comportamento atteso – Il VMM gestisce un contesto di CPU per ogni VM – Il VMM condivide le CPU fisiche tra tutte le VM • Il VMM comprende uno scheduler di VM – Esempi: KVM, VMware ESX Valeria Cardellini - SD A.A. 2011/12 17 • Quale modalità di dialogo tra la VM ed il VMM per l’accesso alle risorse fisiche? • Paravirtualizzazione – Il VMM espone ad ogni VM interfacce hw simulate funzionalmente simili (ma non identiche) a quelle della sottostante macchina fisica – Non viene emulato l’hw, ma viene creato uno strato minimale di sw (Virtual Hardware API) per assicurare la gestione delle singole istanze di VM ed il loro isolamento – Esempi: PikeOS, Oracle VM, Xen Per un confronto qualitativo delle diverse soluzioni per VM http://en.wikipedia.org/wiki/Comparison_of_platform_virtual_machines Valeria Cardellini - SD A.A. 2011/12 18 • Principale vantaggio – SO guest non modificato (non sa dell’esistenza del VMM) • Svantaggi – VMM più complesso – Collaborazione del processore per implementazione efficace • Perché? • L’architettura del processore opera secondo almeno 2 livelli (ring) di protezione: supervisore e utente – Solo il VMM opera nello stato supervisore, mentre il SO guest e le applicazioni (quindi la VM) operano nello stato utente • Problema del ring deprivileging: il SO guest opera in uno stato che non gli è proprio ! non può eseguire istruzioni privilegiate • Problema del ring compression: poiché applicazioni e SO guest eseguono allo stesso livello, occorre proteggere lo spazio del SO Valeria Cardellini - SD A.A. 2011/12 19 • Come risolvere il ring deprivileging – Trap-and-emulate: se il SO guest tenta di eseguire un’istruzione privilegiata, il processore notifica un’eccezione (trap) al VMM e gli trasferisce il controllo; il VMM controlla la correttezza dell’operazione richiesta e ne emula il comportamento – Si ha invece un’esecuzione diretta delle istruzioni non privilegiate eseguite dall’ambiente guest • Ma il meccanismo di notifica al VMM per ogni istruzione privilegiata è offerto solo dai processori con supporto nativo alla virtualizzazione (Intel VT, AMD-V) – IA-32 non lo è! Come realizzare la virtualizzazione completa in mancanza del supporto hw? Fast binary translation: il VMM scansiona a runtime il codice prima della sua esecuzione per sostituire blocchi contenenti istruzioni problematiche con blocchi equivalenti dal punto di vista funzionale e contenenti istruzioni per la notifica di eccezioni al VMM ! maggiore complessità del VMM e minori prestazioni Valeria Cardellini - SD A.A. 2011/12 20 • Xen è l’esempio più noto di paravirtualizzazione http://xen.org (sviluppato all’università di Cambridge) – Il VMM offre al SO guest un’interfaccia virtuale (hypercall API) alla quale il SO guest deve riferirsi per aver accesso alle risorse fisiche della macchina – Occorre rendere compatibile con Xen il kernel ed i driver del SO guest • Soluzione preclusa ai sistemi operativi commerciali, a meno di non avere un processore che supporti la virtualizzazione nativa (gestita a partire da Xen 3.0) – Le applicazioni rimangono invece invariate Valeria Cardellini - SD A.A. 2011/12 21 • Vantaggi – Overhead minimo: in grado di fornire prestazioni molto simili a quelle dell’esecuzione non virtualizzata – Supporta la migrazione live di macchine virtuali • Usato come VMM da molti provider di Cloud pubbliche – Ad es. Amazon EC2, Rackspace Cloud Valeria Cardellini - SD A.A. 2011/12 22 • Finora considerata virtualizzazione a livello di sistema (ISA) • La virtualizzazione a livello di SO permette l’esecuzione all’interno di un singolo SO di molteplici ambienti di esecuzione tra di loro isolati – Detti Virtual Environment (VE), container, partition, … – Ciascun VE ha un proprio insieme di processi, file system, utenti, interfacce di rete con indirizzi IP, tabelle di routing, … Valeria Cardellini - SD A.A. 2011/12 23 • Vantaggi – Degrado di prestazioni pressoché nullo • Normali chiamate di sistema – Elevata densità • Centinaia di istanze su una singola macchina fisica • Svantaggio: minore flessibilità – Non permette di eseguire allo stesso tempo kernel di differenti SO • Esempi: FreeBSD Jail, Solaris Zones/Containers, LinuxVServer, OpenVZ (per Linux), Parallels Virtuozzo Valeria Cardellini - SD A.A. 2011/12 24 • Validi per virtualizzazione sia a livello hw sia a livello di SO • In ambito personale • In ambito didattico • In ambito professionale – Per ambienti di test e sviluppo di applicazioni • In ambito aziendale – Per il consolidamento dei server e dei data center – Per business continuity: ridurre i costi e la complessità incapsulando interi sistemi in singoli file (system image) che possono essere replicati e reinstallati su qualsiasi server Valeria Cardellini - SD A.A. 2011/12 25 • PlanetLab: un sistema distribuito collaborativo caratterizzato da virtualizzazione distribuita http://www.planet-lab.org/ – Ampio insieme di macchine sparse su Internet • Più di 1000 nodi in oltre 500 siti – Usato come testbed per sperimentare sistemi ed applicazioni distribuite su scala planetaria in un ambiente reale – Alcuni esempi di sistemi ed applicazioni testati su PlanetLab • • • • • Distributed Hash Table (Chord, Tapestry, Pastry, Bamboo, …) Content Distribution Network (CoDeeN, …) Virtualizzazione ed isolamento (Denali, …) Multicast di livello applicativo (Scribe, …) Misure di rete (Scriptroute, I3, …) • M-Lab: nuova piattaforma per lo sviluppo di strumenti di misura in Internet, è un’evoluzione di PlanetLab Valeria Cardellini - SD A.A. 2011/12 26 • Organizzazione di base di un nodo PlanetLab – Ogni nodo ospita una o più macchine virtuali – VMM, parte di un SO Linux esteso • Virtualizzazione a livello di sistema operativo – Vserver: ambiente separato in cui può essere eseguito un gruppo di processi • Completa indipendenza, concorrenza ed isolamento tra processi in vserver diversi Riferimento: L. Peterson, T. Roscoe, “The design principles of PlanetLab”, Operating Systems Review, 40(1):11-16, Jan. 2006. Valeria Cardellini - SD A.A. 2011/12 27 • Un’applicazione in PlanetLab viene eseguita in una slice della piattaforma – Slice: insieme di vserver (in esecuzione su nodi diversi), su ciascuno dei quali l’applicazione riceve una frazione delle risorse del nodo sotto forma di VM; assimilabile ad un cluster di server virtuali • Virtualizzazione distribuita: insieme distribuito di VM che sono trattate dal sistema come un’entità singola – Programmi appartenenti a slice diverse, ma in esecuzione sullo stesso nodo, non interferiscono gli uni con gli altri – Molteplici esperimenti possono essere eseguiti simultaneamente su PlanetLab Valeria Cardellini - SD A.A. 2011/12 28 • Migrazione di codice – In sistemi omogenei – In sistemi eterogeni • Migrazione di macchine virtuali Valeria Cardellini - SD A.A. 2011/12 29 • Nei SD la comunicazione può non essere limitata al passaggio dei dati, ma riguardare anche il passaggio di programmi, anche durante la loro esecuzione • Motivazioni per la migrazione del codice – Bilanciare o condividere il carico di lavoro – Risparmiare risorse di rete e ridurre il tempo di risposta processando i dati vicino a dove risiedono – Sfruttare il parallelismo – Configurare dinamicamente il SD Valeria Cardellini - SD A.A. 2011/12 30 • Processo composto da tre segmenti – Segmento del codice • Le istruzioni del programma in esecuzione – Segmento delle risorse • I riferimenti alle risorse esterne di cui il processo ha bisogno – Segmento dell’esecuzione • Lo stato del processo (stack, PC, dati privati) • Alcune alternative per la migrazione – Mobilità leggera o mobilità forte • Leggera: trasferito solo il segmento del codice • Forte: trasferito anche il segmento dell’esecuzione – Migrazione iniziata dal mittente o avviata dal destinatario – Nuovo processo per eseguire il codice migrato o clonazione • Esempi: migrazione di processi in MOSIX • Argomento approfondito a Sistemi Informatici Mobili Valeria Cardellini - SD A.A. 2011/12 31 • In ambienti eterogenei, la macchina di destinazione può non essere in grado di eseguire il codice – La definizione del contesto di processo, thread e processore è fortemente dipendente dall’hw, dal SO e dal sistema runtime • Quale soluzione per migrare in ambienti eterogenei? Usare una macchina virtuale – Macchina virtuale di processo – Monitor di macchina virtuale Valeria Cardellini - SD A.A. 2011/12 32 • Migrazione di istanze di macchine virtuali tra macchine fisiche – Live migration: la VM è in funzione durante la migrazione – Occorre migrare memoria, storage e connessioni di rete in modo trasparente alle applicazioni in esecuzione • Per migrare lo storage: – Il VMM salva tutti i dati della VM sorgente in un file di immagine, che viene trasferito sulla VM di destinazione • Per migrare la memoria: – Fase di warm-up: il VMM copia le pagine da VM sorgente a VM di destinazione mentre la VM sorgente è in esecuzione – Fase di stop-and-copy: la VM sorgente viene fermata e vengono copiate soltanto le pagine dirty – Tempo di downtime: da qualche msec a qualche sec, in funzione della dimensione della memoria, delle applicazioni e della banda di rete tra le VM Valeria Cardellini - SD A.A. 2011/12 33 • Vantaggi rispetto alla migrazione del codice – La macchina fisica originale può essere smantellata – Trasferimento consistente ed efficiente dello stato inmemory • Esempi: – Supportata da alcune soluzioni già considerate (KVM, OpenVZ, Xen, VirtualBox, Virtuozzo) – Come prodotto extra: VMware vMotion Valeria Cardellini - SD A.A. 2011/12 34