La virtualizzazione

Tutorial sulla modalità per creare “ambienti virtuali” su una stessa macchina fisica.

febbraio 2007 Ultimamente si parla sempre più spesso di “virtualizzazione”,
ma cosa significa esattamente? Il concetto indica la creazione, mediante strumenti
software, di una “macchina virtuale” ossia di un ambiente che si
comporta come se fosse un computer a sé stante, ma che può esistere
assieme ad altre macchine virtuali sulla stessa macchina fisica.

Facciamo un esempio pratico. Supponiamo di voler lavorare con Windows XP e
con Windows 98 oppure con Linux sullo stesso computer, perché disponiamo
di alcune applicazioni o di alcuni dispositivi che possono operare solo con
tali sistemi. Abbiamo l’alternativa di avviare il nostro computer ogni
volta con un sistema operativo diverso, usando le funzioni di scelta all’avvio
offerte da XP, oppure possiamo caricare Windows XP come in una normale sessione
di lavoro, avviare il software di gestione delle “macchine virtuali”
e quindi attivare una macchina virtuale che, sullo stesso computer fisico, ci
permetta di usare contemporaneamente XP, 98, Linux o qualsiasi altro sistema
consentito dal particolare sistema di virtualizzazione in uso.

Non solo, possiamo anche configurare la macchina virtuale in modo che ogni
volta che si avvia ci presenti una serie di applicazioni e utilizzi particolari
dispositivi periferici. Si tratta di un concetto molto più avanzato rispetto
al classico “multitasking”, ossia l’esecuzione contemporanea
di diverse applicazioni sfruttando i tempi morti del processore. Qui abbiamo
“macchine” completamente indipendenti che lavorano in contemporanea
sfruttando un meccanismo interno del processore che permette appunto di creare
“macchine virtuali” tra loro indipendenti e capaci di usare le risorse
interne del computer (memoria, dischi, porte di comunicazione) senza andare
in conflitto tra loro.

Siamo già abituati da Windows alla separazione delle applicazione e
alla protezione del sistema rispetto al cattivo funzionamento di un particolare
programma. Ogni applicazione dispone di una sua area di memoria riservata in
cui nessun’altra può scrivere e, a sua volta, le viene impedito
di scrivere o leggere al di fuori di tale area; i file aperti in modo esclusivo
da una applicazione sono inaccessibili alle altre; una porta di comunicazione
o una periferica di cui si stia servendo una applicazione X non posso essere
acquisiti o usati contemporaneamente anche da un’applicazione Y (a meno
che non sia esplicitamente previsto).

Inoltre, se a causa di un errore software un’applicazione si blocca,
di solito è possibile “chiuderla” senza che le altre applicazioni
in esecuzione ne risentano (salvo che per un rallentamento che perdura finché
l’applicazione “impazzita” non viene chiusa). Il sistema operativo
non perde mai il controllo della situazione. Nella virtualizzazione però,
il livello di protezione si spinge ben oltre, visto che la macchina virtuale
è a tutti gli effetti indipendente dal resto del sistema.

Il virtualizzatore: armonizzare diversi sistemi operativi
Un sistema di virtualizzazione non è un sistema operativo vero e proprio,
bensì un’applicazione come le altre e sfrutta quindi i servizi
offerti dal sistema operativo per cui è stato scritto. Esistono virtualizzatori
per Windows, per Linux e per Macintosh (Unix). La stabilità del virtualizzatore
dipende sia dalla qualità con cui è stato scritto sia dalla stabilità
intrinseca della macchina su cui sta operando. Se apriamo una macchina virtuale
su un sistema che ha già problemi, è possibile che tali problemi
si estendano anche alla macchina virtuale. Il virtualizzatore gestisce e amministra
l’esecuzione “contemporanea” di più sistemi operativi
facendo perno su funzioni hardware fornite direttamente dalla CPU.

Il suo ruolo è quello di assicurare, tra le altre, le seguenti proprietà:
• Multitasking: supportare l’esecuzione contemporanea di più
sistemi operativi ospiti (guest OS).
• Isolamento: garantire che il crash di un sistema operativo e della relativa
macchina virtuale non si ripercuota sulle altre macchine virtuali (se va in
blocco il sistema principale da cui il virtualizzatore è stato avviato,
naturalmente si bloccano anche tutte le macchine virtuali).
• Amministrazione: l’utente deve avere la possibilità di
avviare, interrompere, riconfigurare o clonare le macchine virtuali con facilità
e senza dover arrestare quelle non interessate dall’operazione.
• Gestione delle risorse e rispetto di limiti e quote: non deve accadere
che un sistema operativo si accaparri tutta la potenza di calcolo della CPU
rallentando quasi completamente gli altri, né che possa allocare tutta
la memoria disponibile privandone gli altri. Per quanto riguarda le altre risorse
hardware e le periferiche, si deve stabilire se una scheda di rete, una stampante,
un disco USB, e così via debbano essere condivisi o assegnati in via
esclusiva a uno dei guest OS.

La possibilità di ottenere l’esecuzione contemporanea di sistemi
operativi diversi su una stessa macchina fisica è, probabilmente, l’innovazione
più immediatamente comprensibile che i virtualizzatori hanno portato
con sé, ma grazie a loro anche la fase di installazione e configurazione
di un sistema operativo è diventata quasi banale.

Un impiego emergente, molto utile anche per chi gestisce il proprio PC personalmente
e realizzabile senza spesa, è la creazione di una macchina virtuale identica
al sistema che si sta già usando (clonazione) sulla quale sperimentare
aggiornamenti di software, patch e l’installazione di nuovi applicativi.

Qualsiasi errore commesso nella macchina virtuale può essere eliminato
semplicemente cancellando la macchina virtuale stessa, senza che il PC originale
ne sia intaccato. Una volta che sarete sicuri che la modifica non comporti problemi,
potrete portarla anche sulla macchina fisica (quella originale). Tutto questo
avviene, tra l’altro, senza dover acquistare altre licenze del sistema
operativo e utilizzando strumenti anche gratuiti.

Un altro impiego emergente della virtualizzazione è la navigazione
Internet sicura: qualsiasi virus o minaccia riesca a entrare nella macchina
virtuale, rimane confinata e scompare con la cancellazione della stessa. La
macchian virtuale garantisce anche il completo anonimato.

Fino all’avvento dei virtualizzatori, per poter disporre su una stessa
macchina di due ambienti di esecuzione diversi (il classico esempio è
l’accoppiata Windows + Linux) oppure di due copie dello stesso ambiente,
era necessario sottoporsi al tedioso e delicato processo di una installazione
dual boot con partizionamento del disco fisso, definizione di tipo, numero e
dimensione delle partizioni e loro formattazione, scrittura e configurazione
di un boot loader, scelta del sistema operativo all’accensione e necessità
di reboot ogni volta che occorreva passare da Windows a Linux e viceversa.

Con un virtualizzatore tutto questo appartiene al passato: l’installazione
di un nuovo sistema operativo aggiuntivo si può addirittura effettuare
in finestra, mentre si sta operando nel familiare ambiente Windows, e nella
fase di partizionamento del disco non c’è da temere per i nostri
dati, visto che il “disco” che l’installer di Linux sta partizionando
e formattando non è altro che un disco virtuale, ospitato da un unico
grosso file creato dal virtualizzatore all’interno del file system di
Windows.

Inoltre, qualora dovesse occorrere l’installazione di un’altra
copia del sistema operativo o si volesse trasferire o replicare anche su un’altra
macchina una copia identica di tale installazione, l’operazione risulterebbe
banale in quanto basterebbe copiare una manciata di file (uno dei quali contiene
l’intero file system che emula il disco fisico, pluripartizionato, in
cui risiede l’OS virtualizzato).

I virtualizzatori possiedono anche la capacità di “congelare”
l’esecuzione delle virtual machines salvandone lo stato interno in modo
persistente, emulando in tal modo una funzionalità di Standby/Resume
o Suspend. Anche in questo caso lo stato può essere replicato, copiato
e/o trasferito da un PC all’altro insieme con l’immagine del file
system.

Impieghi dei virtualizzatori in ambito server
Grazie a tutte queste proprietà, i software di virtualizzazione hanno
trovato immediatamente impiego in diversi campi che hanno esigenza di poter
disporre di un gran numero di macchine o server amministrabili centralmente
con facilità, remotizzabili e accessibili via rete.

Per esempio, nel campo del software testing di determinati tipi di applicazioni
(monitoraggio di processo, telesorveglianza, etc.) che gestiscono via rete una
pluralità di dispositivi, è frequente la necessità di provare
gli applicativi in condizioni realistiche d’impiego; questo si può
fare a basso costo e con rapidità installando decine di PC virtuali su
un’unica macchina fisica, grazie a un virtualizzatore.

Altro importante esempio sono le cosiddette server farm, strutture nelle quali
sono installate e gestite macchine di classe server che, a pagamento, vengono
messe a disposizione di chiunque necessiti di mettere in linea siti Internet
e servizi di rete: in questi ambienti poter disporre di tecniche e sistemi che
consentono di gestire in modo elastico il numero di server virtuali attivabili,
senza per forza dover effettuare investimenti in nuovo hardware fisico anche
solo per aggiungere una singola macchina, significa aumentare la flessibilità
e l’adattabilità del business, ridurre i costi e le immobilizzazioni
di capitali e ridurre i rischi.

L’introduzione dei virtualizzatori può essere fatta anche in
situazioni pregresse in cui una schiera di server fisici di media potenza parzialmente
sfruttati viene rimpiazzata da poche potenti macchine multiprocessore su cui,
grazie a virtualizzatori, vengono installate macchine virtuali che assolvono
agli stessi incarichi di quelle fisiche, che possono così essere dismesse.
In questo caso si parla di server consolidation. Qui i vantaggi sono considerevoli
e consistono, innanzitutto, in una ottimizzazione dell’investimento, in
quanto la riserva di potenza di calcolo viene messa a fattor comune fra tutte
le macchine virtuali del server centralizzato, e non inutilmente replicata su
N macchine fisiche: il server centralizzato può così avere una
potenza (e un costo) minore della somma delle potenze (e dei costi) delle macchine
usate in precedenza, sebbene le prestazioni osservate da chi accede ai servizi
siano le stesse di prima, o perfino superiori, nei picchi di carico.

I costi operativi calano, in quanto le esigenze di spazio, climatizzazione
e alimentazione di un server centralizzato sono nettamente minori di quelle
degli N server di fascia media utilizzati in precedenza. Inoltre, i costi amministrativi
decrescono enormemente in quanto le operazioni di installazione, suspend/resume,
aggiunta di nuove macchine virtuali, sorveglianza, upgrade software, etc. sono
più semplici e possono essere effettuate da remoto agendo su più
macchine con strumenti di amministrazione omogenei.

I vantaggi della virtualizzazione
I vantaggi della virtualizzazione per l’utente desktop non sono da meno,
anche se l’enfasi si sposta alla facilità d’uso e all’aumento
della produttività personale. Per esempio, diventa possibile installare
una VM dedicata alla navigazione su Internet, in cui installeremo browser, IM
client, P2P e tutto il necessario, la quale però risulta perfettamente
isolata dal resto della macchina e, quindi, in grado di assicurare che eventuali
danni dovuti a malware, spyware e trojan resterebbero circoscritti rigorosamente
all’interno di quella VM.

In caso di destabilizzazione irreparabile della VM non si dovrà fare
altro che fermarla e riavviarla, oppure sostituirla con una copia di backup
fatta in precedenza e riattivarla: l’operazione dura poche decine di secondi
e subito dopo si è in grado di riprendere la navigazione con un computer
(virtuale) completamente rimesso a nuovo, con configurazione pulita e leggera,
senza tracking cookies, malware, plug-in sospetti o virus.

Intanto il sistema operativo “host”, quello in cui teniamo i nostri
dati e con il quale lavoriamo, non ha mai smesso di girare: tutto quanto descritto
si è infatti svolto in una finestra! Si confronti questa agilità
con la tradizionale esperienza di dover formattare e reinstallare un PC fisico,
con il problema del backup e recupero dei dati e l’affannosa ricerca di
tutti i driver e applicazioni necessari per ripristinare il funzionamento della
macchina e installati via via negli anni.

Un fenomeno in esplosione: le Virtual Appliances
Non a caso, dopo l’apparizione sul mercato dei software di virtualizzazione,
è immediatamente esploso il fenomeno degli archivi di Virtual Machine
di pubblico dominio, preconfigurate da appassionati con OS e applicativi adatti
per assolvere a un determinato scopo e messe a disposizione su Internet. È
importante sottolineare che la loro installazione richiede un impegno enormemente
minore di quello richiesto per l’installazione e configurazione manuale
dei singoli OS e applicativi che le compongono.

Queste VM, che possono essere scaricate e messe in funzione nel giro di minuti,
vengono spesso dette Virtual Appliances, quasi sempre adottano Linux come sistema
operativo in modo tale da azzerare i costi di licenze per l’OS, e ne esistono
per i più svariati scopi: fra le VA più utili, ricordiamo quelle
con funzionalità di router/firewall/proxy/mail server/anti spam; quelle
utilizzabili per mettere in piedi in pochi minuti una macchina completa LAMP
(Linux-Apache-MySQL-PHP) per far girare applicazioni server per il Web; le VA
destinate agli amministratori di rete, complete di tutti gli strumenti di analisi
del traffico e di intruder detection; quelle che contengono un ambiente di supporto
al lavoro cooperativo; quelle che implementano un motore di ricerca completamente
autonomo da attivare sulla propria Intranet aziendale; quelle che implementano
tutto il necessario per realizzare un chioschetto informativo multimediale;
o addirittura le VA che implementano completamente in software dei centralini
VOIP (VOIP PBX) già pronti per l’uso e basati su software gratuito.

Non sono stati trascurati nemmeno gli impieghi ludici: sono disponibili anche
delle VA che implementano dei game servers pronti all’uso per Call of
Duty 2 e FEAR. Per ulteriori esempi si veda l’ottimo archivio categorizzato
proposto sul sito VMWare.

CONDIVIDI

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here