I principi di funzionamento della metodologia che consente di creare più “ambienti virtuali” all’interno di una stessa macchina fisica.
La parola virtualizzazione sta prepotentemente entrando
nel lessico informatico, 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.
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 possono 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. 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.
I compiti del virtualizzatore
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. La stabilità del virtualizzatore
dipende sia dalla qualità con cui è stato scritto sia dalla stabilità
intrinseca della macchina su cui sta operando. 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.
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
macchina 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 non è più necessario: 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.
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.
Riassumendo sono quattro i principali ambiti di elezione per la virtualizzazione
- Aggiornare o aggiungere un sistema operativo senza necessità di dual
boot o di partizionamento del disco - Creare sistemi di testing
- Isolare le applicazioni IT dalle applicazioni utente
- Supportare applicazioni legacy obsolete ma ancora perfettametne funzionanti
e utilizzate
La server consolidation
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.
Un fenomeno in esplosione: le Virtual Appliances
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 virtual appliance più utili,
ricordiamo:
- VA con funzionalità di router/firewall/proxy/mail server/anti spam;
- VA utilizzabili per mettere in piedi in pochi minuti una macchina completa
LAMP (Linux-Apache-MySQL-PHP) per far girare applicazioni server per il Web; - VA destinate agli amministratori di rete, complete di tutti gli strumenti
di analisi del traffico e di intrusion detection; - VA che contengono un ambiente di supporto al lavoro cooperativo;
- VA che implementano un motore di ricerca completamente autonomo da attivare
sulla propria Intranet aziendale; - VA che implementano tutto il necessario per realizzare un chioschetto informativo
multimediale; - VA che implementano completamente in software dei centralini VOIP (VOIP
PBX) già pronti per l’uso e basati su software gratuito.
- Migrare a Vista, ecco i tool di Microsoft per l’azienda
- Sql Server 2005, disponibile l’SP2
- Condividere i progetti di lavoro (gratis)
- Le linee guida per gestire i progetti
- I privilegi d’accesso con Windows XP
- Che cos’è la tecnologia Clear Type?
- PDA e smartphone, come scegliere il giusto modello in azienda?
- Implementare un sistema di transazione elettronica