Il concetto di resilienza dei sistemi, ovvero la loro capacità di rimanere operativi anche a fronte di problematiche soggiunte, è da sempre fondamentale sul versante dell’operatività di qualunque azienda; tanto più oggi, in un mondo connesso, in cui i tempi di fermo della infrastruttura informatica aziendale hanno ripercussioni, non solo spesso gravi, ma anche immediate e visibili.
Il concetto è ovviamente connesso con quello della disponibilità dei dati, importante anche alla luce dei dettami del GDPR.
Vediamo un approccio a queste tematiche utilizzando la tecnologia delle macchine virtuali.
Indice degli argomenti
Resilienza dei sistemi e disaster recovery
Che si tratti di un PC o di un server, l’insorgere di un danno serio può creare conseguenze davvero sgradite, in base alla presenza o meno di un piano proattivo di disaster recovery.
La prima cosa a cui si pensa in questi casi è la salvaguardia dei dati, unica cosa realmente non recuperabile se le cose vanno male.
Sulle strategie da intraprendere per quanto riguarda il backup dei dati è stato detto molto, forse meno sui tempi necessari per ripristinare invece il sistema danneggiato.
Per “ripristinare” intendo riportarlo nello stato operativo in cui si trovava, incluse tutte le impostazioni e le funzionalità che erano presenti prima del guasto; che poi si tratti di un danno hardware come la rottura di una scheda madre, software, causato da un virus, da un attacco hacker o da altri fattori intervenienti, in questo frangente non importa.
Certo, un modo sperimentato è quello di avere una immagine di backup dei dischi, una volta si chiamava il “ghost”. In questo modo, ancora oggi è ben possibile ripristinare lo status ante in maniera funzionale; pensate però alla rottura di un controller raid per i dischi o, come nell’esempio di cui sopra, di una scheda madre: in molti casi, se non si dispone di un ricambio identico, il ripristino con questa modalità non riesce o semplicemente può non essere possibile.
Macchine virtuali e astrazione dall’hardware
Una delle caratteristiche delle macchine virtuali è quella di utilizzare dell’hardware appunto “virtuale”, che viene simulato via software assieme a tutte le caratteristiche necessarie a far funzionare il sistema operativo guest.
Ciò significa, sostanzialmente, che se prendo una macchina virtuale (o una sua copia) e la metto in funzione su di un sistema (fisico) totalmente diverso dal precedente, la macchina virtuale funzionerà senza notare alcun cambiamento.
Certamente ci sono differenze tra i sistemi che permettono di implementare delle macchine virtuali, siano essi commerciali o open source, ma in ultima analisi anche la conversione del formato di un disco virtuale da un sistema di virtualizzazione ad un altro spesso è possibile.
Quindi, installare un server in una macchina virtuale ci permette, una volta impostato, personalizzato e reso pronto ad entrare in produzione, di farne una copia che, all’occorrenza, può essere resa funzionale in pochi minuti su qualunque altro hardware fisico di caratteristiche e potenza adeguati.
Naturalmente, la copia di una macchina virtuale si può eseguire anche ad intervalli regolari di tempo, avendo così anche una base dei dati contenuti, a cui andrà aggiunto, per così dire, in caso di ripristino di un sistema danneggiato il backup aggiornato delle informazioni contenute.
Per avere una copia completa di una macchina virtuale, ovvero delle sue impostazioni (leggi quantità di RAM, tipologia e quantità di dischi ecc.) e degli hard disk virtuali, la macchina andrebbe fermata, spenta, a meno di non usare la tecnica della produzione di immagini istantanee chiamate screenshot del sistema.
Vantaggi delle macchine virtuali: la scalabilità
Altro vantaggio non da poco dell’utilizzo delle macchine virtuali è la loro scalabilità: è cioè possibile variare le caratteristiche hardware del sistema simulato in caso di necessità di maggior potenza o spazio. Si può ad esempio aggiungere una scheda di rete, un hard disk aggiuntivo o aumentare la quantità di RAM disponibile, con pochi click del mouse.
Sulle moderne CPU multicore, si andranno ad assegnare N core ad ogni macchina, ad esempio potrei assegnare un numero di core superiore alla macchina virtuale server e inferiore alle macchine client o desktop.
Per quanto concerne le memorie di massa, normalmente si può optare per impostare dei dischi la cui dimensione cresca con la richiesta di spazio in modo automatico, ovvero potrei avere un hard disk virtuale di un terabyte (virtuale), che essendo occupato per 300 GB occupi nel disco fisico solamente i 300 GB utilizzati, per poi aumentare lo spazio realmente utilizzato automaticamente.
È possibile invece definire dei dischi virtuali la cui dimensione reale sia quella stabilita anche se non utilizzata, in questo caso un disco da 1 TB vuoto occuperà 1 TB reale sulla macchina fisica.
Quest’ultimo approccio si utilizza soprattutto per massimizzare le prestazioni del disco virtuale, essendo un poco superiori rispetto all’opzione precedente.
Vantaggi delle macchine virtuali: tempistiche di ripristino
Utilizzando un approccio basato sulle macchine virtuali, i tempi di ripristino di un sistema fermo, nella mia esperienza, si riducono di diversi ordini di grandezza, a condizione che il tutto sia stato previsto e predisposto.
Una macchina virtuale è di fatto un grosso file, il tempo per ripristinarla si riduce ai tempi di copia della macchina virtuale su un altro sistema, anche diverso, purché idoneo, e al tempo di copia dei dati di backup aggiornati sulla macchina ripristinata.
Centralizzazione e non-obsolescenza dei PC aziendali
Una soluzione che ho utilizzato più volte è stata quella di installare il numero richiesto di macchine virtuali con sistemi desktop in un server centrale, utilizzando le macchine fisiche preesistenti come “terminali” di accesso alle macchine virtuali via RDP in desktop remoto.
Questa modalità ha diversi vantaggi per un’azienda, uno dei quali è quello di eliminare di fatto la necessità di fronteggiare l’obsolescenza dei PC aziendali.
Questi ultimi, infatti, vengono utilizzati solo come strumento di accesso alle macchine desktop virtuali che, sfruttando la potenza a loro assegnata sulla macchina server, avranno le prestazioni a loro richieste, al passo con i tempi, sia per quanto riguarda il sistema operativo utilizzato che per le caratteristiche di sicurezza.
La modernità o la potenza delle macchine utilizzate come client per l’accesso remoto è ininfluente, tanto che è possibile utilizzare, volendo, dei single board computer, come ad esempio un Raspberry Pi o simili, con piena soddisfazione e minima occupazione di spazio, per non parlare dell’irrisorio consumo energetico di queste board.
Avere tutte le macchine virtuali centralizzate su un server adeguato permette, ad esempio, di effettuarne il backup con una modalità univoca, semplice e veloce, e di poter intervenire sulle varie macchine virtuali per qualsivoglia necessità direttamente dall’interfaccia del software di virtualizzazione sulla macchina server (fisica) o in remoto.