La virtualizzazione è una tecnologia che permette l’astrazione delle risorse fisiche (hardware) commutandole in risorse virtuali allocabili e quindi l’utilizzo contemporaneo di sistemi operativi anche differenti.
La macchina fisica ospitante è chiamata “host” e le sue risorse possono essere suddivise in diverse macchine ospiti (guest) che possono, ove vi siano i presupposti, anche lavorare contemporaneamente.
Il principale limite sta quindi nelle risorse disponibili per virtualizzare (ad esempio le CPU, la RAM, lo spazio sul disco , ecc).
Ogni host rende disponibile le proprie risorse fisiche come risorse virtuali; quando si va a configurare una macchina virtuale l’operatore va quindi ad assegnare una parte di queste risorse alla macchina guest. Le risorse complessive disponibili della macchina host vanno quindi a diminuire progressivamente con l’aumentare delle assegnazioni di queste alle macchine guest. Con alcune soluzioni software è possibile modificare l’assegnazione di queste risorse successivamente alla creazione della macchina guest, qui abbiamo poi le versioni più evolute che permettono tale modifica “a caldo” ovvero fin che la macchina è in esecuzione oppure altre che necessitano che la macchina virtuale venga spenta per poter modificare le risorse ad esse allocate.
Spieghiamo con un esempio:
Abbiamo un server con due processori a 4 core fisici e 8 core virtuali, 32GB di RAM e 1TB di spazio su disco.
Su questo server virtualizziamo un Windows server 2016, quindi gli associamo 4 core virtuali, 16 GB di RAM e 512 GB di disco.
Successivamente creiamo una macchina con Windows 10 pro, con 2 core virtuali, 4 GB di RAM e 128 GB di disco.
Noi avremo quindi un server virtuale con Windows server 2016 con 4 vcpu (virtual cpu), 16 GB RAM e 512 GB di hard disk virtuale, un’altra macchina con windows 10 pro con 2vcore, 4GB di RAM e 128 GB di hard disk virtuale.
Restano disponibili ancora delle risorse nella macchina host, noi possiamo associare queste risorse in un secondo momento ad un’altra macchina o potenziare una esistente ove ne sia l’esigenza.
L’esempio sopra era con una macchina relativamente modesta, ma possiamo trovare server equipaggiati con hardware ben superiore e non necessariamente sito in un unico host.
Ad esempio possiamo avere due macchine host con due processori Xeon cadauna aventi 20 core logici ognuno, questo ci dà ben 80 core logici (40 per host) che possiamo associare alle macchine virtuali che andiamo ad implementare; mettiamo poi che ogni host abbia 64GB di RAM e che abbiamo condiviso una SAN con uno spazio complessivo di 10TB.
Con una soluzione come quella sopra avremo più possibilità rispetto alla prima macchina, si potrebbe infatti bilanciare il carico di lavoro tra i due host facendo sì che se fisicamente uno dei due si rompe automaticamente tutte le macchine virtuali vengono spostate sull’altro host evitando di fatto il blocco dell’attività lavorativa. Per far questo è però importante calcolare bene le risorse utilizzate, infatti la somma delle risorse impegnate dei due host non deve superare il totale di quelle disponibili da un singolo host.
Ciò detto si potrebbero però implementare , ad esempio:
– nr 1 server Windows 2016 con 4vcpu, 16 GB RAM, 5TB disco virtuale (chiamiamo questa macchina “ServerDNS” )
– nr 1 server Windows 2016 con 12vcpu, 32GB RAM, 4TB disco virtuale ( chiamiamo questa macchina “ServerRDP” ).
Ed ecco che possiamo usare la macchina “ServerRDP” per far lavorare diversi utenti che prima lavoravano sul loro pc fisso Windows. Il pc fisso quindi viene sostituito da un thin client il cui costo può essere più contenuto.
I vantaggi di questa soluzione sono:
– riduzione di costi nella sostituzione dei pc fissi degli operatori
– riduzione dei costi nella manutenzione dei pc
Ma questi sono solo alcuni esempi astratti ed i concetti espressi andrebbero spiegati ed approfonditi più nel dettaglio, si deve infatti sempre tener conto delle licenze dei sistemi operativi e delle applicazioni, oltre a molti altri fattori che non ho esposto ma che possono essere spiegati meglio in altra sede.
Oltre a permetterci di ottimizzare in un modo migliore le nostre risorse hardware e di far eseguire più sistemi operativi indipendenti e diversi nella stessa macchina fisica vi sono altri vantaggi interessanti.
Con opportune soluzioni studiate ad hoc si possono creare macchine virtuali e fare il backup frequente,indipendente e completo di queste in modo che se qualcosa andasse a compromettere una o più macchine avremmo la possibilità di ripristinarle garantendo la continuità del nostro business.
Un altro vantaggio della virtualizzazione è che, come ho già accennato, le macchine virtuali possono essere distribuite su più host, quindi, con opportune soluzioni software, configurazioni e hardware possiamo potenzialmente spostare interi server senza dover necessariamente reinstallare e riconfigurare tutto riducendo, (ed alcuni casi azzerando), i tempi di fermo macchina e/o l’interruzione dell’attività per manutenzioni, migrazioni ecc..
Ovviamente tutto quello finora esposto è solo una generalizzazione il cui approfondimento e maggior chiarificazione piò avvenire solo con una consulenza specifica in cui si va ad analizzare le esigenze del cliente e quindi a creare soluzioni ad hoc esponendo di pro ed i contro.
Questi sono solo alcuni aspetti della virtualizzazione, c’è ancora molto da dire e da spiegare e molto cambia in base al contesto in cui la si vuole attuare motivo per cui, se l’argomento vi interessa, vi consiglio di fissare una consulenza in cui si va a spiegare meglio ogni singolo aspetto e come questo può essere applicato alla vostra realtà.