mar 102011
 

Eccomi a scrivere un articolo meno pratico rispetto alla serie precedente dedicata ai web server, giusto per presentare alcuni dei sistemi di virtualizzazione presenti sul mercato e capirne le peculiarità. Analizzeremo quindi il funzionamento di VMWare ESXi, XEN, OpenVZ e KVM.

VMWare ESXi
VMWare è senza dubbio il leader nel campo della virtualizzazione aziendale. E’ il sistema più datato, quindi il più conosciuto e con il maggior numero di installazioni. Non prenderemo in considerazione le versioni “Workstation” e “Server” in quanto prodotti destinati ad un uso non impegnativo, ma ci concentreremo esclusivamente su ESXi, prodotto di punta della casa.
ESXi, giunto alla versione 4.1, è un prodotto scaricabile liberamente che, nella versione gratuita, permette di creare su un server delle macchine virtuali. Tali macchine si controlleranno attraverso il programma “vSphere client”che è una console che funziona esclusivamente in ambiente Windows attraverso la quale sarà possibile installare e controllare remotamente le VM. Dal sito di VMWare è possibile acquistare delle licenze in grado di abilitare funzionalità avanzate quali il vMotion (spostamento di una macchina virtuale tra più server), backup a caldo e alta affidabilità.
Andando più nel dettaglio, ESXi installa sul server un kernel Linux minimo in grado di pilotare l’hardware del server (bisogna prestare particolare attenzione a questo, in quanto la lista di Hardware compatibile è molto ristretta: ad esempio non sono compatibili i controller Raid software); una volta completato il caricamento del kernel base, viene caricato il “vmkernel” che è un secondo kernel sviluppato da VMWare che interagisce col kernel linux per mettere a disposizione le funzionalità di virtualizzazione.
La tecnologia utilizzata è denominata “Full Virtualization”: il vmkernel si adopera per mettere a disposizione un ambiente hardware virtualizzato via software: una volta creata la VM, difatti, sembrerà di avere un vero e proprio computer con il suo bios, e tutto l’hardware di un computer; in realtà si tratta “solo” di una emoulazione software che, pertanto, ha il difetto di non essere troppo veloce. Difatti, una volta completata l’installazione del sistema operativo di base all’interno della macchina virtuale, è cosa buona e giusta installare i “VMWare Tools” che sono dei driver in grado di dialogare direttamente con il vmkenel bypassando l’emulazione software e rendendo l’ambiente molto più veloce.
Ultima caratteristica degna di nota è il Filesystem VMFS proprietario di VMWare in grado di gestire l’accesso contemporaneo da più server ESXi alle macchine virtuali presenti su una SAN.

XEN
Pochi anni dopo la nascita di VMWare, vede la luce anche XEN. Il luogo comune per denigrare XEN da chi predilige VMWare è che XEN è un sistema giovane: VMWare ESX Server 1.0 è stato rilasciato nel 2001, mentre la prima versione di XEN è del 2003. Entrambi i sistemi, da allora, hanno fatto passi da gigante!
XEN nasce come progetto di ricerca dell’Università di Cambridge per poi divenire una società vera e propria chiamata XENSource, Inc. acquisita nel 2007 da Citrix: lo scopo di XEN è creare un ambiente di virtualizzazione OpenSource e l’idea iniziale ha continuato a rimanere nel tempo nonstante alla base ci sia una azienda con fini di lucro.
In realtà, proprio questa filosofia OpenSource ha portato XEN ad essere il sistema di virtualizzazione più utilizzato da chi offre servizi di virtualizzazione a terzi: un nome su tutti Amazon Elastic Cloud Coumputer (EC2)… una referenza mica da ridere!
Vediamo di chiarire in che modo viene rilasciato XEN:
XEN è “solo” un sistema di virtualizzazione che quindi, per funzionare, deve avere alla base un server Linux. E’ possibile quindi installare una comune distribuzione Linux (per XEN consiglio vivamente Debian oppure OpenSUSE), installare il pacchetto XEN e, successivamente, installare qualsiasi altro pacchetto utile per gestire XEN (ad esempio Heartbeat per l’alta affidabilità).
Esiste una versione commerciale di XEN chiamata XENServer che si presenta in maniera molto simile a VMWare ESXi: viene fornita attraverso un CD autoinstallante che configura automaticamente il computer con Linux, XEN e tutti gli altri pacchetti necessari; inoltre mette a disposizione una console di gestione per Windows (XENClient) simile al VSphere Client, anche se questo sistema è comunque compatibile con console di terze parti anche via web/java. Questa versione commerciale “closed” mette a disposizione tutte le features gratuitamente (spostamento a caldo di macchine, backup ecc.) tranne l’alta affidabilita, per la quale è necessario acquistare la licenza a apgamento. Citrix, dal 2009, mette a disposizione anche Xen Cloud Platform (XCP) che non è altro che la versione Open Source (oltre che free) di XENServer: questa versione la possiamo definire come la “versione di sviluppo” di XENServer ed ha le medesime features e le medisime mancanze (l’alta affidabilità).
Dal punto di vista tecnologico, XEN non crea ambienti in “Full Virtualization” come VMWare, bensì può lavorare in due modi distinti: in Paravirtualization e in Hardware Virtualization.
La paravirtualizzazione è il metodo caratteristico di XEN, ove il sistema operativo client deve essere strutturato appositamente per girare in un ambiente XEN. Tutte le versioni di Linux possono girare in questo tipo di ambiente e dialogare quindi direttamente con XEN: questo sistema permette di avere una migliore densità di macchine virtuali rispetto alla Full Virtualization oltre a garantire standard di sicurezza di livello superiore.
Purtroppo, però, non tutti i sistemi operativi supportano la paravirtualizzazione, pertanto XEN mette a disposizione per questi un secondo metodo: la virtulizzazione Hardware – che vedremo nel dettaglio successivamente quando parleremo di KVM.

OpenVZ
OpenVZ è la versione OpenSource di Virtuozzo. Si tratta di una virtualizzazione del sistema operativo e quindi la limitazione maggiore è causata proprio dal fatto che solo Linux è supportato. Questa tecnica di virtualizzazione si basa su un unico kernel linux che viene condiviso tra le macchine virtuali (tecnicamente chiamate “container”); dalla sua ha il vantaggio che, se paragonato a VMWare e a XEN, è molto più veloce in quanto non è presente l’overhead dell’hypervisor: difatti, da prove di laboratorio, la perdita di prestazioni di un server OpenVZ con una macchina virtuale rispetto ad un server fisico varia dall’ 1% al 3%.
Anche se agli occhi dell’utilizzatore sembrerà di avere un sistema operativo dedicato, risulta però evidente che ciò non è vero e, prorio la mancanza di flessibilità causata dal kernel condiviso, lo rende un sistema adatto solo per situazioni in cui tutti i server virtuali compiano operazioni standard (ad esempio un insieme di web server).

Kernel Virtul Machine (KVM)
KVM è il sistema emergente di virtualizzazione: ha il pregio di essere sviluppato in maniera congiunta da moltissimi produttori Hardware e Software (RedHat, IBM…) per cui sta emergendo in maniera prorompente, ha il difetto che funziona solo su Hardware dell’ultima generazione.
Difatti il metodo prescelto per la virtualizzazione è esclusivamente l’Hardware Virtualization che, per funzionare, necessita di processori Intel con tecnologia VT o AMD-V, cioè con istruzioni dedicate alla virtualizzazione. Punto di forza di KVM è la sua semplicità in quanto, in realtà, KVM non virtualizza nulla: è solamente un modulo Linux (/dev/kvm) che viene utilizzato da un software nello user space (qemu) che offre la virtualizzazione vera e propria. Come XEN, è un prodotto OpenSource ed quindi integrabile con software e librerie di terze parti atte a fornire funzionalità aggiuntive come l’alta affidabilità.

Una breve digressione: openstack
A proprosito di librerie di terze parti che si integrano con XEN e KVM: parliamo di Openstack.
Openstack non è un sistema di virtualizzazione, ma è un sistema che combina differenti tecnologie per realizzare un sistema di Cloud Computing con licenza OpenSource Apache 2.0. OpenStack si compone di due progetti: un sistema di cloud storage (Swift) e un sistema di cloud computing (Nova) alla cui base può esserci indifferentemente XEN o KVM. Se si vogliono replicare in casa i servizi di Amazon e, perchè no, integrare il proprio cloud con cloud esterni nel caso in cui possa servire “una spinta in più” in caso di utilizzo intensivo momentaneo, questa è una possibile soluzione.

Articoli simili

  One Response to “Parliamo di virtualizzazione”

  1. [...] Per ulteriori dettagli sui metodi di virtualizzazione potete fare riferimento a questo articolo. [...]

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>