Capitolo 1 Uno Studio Sui Sistemi Di Virtualizzazione Virtualizzazione
Roberto Amendola
6
Capitolo 1
La Virtualizzazione
Il computer non è una macchina
intelligente che aiuta le persone stupide,
anzi è una macchina stupida che funziona
solo nelle mani delle persone intelligenti.
Umberto Eco
1.1 Introduzione
a prima legge di Moore afferma:
“Le prestazioni dei processori, e il numero di transistor ad esso relativo,
raddoppiano ogni 18 mesi”.. [1]
L’ enunciato risale al 1965 ed è attribuito a Gordon Moore, cofondatore di Intel e pioniere
dell'informatica. Con il passare del tempo le prestazioni dei computer e le loro capacità sono
aumentate in modo esponenziale, spesso in modo eccessivo rispetto ai compiti richiesti.
Perché entrare in possesso di questa potenza di calcolo e non sfruttarla?
Perché accontentarsi dei risultato ottenuti se, a costi più bassi, si può avere di più?
L’obiettivo dell’ ingegnere è risolvere questi problemi nel rispetto dei vincoli e
nell'osservanza della convenienza economica, quindi con precisione sufficiente a produrre
dell’utile.
Un software perfetto installato su una macchina perfetta ma onerosa non giova ad alcuno,
non ha mercato, non produce ricchezza, non migliora la vita.
Come investire in un progetto costoso e renderlo produttivo? È questo che gli ingegneri del
IBM si saranno chiesti.
L’esigenza di poter sfruttare una macchina con grande potenza di calcolo è un concetto nato
già nel 1967, con l’ implementazione del CP/CMS
1
( progetto basato sul precedente CP-40 )
su IBM System 360/67( mainframe ) [2]. CP e CMS erano due Sistemi Operativi indipendenti
implementati entrambi sul mainframe, con l’obiettivo di fornire ad ogni singolo utente un
ambiente “analogo” ad un mainframe personale :
1
era un sistema operativo noto per le sue eccellenti prestazioni e funzionalità avanzate
L
Capitolo 1 Uno Studio Sui Sistemi Di Virtualizzazione Virtualizzazione
Roberto Amendola
7
CP ( Control Program ) era il Sistema Operativo principale per la gestione ed esecuzione di
tante istanze software del Sistema Operativo stesso( ovvero macchine virtuali ). Esso era
basato su memoria virtuale e time sharing.
CMS ( Conversational Monitor System ) è un piccolo Sistema Operativo a singolo utente che
veniva replicato più volte e ogni singola istanza era gestita ed eseguita in un ambiente CP.
Figura 1: Architettura CP/CMS su IBM System 360/67.
La parola virtuale è quindi presente nel vocabolario informatico dagli anni 60. Ma cosa vuol
dire realmente virtualizzare qualcosa? Nell’ambito puramente informatico il termine virtuale
sta ad indicare:
“la creazione di una versione astratta di una risorsa normalmente fornita fisicamente”. [3]
1.2 Virtualizzazione
La virtualizzazione è un concetto che porta a pensare a qualcosa che esiste potenzialmente
ma non si è ancora concretizzato. In pratica definisce un livello di astrazione software che si
va a sovrapporre all’hardware fisico di un elaboratore reale.
Essa venne implementata per la prima volta oltre 40 anni fa come metodo per partizionare
logicamente i mainframe in macchine virtuali indipendenti tra loro. È grazie a questo
approccio che erano in grado di eseguire operazioni in multitasking ( combinato al concetto
di time-sharing ), ossia eseguire più applicazioni e processi simultaneamente. Poiché i
mainframe all'epoca erano risorse costose, il loro partizionamento rappresentava un modo per
Capitolo 1 Uno Studio Sui Sistemi Di Virtualizzazione Virtualizzazione
Roberto Amendola
8
valorizzare appieno l'investimento di una azienda. Il primo hardward ad essere virtualizzato
per via software è stata la memoria primaria, o meglio conosciuta Ram. L’ approccio dei
nuovi mainframe dava la possibilità di eseguire più processi simultaneamente. Ma il termine
simultaneamente non è davvero appropriato al contesto. In realtà, il processore può eseguire
un solo compito alla volta e la tecnica del multitasking permette alla CPU di commutare tra i
vari compiti che sono in esecuzione, context switch
2
, senza dover aspettare che ognuno
finisca. Questa politica di scelta di quando, perché e come interrompere un processo è
demandato a una componente del Sistema Operativo, lo scheduler (a sua volta di lungo,
medio, breve termine). Il tempo utile di calcolo della CPU viene suddiviso in piccole parti
uguali( quanti di tempo ) e ogni processo utilizza una sola parte per volta, avendo
l’impressione di utilizzare la CPU tutta per se. Questa tipologia di multitasking è detta time-
sharing. L’ aumento dei processi e la limitatezza della memoria primaria fisica( per il suo
elevato costo ai tempi) spinse alla necessità di avere più spazio per contenere
contemporaneamente più aree di memoria dei diversi processi. Nasce il concetto di memoria
virtuale.
1.3 Memoria Virtuale e Cenni a Sistemi Operativi
E’ una architettura di sistema capace di simulare uno spazio di memoria primaria maggiore
di quello fisicamente presente o disponibile; questo risultato si raggiunge utilizzando spazio di
memoria secondaria su altri dispositivi fisici, le unità a disco( hard disk ).
Figura 2: Esempio di memoria primaria ( Ram ) e di memoria secondaria ( HardDisk ).
2
è un particolare “stato” durante il quale avviene il cambiamento del processo correntemente in esecuzione su
una delle CPU a favore di un altro, scelto tramite le politiche di schedulino.
Capitolo 1 Uno Studio Sui Sistemi Di Virtualizzazione Virtualizzazione
Roberto Amendola
9
La memoria primaria fisicamente presente è la parte effettivamente utilizzata, solitamente più
piccola di quella virtuale, che è solo di supporto anche se più grande.
Perché, se la memoria primaria fisica è limitata e costosa, non utilizziamo solo
memoria virtuale che è più grande e economica?
La risposta è che la memoria primaria è costosa perché è estremamente veloce in
confronto a quella secondaria, di circa tre ordini di grandezza.
Ma se esiste tutta questa differenza, perché è utile allora implementare la memoria
virtuale?
Tutto questo stratagemma è utile ed efficiente in virtù del principio di località: [4]
se la CPU sta eseguendo una data istruzione, vuol dire che con molta probabilità le prossime
istruzioni da eseguire saranno ubicate nelle vicinanze di quella in corso; vale a dire che,
durante la normale esecuzione dei programmi, la CPU passa molto tempo accedendo a zone
di memoria vicine e solo occasionalmente accede a locazioni molto lontane dalla corrente.
La memoria virtuale per implementare al meglio questa politica utilizza un meccanismo di
paginazione della memoria: non viene copiata l’ intera memoria su disco, ma solo porzioni
dette pagine. Esistono algoritmi di scheduling
3
e stratagemmi hardward ( MMU o memory
management unit ) per implementare al meglio questa metodologia. Attualmente, in
ambiente Unix, la memoria virtuale poggia su una partizione, formattata con un file system
apposito per essere il più efficiente possibile. La memoria utilizzata a questo scopo è detta
swap o spazio di swap ("scambiare"), mentre, in ambiente Windows, non esiste il concetto di
memoria partizionata appositamente, ma viene usato un file di sistema detto file di paging
(Pagefile.sys ). Le operazioni di spostamento delle pagine dallo spazio di swap(Unix o
Windows) alla memoria fisica sono chiamate swapping. Il vantaggio del primo approccio sul
secondo è chiaro: maggiore efficienza nell’utilizzo dello spazio perchè partizionato con un
filesystem apposito. Lo svantaggio è meno evidente( secondario ad atto pratico ): mentre in
Unix, la dimensione della partizione di swap è decisa al momento dell’ installazione del SO e
quindi non più modificabile, in Windows la bassa efficienza viene colmata “in parte” dalla
possibilità di aumentare o diminuire lo spazio in base alle necessità di sistema. In generale
l’approccio della memoria virtuale è utilizzato in tutti i sistemi odierni per la sua effettiva
utilità. Anche se oggi, virtualizzare si rivela un approccio vincente, c’è da dire che era stato
abbandonato dopo gli anni 70 perché i computer erano diventati più comuni(inizio della
nascita dei Personal Computer e conseguente abbattimento dei costi ) e quindi economici. I
3
Ad esempio: LRU (Least Recently Used), algoritmo della seconda scelta, FIFO, etc.
Capitolo 1 Uno Studio Sui Sistemi Di Virtualizzazione Virtualizzazione
Roberto Amendola
10
principali motivi che spingevano la virtualizzazione erano venuti a mancare e si diffuse la
filosofia del one application, one server. Questa condizione, con la crescita esponenziale dell’
utilizzo del mondo di Internet, implicò l’incremento dei server( aumenta il bisogno di spazio )
per soddisfare tutte le richieste( aumento di gestione e manutenzione quindi costi) dei client.
1.4 I Contro Del “One Application, One Server”
Ormai sembra chiaro che l’aumento di hardward non è proprio la soluzione migliore. Infatti
negli anni 90 il proliferare incontrollato dei server, fece rapidamente lievitare i costi delle
infrastrutture e della loro gestione. L’aggiunta di un servizio o di un’applicazione comportava
l’installazione di un altro server. Si era calcolato che i server in molte aziende funzionavano
normalmente al 15-20% della loro capacità (un unico servizio impiegava una minima
percentuale del tempo di CPU e solo una frazione della banda di I/O a disposizione).
Figura 3: Un Server di Google, composto da Blade-Server.
In seguito, venne adottata una strategia che fu destinata ha rivoluzionare tutti i sistemi
informativi di una certa dimensione: The Server Consolidation. Consiste nell’ uso più
efficiente delle risorse hardward, nell’ottica della riduzione del numero totale di server
necessari ad una azienda.