3. PRODOTTI PER LA VIRTUALIZZAZIONE In questo capitolo verranno descritti alcuni dei prodotti commerciali e dei progetti opensource più noti; in particolare verrà presa in considerazione la soluzione SUN Solaris Container/Zones che rappresenta un sistema basato sulla tecnica della OS Virtualization 34 ; si proseguirà con una descrizione generale delle caratteristiche salienti della linea di prodotti VMware per poi passare all ultima soluzione Microsoft denominata Hyper-V; il capitolo si concluderà con una esposizione di due progetti opensource (Xen e KVM) i quali sono diventati anche ottime basi per prodotti commerciali (come ad esempio i già citati OracleVM, VirtualIron, SUN xvm). A parte la soluzione SUN tutti gli altri prodotti sono hypervisor e/o VMM 35. Infine, pur non essendo un applicativo che implementa un sistema di virtualizzazione, verrà descritta brevemente la libreria opensource Libvirt, che permette ad applicazioni di più alto livello di gestire l esecuzione di macchine virtuali su sitemi Linux. 3.1 SUN SOLARIS CONTAINERS/ZONES A partire da Solaris 10, nel sistema operativo della SUN è presente una ambiente di virtualizzazione che non prevede modifiche a livello hardware, ovvero ai processori, ma solo a livello software. Questo ambiente prevede un partizionamento mediante copia dei file del sistema operativo e di tutto l'ambiente di esecuzione. In questo modo è possibile creare delle zone da dedicare a copie di sistemi operativi, ognuno di essi con i propri file personalizzati ove necessario e con i propri processi. L'implementazione prevede che ogni zona sia completamente separata dalle altre. Lo schema di esempio dell implementazione di SUN Container/Zones è il seguente: 34 Si veda il paragrafo 2.1.4. 35 Si vedano i paragrafi 2.1.2 e 2.1.3-23 -
Figura 12: SUN Container/Zones Come mostrato in figura, l ambiente di virtualizzazione (container) contiene al suo interno diverse zone 36 ognuna delle quali ospita una macchina virtuale. Il compito principale dello strato di basso livello (OS platform) è quello di garantire il corretto isolamento fra le zone. Il compito della Virtual Platform, invece, è quello di mettere a disposizione delle zone le risorse principali di sistema, ovvero un root file system 37 comune e l accesso ai dispositivi hardware (come ad esempio le interfacce di rete). Una caratteristica importante di questa soluzione è la capacità del sistema di effettuare il riavvio di una zona in pochi secondi. 3.2 VMWARE VMware è una soluzione che utilizza il metodo della binary translation. Questa scelta è stata obbligata dall'assenza iniziale di altre tecniche efficienti per virtualizzare (come la virtualizzazione hardware). Le ultime versioni utilizzano la virtualizzazione hardware offerta dalle CPU Intelcompatibili. La binary translation riduce la velocità d'esecuzione al fine di porre in esecuzione i sistemi operativi senza la necessità di doverli modificare. 36 È possibile avere fino a 8192 zone. 37 La partizione principale di sistema. - 24 -
Con l'introduzione da parte di Intel e AMD delle estensioni per la virtualizzazione in hardware in grado di semplificare l'attività dell'hypervisor, VMware ha recepito il cambiamento tecnologico in atto per cui le ultime versioni del software sfruttano in modo nativo queste estensioni (se presenti nell'hardware in uso). VMware è una soluzione consolidata e matura; con l'acquisizione di una consistente quota di partecipazione azionaria di VMware da parte di Intel, il software può avvalersi del know-how del più grande produttore mondiale di microprocessori, nonché delle conoscenze specifiche di Intel in ambito di virtualizzazione in hardware. VMware detiene ad oggi la quota più consistente del mercato dei prodotti per la virtualizzazione dei sistemi operativi. Le principali funzionalità della soluzione VMware sono di seguito descritte. 38 1. High availability (HA) è un strumento per garantire l'affidabilità dei servizi. Il suo compito è di monitorare il pool di ESX server ed intervenire in caso di guasti hardware assistendo le VM presenti sul server in oggetto per garantirne il riavvio sui server fisici rimanenti. La caratteristica più interessante è la possibilità di monitorare le singole VM per verificare lo stato del loro funzionamento, ad esempio proteggendole da eventuali malfunzionamenti del sistema operativo virtuale. Il monitoraggio ed il riavvio avvengono in modo automatico secondo policy personalizzabili. 2. Distributed Resources Scheduler (DRS) e Distributed Power Management (DPM) DRS è una tecnologia in grado di bilanciare il carico di lavoro tra diversi server fisici in funzione della priorità assegnata alle VM. Consente di ottimizzare le risorse fisiche riassegnando di volta in volta le varie VM sulla base di differenti policy (ad esempio: garantire prestazioni minime ad una certa VM). Il software permette di gestire la manutenzione programmata: se è previsto un tempo di fermo si riassegnano le diverse VM tra i server rimanenti. DPM è una tecnologia di monitoraggio (dichiarata sperimentale dallo stesso produttore al momento della scrittura del documento) che sfrutta il DRS per ottimizzare i consumi energetici dei server fisici. 3. Virtual Machine File System (VMFS) è una tecnologia per centralizzare la memorizzazione dei dati tramite un file system di tipo cluster a cui possono accedere i vari server ESX in modo trasparente. I sistemi guest vedono le immagini virtuali su VMFS come dei dispositivi SCSI. VMware dichiara di permettere l'installazione su questi dispositivi anche di sistemi non certificati per l'installazione su SAN (esempio: Windows 95). L'accesso ai dati è di tipo concorrente quindi è possibile permettere a due macchine virtuali di leggere e scrivere sulla stessa unità di data storage. VMFS prevede la possibilità di assegnare al server di storage un proxy per il backup delle immagini delle VM. 4. Converter è un applicazione per la conversione di ambienti virtuali. Permette di convertire installazioni già attive su una macchina fisica in immagini utili per l'uso nei software di 38 La descrizione è basata sulle dichiarazioni del produttore della suite di prodotti VMware (http://www.vmware.com/) - 25 -
VMware (Phisical to Virtual - P2V) e di convertire immagini preesistenti in un formato compatibile VMware. La opzioni P2V sono limitate alla sola famiglia di sistemi operativi Microsoft e Linux. 5. Storage Vmotion è una funzionalità che permette di migrare le immagini dei dischi virtuali da uno storage server ad un altro via rete; il processo può avvenire mentre la macchina virtuale è in funzione e senza tempi di fermo significativi: il produttore dichiara tempi inferiori ai due secondi ma è desumibile che i tempi dipendano dalle prestazioni di rete e dalle prestazioni in lettura/scrittura del sottosistema di I/O. L'operazione di Storage Vmotion avviene in cinque fasi. 1. Vengono spostati i metadati (file di swap, configurazioni della VM). 2. Nella nuova locazione di storage vengono creati dei dischi temporanei (nella documentazione child disk) logicamente associati alla VM oggetto della Storage Vmotion. Questi dischi si occuperanno di intercettare le operazioni di scrittura della VM. 3. Vengono spostate le immagini dei dischi virtuali associati alla VM. 4. I dati delle immagini virtuali vengono sincronizzati con i dischi temporanei. 5. Viene aggiornata l'interfaccia di front end. 3.3 HYPER-V Hyper-V è l ultima soluzione Microsoft di VMM basata su Windows Server 2008. Essa viene distribuita sia nella versione Hypervisor-Hosted che nella versione OS-hosted 39 (anche chiamata standalone). Per essere installato ha bisogno di un hardware che supporti le estensioni dedicate alla virtualizzazione 40. Huper-V implementa una tecnica chiamata Parent/Child partitioning la quale può essere schematizzata come nella figura seguente: 39 Si veda il paragrafo 2.1.3 40 Intel o AMD. Si veda il paragrafo 2.3-26 -
Figura 13: Architettura di Hyper-V 41 Come si può notare la partizione root è una macchina virtuale che esegue una copia di Windows Server 2008 64 bit, la quale ospita tutti quei componenti necessari alla gestione di tutte le macchine virtuali. Le partizioni child, invece, ospitano i sistemi operativi delle macchine guest vere e proprie che possono essere di tre tipi differenti: 1. Sistemi Windows Hyper-V Aware (chiamati anche enlightened): sono quei sistemi operativi in grado si rilevare la presenza di Hyper-V e quindi ottimizzare la loro esecuzione e comunicare direttamente con alcune componenti di Hyper-V 42. Ad esempio Windows Server 2008 e 2003 R2 sono S.O. appartenenti a questa categoria. 2. Sistemi non Windows Hyper-V Aware: sono sistemi operativi che non appartengono alla famiglia Microsoft ma che - con l aggiunta di opportuni moduli/driver sviluppati da terze parti - consentono di rilevare la presenza di Hyper-V e quindi di ottimizzare la loro esecuzione. Appartiene a questa categoria, ad esempio, il sistema Novell SUSE 10 Xen-enabled. 3. Sistemi Non Hyper-Aware: sono sistemi operativi che non sono in grado di rilevare la presenza di Hyper-V. Per questa ragione sono eseguiti senza particolari ottimizzazioni (come ad esempio Windows Server 2000 e le vecchie versioni di Windows). 41 La figura è tratta da Virtualtopia, An Overview of the Hyper-V Architecture - http://www.virtuatopia.com/index.php/an_overview_of_the_hyper-v_architecture 42 Hyper-V pur non essendo un sistema paravirtualizzato, eredita da questo approccio alcuni concetti: il sistema guest è in grado di rilevare il VMM e di colloquiare con esso. - 27 -
3.4 XEN Xen è un software per la virtualizzazione di sistemi operativi sviluppato dall'università di Cambridge. L'architettura di Xen è la principale antagonista di VMware ed è integrata dalle soluzioni di virtualizzazione di Sun Oracle. L'approccio adottato da Xen si basa sui seguenti concetti: L'hypervisor è rilasciato e sviluppato con licenza GPL, mentre alcune delle utilità di supporto sono vendute con il modello tradizionale. Il sistema è integrato con il kernel Linux e alcune componenti di Xen si trovano direttamente dentro il ramo di sviluppo ufficiale. Xen ha introdotto il concetto di paravirtualizzazione. Nel caso di sistemi operativi non paravirtualizzabili Xen può sfruttare la virtualizzazione in hardware messa a disposizione da Intel e AMD. L hypervisor Xen definisce con il termine Domain l unita di schedulazione: in pratica ad ogni domain corrisponde una macchina virtuale; il dominio numero 0 43 viene creato automaticamente all avvio del sistema ed è l unico ad avere privilegi amministrativi in grado di avviare, sospendere, terminare le altre macchine virtuali. Il processo che ha il compito di gestire queste operazione si chiama xend e, oltre a gestire il ciclo di vita delle macchine guest, fornisce all utente le relative console virtuali. Xend ha sia un interfaccia a linea di comando sia una basata su http. Figura 14: Architettura di XEN 44 Nell'estate del 2007 XenSource è stata acquistata da Citrix la quale rivende prodotti di fascia enterprise basati sul codice di Xen. Le funzionalità dichiarate della Enterprise Edition sono: XenMotion Live Migration with Resource Pools: capacità di migrare una VM da un host fisico ad un altro appartenente allo stesso pool, senza necessità di fermo macchina. 43 Gli altri domain vengono genericamente chiamati Domain U. 44 La figura è stata tratta da http://commons.wikimedia.org/wiki/file:xen-schema.png - 28 -
XenCenter Administrator Console with Multi-Server Multi-Pool Management: interfaccia grafica che permette di gestire contemporaneamente più server locali e remoti. CPU, Disk and Network Resource Controls for QoS: gestione granulare delle risorse dell'host fisico. 3.5 KVM Il Kernel Virtualization Module è un modulo per il kernel Linux rilasciato sotto licenza GPL che permette la virtualizzazione dei sistemi operativi. La principale innovazione e differenza con i principali hypervisor disponibili risiede nella gestione dell' I/O e nella sua estrema semplicità. Grazie a questo approccio è possibile ottenere maggiori prestazioni rispetto ad altri hypervisor. La gestione dell'i/o è particolarmente gravosa in termini di prestazioni: KVM ovvia a questo inconveniente usando i driver disponibili per il kernel della macchina host. Il principale svantaggio è quello di rendere più difficile la virtualizzazione di sistemi di cui non sono disponibili i sorgenti (per esempio Windows). Per tutti gli altri (per esempio Solaris, *BSD) il supporto è stato garantito nel giro di pochi mesi dai primi rilasci stabili. KVM è solamente un modulo per il kernel GNU/Linux. Tutta la parte di controllo, gestione e manutenzione viene delegata a programmi ed utilità esterne. Il principale software per la gestione è Qemu-kvm, una versione modificata del programma Qemu per l'emulazione delle CPU. 3.6 LIBVIRT Libvirt è una libreria scritta da programmatori di Red Hat per la gestione di hypervisor. Fornisce una serie di API standard che consentono agli sviluppatori e agli amministratori di sistema una maggiore astrazione rispetto all'hypervisor in uso. La descrizione della macchina virtuale avviene con file XML. Supporta i seguenti ambienti di virtualizzazione / emulazione: Xen hypervisor (host Linux o Solaris) QEMU KVM LXC Linux container system OpenVZ Linux container system User Mode Linux paravirtualized kernel VirtualBox hypervisor Una delle applicazioni più note basate su Libvirt è Virt-manager, che ha le seguenti caratteristiche: è sponsorizzato da Red Hat che ha l obiettivo di facilitare la gestione e la creazione di macchine virtuali; è basata su Libvirt e ne eredita il principale pregio costituito da una gestione delle VM trasparente rispetto all'hypervisor sottostante - 29 -