Infrastruttura tradizionale vs virtualizzazione
Fino a poco più di un decennio fa, chiunque dovesse progettare il centro di elaborazione dati (CED) di un'azienda, di una scuola o di un ospedale si scontrava con una regola rigida e apparentemente inevitabile: un server fisico, un sistema operativo, un'applicazione. Se l'azienda aveva bisogno di un server per la posta elettronica, ne comprava uno. Se serviva un server per il gestionale delle paghe, se ne comprava un altro. Se si voleva un server web per il sito pubblico, se ne comprava un terzo. Questo paradigma, che chiamiamo infrastruttura tradizionale, ha guidato la crescita dell'informatica per anni, ma ha portato con sé problemi logistici ed economici che a un certo punto sono diventati insostenibili.
Il passaggio dalla mentalità del "tutto fisico" a quella del "tutto virtuale" è stato forse il cambiamento più profondo nella storia recente dell'informatica sistemistica. In questa lezione analizzeremo i limiti invalicabili dell'approccio classico e spiegheremo in che modo la virtualizzazione li ha superati, alterando per sempre il modo in cui pensiamo, acquistiamo e gestiamo le risorse di calcolo.
Il problema: lo spreco di risorse nei server fisici
Il difetto più grave dell'infrastruttura tradizionale è l'enorme spreco di potenza di calcolo. Quando si acquista un server fisico per fargli svolgere un singolo compito (ad esempio, gestire la posta elettronica di una scuola), la macchina viene dimensionata per poter reggere i momenti di massimo carico. Tuttavia, per la maggior parte della giornata lavorativa, e ancor di più di notte, quel processore potentissimo resta pressoché inattivo. Le statistiche dei primi anni Duemila mostravano che, in media, i server aziendali utilizzavano appena il 10% o il 15% della loro reale capacità di elaborazione.
Non si poteva però decidere di installare sulla stessa macchina fisica anche il database del gestionale aziendale e il sito web. Far girare più servizi critici sullo stesso sistema operativo tradizionale comportava un rischio inaccettabile: se l'applicazione web andava in blocco o consumava tutta la memoria a causa di un picco di visite, avrebbe fatto crollare anche il database e la posta elettronica. L'isolamento era garantito solo dalla separazione dell'hardware fisico.
Questo spreco si traduceva in costi enormi. Oltre al prezzo d'acquisto dell'hardware, c'era il problema dello spazio: i server fisici (spesso montati in armadi chiamati rack) occupavano intere stanze. C'era poi il costo energetico, perché decine di macchine accese consumano molta corrente e producono moltissimo calore, obbligando all'uso di potenti e costosi impianti di condizionamento. L'infrastruttura tradizionale non era più scalabile.
Che cos'è la virtualizzazione
Per risolvere questa inefficienza, l'industria ha introdotto la virtualizzazione. Al livello più basilare, la virtualizzazione è una tecnologia software che permette di creare più ambienti operativi separati e indipendenti all'interno di un'unica macchina fisica. Invece di avere tre server fisici, si acquista un solo server molto potente e, attraverso uno speciale strato software, lo si "divide" in tre o più macchine virtuali (VM, Virtual Machine).
Una macchina virtuale è, dal punto di vista dell'utente e delle applicazioni che vi girano, un computer vero e proprio. Ha il suo processore, la sua memoria RAM, il suo disco rigido e la sua scheda di rete. Può essere accesa, spenta e riavviata in modo indipendente. La grande differenza è che questo hardware non è fatto di chip e circuiti dedicati, ma è simulato dal software. Il sistema operativo installato all'interno della macchina virtuale (chiamato sistema operativo guest) non sa di essere virtuale: crede di avere accesso esclusivo a un server fisico tutto suo.
Regola fondamentale: L'infrastruttura tradizionale lega indissolubilmente il software (il sistema operativo) alla macchina fisica sottostante. La virtualizzazione spezza questo legame, astraendo l'hardware e presentandolo sotto forma di risorse logiche distribuibili a piacimento.
La differenza fondamentale: separare il software dall'hardware
Il vero salto di qualità non è solo far girare più cose insieme, ma l'indipendenza dall'hardware fisico. Nell'infrastruttura tradizionale, il sistema operativo è intimamente legato ai componenti fisici. Se la scheda madre di un vecchio server si rompe irreparabilmente, non si può semplicemente prendere il suo disco fisso, infilarlo in un server moderno e sperare che funzioni: i driver, le architetture e i componenti sono diversi, e il sistema operativo andrebbe in errore (la classica schermata blu o kernel panic).
In un ambiente virtualizzato, la macchina virtuale non è altro che un insieme di file (uno che contiene la configurazione e uno o più file enormi che rappresentano il disco rigido virtuale). Il sistema operativo guest dialoga con un hardware standardizzato e astratto fornito dal software di virtualizzazione. Questo significa che se il server fisico su cui sta girando la macchina virtuale prende fuoco, basta copiare i file di quella VM su un altro server fisico (anche di marca o generazione completamente diversa) e accenderla. Riprenderà a funzionare esattamente da dove si era fermata, senza accorgersi di aver "traslocato".
Un laboratorio scolastico aveva un server fisico vecchio di dieci anni con Windows Server 2003, non più sostituibile perché un vecchio software ministeriale funzionava solo in quell'ambiente. Quando la ventola della scheda madre si è rotta, il tecnico ha trasformato l'intero server in una macchina virtuale (operazione chiamata P2V, [tooltip]Physical to Virtual: processo di migrazione di un OS da una macchina fisica a una VM[/tooltip]). Ora quel vecchio sistema operativo gira felice e isolato come file all'interno di un server moderno, credendo di operare ancora sul suo hardware del 2003.
Il consolidamento dei server
Il primo uso della virtualizzazione è stato quindi il consolidamento. Consolidare significa prendere i carichi di lavoro di dieci server fisici vecchi, deboli e sottoutilizzati, e spostarli sotto forma di dieci macchine virtuali all'interno di due soli server fisici moderni e potenti. I vecchi server vengono poi spenti, rottamati e rimossi fisicamente.
Il risultato è drastico: la stanza dei server si svuota. Il consumo di energia elettrica e le spese per il raffreddamento crollano verticalmente. E soprattutto, si sfrutta finalmente la potenza di calcolo: il server fisico che ospita le macchine virtuali ora lavora all'80% della sua capacità, rendendo sensato l'investimento fatto per acquistarlo. Ogni VM riceve esattamente la quantità di CPU e RAM di cui ha bisogno e, poiché i picchi di lavoro delle varie macchine virtuali raramente avvengono nello stesso identico momento (il gestionale lavora di giorno, i backup notturni di notte), le risorse fisiche vengono condivise in modo fluido e intelligente.
Un'azienda compra un server con 64 GB di RAM. Se lo usasse in modo tradizionale per il solo server web pubblico, probabilmente ne sprecherebbe 60. Virtualizzando, l'amministratore assegna 8 GB alla VM del web server, 32 GB alla VM del database e 16 GB alla VM del server di posta, tenendo gli ultimi 8 GB per il sistema sottostante. Tutto l'hardware pagato a caro prezzo viene messo a frutto, massimizzando il ritorno sull'investimento (ROI).
Errori comuni e limiti
Il primo errore che spesso si commette studiando questo argomento è credere che la virtualizzazione rallenti enormemente i computer. È un retaggio dell'epoca degli emulatori di vecchie console da gioco. Un emulatore deve tradurre a fatica ogni singola istruzione software per un processore fisicamente diverso. La virtualizzazione moderna in ambito server, come vedremo nelle prossime lezioni, usa tecnologie in cui le istruzioni vengono eseguite in massima parte in modo diretto dal processore fisico a velocità quasi pari a quella nativa.
Il secondo errore riguarda la percezione della sicurezza e dell'isolamento. Uno studente potrebbe pensare che, trovandosi fisicamente sullo stesso disco rigido e sulla stessa RAM, un virus ransomware che colpisce la VM del server di posta possa facilmente infettare la VM del gestionale. Non è così: l'isolamento fornito dallo strato di virtualizzazione è profondissimo. Per una VM, ciò che sta fuori dai suoi confini logici semplicemente non esiste, proprio come se le altre VM fossero computer separati da chilometri di distanza.
C'è però un limite strutturale critico da considerare sempre. Se è vero che consolidando dieci server fisici in uno solo si risparmia moltissimo, è altrettanto vero che si crea un enorme punto singolo di fallimento (Single Point of Failure). Nell'infrastruttura tradizionale, se si rompeva l'alimentatore del server web, andava giù solo il sito, ma la posta e il gestionale continuavano a funzionare serenamente sui propri hardware. Se si guasta irreparabilmente l'unico potente server fisico che ospita tutte e dieci le VM, l'intera azienda si ferma in un istante. Affronteremo questo scoglio in futuro parlando di Alta Affidabilità (HA).
Sintesi applicativa
In sintesi, l'infrastruttura tradizionale si basa sulla regola inflessibile "un server fisico uguale un solo servizio", generando inevitabilmente spreco di risorse, ingombro fisico e dipendenza totale dai singoli componenti hardware. La virtualizzazione introduce un geniale livello di astrazione che trasforma i server in semplici file, permettendo di ospitare dozzine di ambienti operativi isolati su una singola macchina potente. Questo approccio ha permesso il consolidamento logistico dei CED e ha posto le solide basi tecniche per quello che oggi chiamiamo Cloud Computing. Nelle prossime lezioni esploreremo nel dettaglio cosa gestisce materialmente questa tecnologia e come la virtualizzazione si sia estesa ben oltre l'ambito dei soli server.
Domanda di autoverifica: Un'azienda possiede quattro vecchi server fisici. Decide di virtualizzarli trasformandoli in 4 VM e mettendoli tutti insieme su un server fisico nuovo di zecca. Il risparmio sulla bolletta elettrica è garantito, ma quale nuovo rischio operativo si è appena assunta l'azienda senza saperlo? E come potrebbe la natura "a file" delle macchine virtuali aiutare a ripristinare i servizi rapidamente in caso di grave disastro hardware?