Virtualizzazione

Quello della virtualizzazione è un argomento molto complesso, spesso trattato sui libri di testo in modo dispersivo. Con questo breve articolo vogliamo dare un contributo di sintesi su alcuni elementi significativi da ricordare per gli alunni delle classi terminali che affrontano l’esame di stato.

Cos’è

Partiamo da una definizione semplice. La virtualizzazione è una tecnologia software che permette di condividere risorse hardware eseguendo simultaneamente più sistemi operativi e/o applicazioni. Cerchiamo di vedere come questa definizione trova applicazione.

Da sempre siamo abituati a conoscere ed utilizzare i nostri dispositivi attraverso un sistema operativo che fa da cuscinetto per noi ed i nostri software con l’hardware che c’è sotto. Abbiamo già detto che, senza sistema operativo, sarebbe quasi impossibile usare un pc o smartphone e lo stesso sviluppo di applicazioni software di utilità sarebbe complesso per uno sviluppatore. Il sistema operativo gestisce e ci fornisce interfaccia con tutte le risorse hardware, sfruttandone le potenzialità e le prestazioni al 100%: se stiamo usando un videogioco, sappiamo che tale sw e il sistema operativo metteranno a dura prova le risorse di calcolo della scheda video e della ram, così come se sto guardando un film in streaming so che la mia scheda di rete (nic) sta comunicando col modem di casa il più velocemente possibile. Inoltre non è un mistero se scriviamo che il pc di casa lo usa un utente alla volta, così come il nostro telefono cellulare, ma è anche un po’ intuitivo visto che di tastiera e mouse o touchscreen non ce ne sono collegati due o tre!

Fig. 1 – Architettura hw/sw standard e virtualizzata

La tecnica della virtualizzazione prevede una sorta di suddivisione a comparti stagni delle risorse hw/sw di un calcolatore. In questi piccoli comparti l’hw compare come una piccola parte di quello fisico ma non necessariamente con le stesse specifiche tecniche. Se ad esempio sul pc fisico abbiamo un processore Xeon di ultima generazione con clock a 3 Ghz e 32 GigaByte di ram, l’hardware virtuale potrebbe essere spezzettato con una fittizia cpu Intel a 2 Ghz e una AMD ad 1 Ghz e rispettivamente 3GB e 16 GB di Ram. Sopra questo hardware, grazie alla supervisione dello strato Hypervisor, possono essere installati sistemi operativi differenti con i rispettivi driver e applicativi. I benefici sono già intuibili al lettore attento: si risparmia nell’acquisto di tanto hardware sfruttando a pieno quello che esiste; si risparmia manutenzione hw/sw, energia e spazio fisico nelle sale server; è possibile creare ambienti di lavoro differenti per le esigenze specifiche più disparate. Pensate ad un macchinario vecchiotto di una azienda che ha il su software di controllo specifico che però gira solo su windows xp, l’azienda che usa invece windows 10 aggiornato per motivi di sicurezza e produttività sarebbe costretta ad avere un pc separato, mente con la virtualizzazione i due windows 10 e xp potrebbero essere utilizzati separatamente ottimizzando l’uso dell’hardware. Oppure pensate come un programmatore debba gestire versioni diverse di Visual Studio con le rispettive dipendenza .NET, oppure versioni di Python incompatibili come la 3.8 e 2.7, oppure ancora gestire un ambiente per gli sviluppi ed uno per la produzione con sw che non possono essere in pericolo per qualche sw utente che si blocca e costringe al riavvio: con la virtualizzazione potrebbero essere ambienti virtualizzati sulla stessa macchina e selezionati a comando senza doversi spostare tra pc differenti o stanze differenti! Per un utente mainstream, la virtualizzazione potrebbe essere un’ottima risorsa per avere sullo stesso pc il s.o. Linux per navigare in sicurezza e Windows per i videogame e simili.

TODO: virtualizzazione e videogiochi col modello Google Stadia

Modelli di virtualizzazione

Esempi di virtualizzazione esistono e sono evidenti: basta fare un giro tra i fornitori di web hosting che vendono o il semplice spazio per il tuo sito web ma con pochi spazi di personalizzazione e di manovra, oppure ti affittano una vera e propria macchina virtuale dove puoi installare quello vuoi, il server web o servizio web a piacimento e configurarlo gestendo ogni aspetto di sicurezza, backup, manutenzione da te con la flessibilità più assoluta. Ovviamente i costi sono differenti: un web host costa 30 eur annui, un virtual host 30 eur al mese… o simili ordini di grandezza, a seconda delle necessità hw da virtualizzare. Ma a far da padroni nell’ambito della virtualizzazione sono altri colossi come Amazon AWS e Azure di Microsoft. Qui però il paradigma di virtualizzazione è leggermente diverso. Se nella fig.1 abbiamo 1 hardware verso molti utenti/ambienti virtuali, possiamo avere anche altri modelli come molti hardware verso un unico hardware virtuale risultante, in sostanza, la somma delle risorse fisiche di tutti gli altri e il mix dei due modelli con molti hw fisici verso molti ambienti virtuali.

Fig. 2 – Un esempio di virtualizzazione molti-a-molti

Quest’ultimo modello ha decretato il successo e sta giocando un ruolo fondamentale nei servizi web del Cloud. Le aziende piccole possono rinunciare ad avere una propria infrastruttura di rete con tutti i costi di gestione, del personale e di manutenzione, di sicurezza, affittando a tempo o con piani personalizzati delle macchine virtuali che ospitino i software necessari all’azienda, con la garanzia a basso prezzo di avere continuità del servizio e disaster recovery senza troppo sforzo, sicurezza ed isolamento dei dati personali. Con una manciata di click, molti fornitori aumentano le performance dell’hw virtuale su richiesta delle aziende che ottengono un sistema scalabile a comando. Unico vincolo per l’azienda è avere una buona connessione a banda larga/ultralarga per accedere dai propri uffici ai datacenter in affitto, problema piuttosto ostico in Italia e che sta, di fatto, rallentando l’espansione del cloud.

L’hw virtualizzato ha molti aspetti interessanti ma uno forse è quello più alla portata degli utenti normali: i dischi online dei servizi quali DropBox o GDrive. Sfruttano modalità simili di virtualizzazione per cui in modo del tutto trasparente all’utente, risulta uno spazio di archiviazione più o meno grande, spesso anche illimitato. Un esempio in piccolo di questa virtualizzazione di spazio dati è il NAS, Networck Attached Storage, che altro non è che uno scatolotto in cui inserire più hard disk che, grazie ad un sistema di virtualizzazione, risultano all’utente che si collega via usb o rete, come un unico hd somma di tutti quelli collegati.

La virtualizzazione “in casa”

Software di virtualizzazione diffusi sono VirtualBox (gratuito), VMware vSphere, Citrix XenServer, Microsoft Hyper-V e QEmu (specifico per Android), Parallels. 

Sulle prestazioni della virtualizzazione, il lettore avrà già dei dubbi. Lo strato hypervisor è efficiente come un s.o. diretto? Una latenza è ovvio che ci sia, ma è un piccolo costo da pagare sostanzialmente trascurabile per la potenza dell’hw fisico di solito messa in campo. Non è il caso delle applicazioni aziendali, ma la macchina virtuale può essere installata anche sui nostri pc, dentro/sopra il s.o. già installato. Questo permette di avviare un sistema operativo in un altro sistema operativo, per applicazioni molto particolari. E’ chiaro che in questo caso la latenza aggiunta da s.o. ospite-> hypervisor-> s.o. residente -> hw è maggiore e potrebbe rendere l’uso poco agevole rispetto alle solite prestazioni attese.

Fig. 3 – Un esempio di virtualizzazione interna ad un s.o. in uso

Load Balance

Altro elemento interessante della virtualizzazione e quello della virtualizzazione di rete, dove più macchine fisiche o virtuali dialogano tra di loro per scambiare o sincronizzare dati, suddividere carichi di lavoro e connessioni di utenti ed applicativi. E’ il classico esempio di quando facciamo un a ricerca su Google o ci colleghiamo a Facebook,. Non possiamo certamente immaginare che colossi di tele portata forniscano i propri servizi con un server solo, per quanto questo possa essere potente, non potrebbe gestire tutto il carico delle richieste. Ecco perché servizi di questa portata si affidano ad un nodo che “smista” le richieste in arrivo su più server (o come detto anche precedentemente su più server virtuali somma di più fisici) che forniscono lo stesso servizio con gli stessi dati e risposte. Questo permette di avere una suddivisione logica del carico di lavoro ma non solo, anche di avere una continuità del servizio con gli altri nodi pronti a rispondere se malauguratamente uno dovesse avere una avaria o addirittura suddividere il traffico in base a determinati parametri del richiedente (ad es. uno smartphone magari vede dei servizi diversi da un pc fisso, oppure alcuni utenti potrebbero accede a versioni di software con funzioni di test o differenti in base al proprio account). Un classico server che si occupa dello smistamento il Linux Virtual Server. Ovviamente l’architettura richiede che i server abbiano dati consistenti tra di loro, in modo da fornire sempre la stessa risposta. Occorrono quindi delle politiche che permettono di effettuare il mirroring o totale o parziale delle informazioni come con tecnologie di RAID in locale, che in rete tra nodi distanti.

Fig 4 – Servizi di rete virtuali

 

Modelli Cloud

TODO

IaaS, è il modello dei servizi di web hosting. Affitto una porzione di hardware, nello specifico uno spazio web con un semplice software condiviso, risorse condivise.

Il sistema Paas mette a disposizione non solo spazio fisico ma anche un software per la gegstione in cui mettere mano. E’ il classico modello con un DBMS come MySQL o le nuove piattaforme di sviluppo online in cui più sviluppatori non hanno più un IDE sul loro pc ma online, dove condividono e vedono, modificano il codice di tutto il loro team. Replit.com, Online-IDE, lo stesso GitHub ed altri sistemi gratuiti o a pagamento a livello incrementale sono ottimi esempi di piattaforme.

Il terzo modello Software as a Service è tipo Google Workspace

Ultima modifica 17 Maggio 2023