Con i processori x86 che diventano sempre più potenti gli utenti stanno cercando strade per ottenere di più dalle piattaforme che già li utilizzano. Le tecnologie di virtualizzazione, in grado di creare una sorta di container software isolati che includono sistema operativo e applicazioni, sono una strada per farlo. E l'interesse in questo tipo di sistemi sta effettivamente crescendo.
Di cosa si tratta
I sistemi di virtualizzazione sono da molto tempo disponibili per il mondo mainframe, mentre è un concetto relativamente nuovo per quello più tradizionale dei server "x86". In generale con esse si indica la possibilità di astrarre alcuni servizi IT dalle rispettive dipendenze (reti, sistemi di storage e hardware), abilitando l'esecuzione di più sistemi operativi virtuali su una singola macchina fisica, rimanendo però, dal punto di vista logico, distinti. Il sistema operativo "ospitante" (l'host) crea di fatto una sorta di hardware partizionato eseguendo più sistemi operativi "ospiti" (i guest). Di fatto la parte inferiore dello stack software è occupata da una singola istanza di un sistema operativo ordinario che è installato direttamente sul server. Sopra di questo, un layer di virtualizzazione gestisce il reindirizzamento e l'emulazione che va a sua volta a comporre il computer virtuale. La combinazione di questi due layer inferiori viene quindi definita host. Quest'ultimo fornisce le varie caratteristiche del computer fino al livello del BIOS ed è in grado di generare macchine virtuali (e indipendenti) a scelta, basandosi sulle configurazioni definite dall'utente. Come i server fisici anche quelli virtuali sono ovviamente inutili fintanto che non vi si installa un sistema operativo, ovvero i guest, i quali penseranno di avere tutta la macchina per sè, ignorando l'esistenza degli altri.
Come funziona
Sistemi operativi e applicazioni che girano sui server virtuali non hanno il controllo diretto su risorse quali memoria, dischi fissi e porte di rete. E' invece la macchina virtuale che si trova tra di essi a intercettare le richieste di interazione con l'hardware. Sul mercato ci sono soluzioni che sono in grado di "simulare" una configurazione che ha solo una vaga somiglianza con l'hardware effettivamente sottostante. Ad esempio, l'host potrebbe inizializzare il processo di un controller SCSI fino al minimo dettaglio, convincendo il sistema operativo guest, anche senza l'esistenza reale di alcun controller SCSI. Di fatto è fa sembrare i drive di tipo IDE come se si trattassero di SCSI, converte le condivisioni di rete riguardo lo storage collegato localmente, converte un singolo adattatore Ethernet in più adattatori e crea gateway tra sistemi operativi più vecchi e hardware moderni non supportati.
Da dove cominciare
Parecchie aziende operano ancora con in testa un modello "un server - un'applicazione". Di fatto, spiegano alcuni esperti, con l'evoluzione dei sistemi elaborativi questo risulta spesso in uno spreco portando a investimenti non necessari. Già qui la virtualizzazione viene quindi vista come un'applicazione interessante. Ma non solo. Essi sostengono anche che può essere utilizzata per risolvere difficili problematiche tradizionali. In primo luogo si parla ad esempio di validazione di patch e aggiornamenti all'interno di ambienti di test, prima dell'effettiva messa in produzione. Sul fronte sicurezza si affronta invece l'argomento della segmentazione delle risorse che, tradizionalmente, viene eseguita a livello di rete implementando firewall e liste di controllo degli accessi, ad esempio posizionando un Web server all'interno della zona DMZ. Attraverso la virtualizzazione dei server è possibile invece segmentare eseguendo i processi software su server virtuali separati logicamente: in questo modo la compromissione di un singolo server (seppur virtuale) non impatterà sul totale del sistema su cui risiede.
I vantaggi della virtualizzazione
Questi sono alcuni dei vantaggi che i sostenitori della tecnologia vedono in una soluzione di virtualizzazione ben progettata:
- Riduce i costi consolidando l'hardware
- Alloca le risorse dinamicamente quando e dove necessario
- Riduce in modo drastico il tempo necessario alla messa in opera di nuovi sistemi
- Isola l'architettura nel suo complesso da problemi a livello di sistema operativo e applicativo
- Abilita una gestione più semplice delle risorse eterogenee
- Facilita testing e debugging di ambienti controllati
