L’informatica è da sempre dominata dalle tendenze. Ogni periodo storico ha visto affiorare ed affermarsi tecnologie rivoluzionarie, che avevano l’obiettivo di risolvere i limiti oramai raggiunti dalle tecnologie precedenti, introducendo nuovi concetti maggiormente adatti alle nuove sopraggiunte situazioni.
Il mercato dello storage non è differente, e se dagli anni ’80 in poi gli storage monolitici condivisi tramite SAN e dotati di sistemi di ridondanza RAID l’hanno fatta da padrone, ultimamente si stanno affacciando sul mercato soluzioni differenti, ma che hanno tutte in comune alcune caratteristiche fondamentali.
I limiti odierni degli storage tradizionali
Oggigiorno il mercato è dominato da storage tradizionali: sistemi monolitici, condivisi tra molteplici server che vi accedono tramite una SAN (storage area network). Se in realtà di piccole e medie dimensioni non è possibile percepire i limiti intrinseci di queste soluzioni, la crescita vertiginosa della mole di dati gestiti (Big Data, Cloud Computing, HPC…) sta tuttavia dimostrando in molti ambienti come questi strumenti siano oramai inadatti. I problemi fondamentali sono due:
– la potenza di calcolo: al crescere dei dati, uno storage tradizionale fa fronte unicamente aggiungendo ulteriori dischi, e solo in pochi casi aggiungendo pochi ulteriori controller. L’aumento della capacità quindi ha come effetto collaterale una riduzione delle prestazioni, dato che un controller possiede una capacità computazionale finita, e con questa deve gestire un numero maggiore di dati
– il RAID è un sistema di ridondanza inefficiente. Innanzitutto perchè la garanzia di ridondanza avviene a scapito dello spazio utile, e questo è tanto più visibile all’aumentare dei dati. Se pensiamo a un RAID10 composto da dischi da 1 TB, un sistema con 20 TB ne “spreca” 10, ma uno storage da 1 PB sprecherebbe 500 TB per la ridondanza. Se si opta allora per altri algoritmi come RAID5 o RAID6, si riduce lo spreco, ma a scapito delle prestazioni, dato che la write penalty diventa sempre più sfavorevole. Infine, col crescere delle dimensioni dei dischi, i tempi di ricostruzione dei dati in un disco si sono dilatati enormemente, e in queste condizioni un sistema RAID funziona in modalità degradata, con un notevole impatto sulle prestazioni.
Scale-out è meglio
Un sistema scale-out garantisce un vantaggio fondamentale: l’elasticità. Quando sentiamo parlare di scale-out, o almeno a me capita sempre, percepiamo da subito che i concetti che esso porta con se sono “giusti”. E il motivo è che tutto il mondo che ci circonda funziona in questo modo, utilizzando piccole unità che vengono combinate, piuttosto che utilizzando dei monoliti.
Alcuni esempi? Le case sono costruite con mattoni, e non scavate da un unica roccia. I mattoncini LEGO, pur essendo di dimensioni ridotte, permettono di realizzare costruzioni impressionanti. Le ferrovie sono composte da barre metalliche di qualche metro, che combinate sequenzialmente costituiscono binari lunghi centinaia di chilometri.
Ma l’esempio più affascinante, che abbiamo davanti agli occhi ogni giorno, ce lo fornisce come sempre la natura: praticamente tutti gli esseri viventi sono costituiti da milioni o miliardi di microscopiche cellule, unite tra loro a formare un organismo vivente. Se non è scale-out questo!
Storage scale-out “classici”
Gli storage di tipo scale out non sono una novità del 2013. Esistono diverse soluzioni sul mercato (HP LeftHand e EMC Isilon tra i più noti) che da anni propongono storage composti da sistemi molto più piccoli degli storage tradizionali, che possono essere combinati tra di loro a formare un unico e più grande sistema storage. Utilizzando un termine introdotto da loro stessi, si è passati da un sistema RAID a un RAIN (redundant array of indipendent nodes). E’ possibile in questo modo, quando si aggiunge un nuovo nodo, aumentare non solo lo spazio complessivo, ma anche le prestazioni usufruendo della potenza di calcolo che ogni nodo aggiunge al cluster. Inoltre, un eventuale problema a un singolo nodo non porta ad un blocco dell’intero cluster, dato che i nodi sopravvissuti possiedono copie dei dati e possono erogarli ai server al posto del nodo bloccato. L’idea è molto interessante, e infatti molti clienti hanno premiato questi produttori comprando questi storage.
Tuttavia, pur avendo risolto il problema della potenza di calcolo, l’inefficienza del RAID è rimasta. Essendo nati in un periodo storico in cui i dischi SSD e le memorie Flash non esistevano, questi storage hanno basato la loro ridondanza sul RAID, sia localmente al singolo nodo, sia nella distribuzione dei dati tra i nodi. Un Network RAID 5 è sempre un RAID5, realizzato tra tre o più nodi di un cluster scale out, perdendo una parte dello spazio disco in favore della ridondanza. E se questo “overhead” viene sommato al RAID locale presente nei singoli nodi, oltre certe dimensioni la quantità di spazio inutilizzato inizia a diventare un problema economico per il cliente.
Inoltre, i sistemi RAID prevedono la necessità di ricostruire interamente i dati contenuti in un disco quando questo si rompe e viene sostituito. Con i dischi di ultima generazione, anche di 4 TB, i tempi di ricostruzione di un disco sono estremamente lunghi, anche di 8-10 ore per quelle dimensioni. E per tutto questo tempo, il RAID è in condizioni “degradate”, e quindi le sue prestazioni sono spesso inferiori a quelle di un sistema in condizioni normali.
In definitiva, le repliche interne del singolo nodo, e soprattutto quelle via rete tra i nodi, comportano un limite alla crescita di questi sistemi, raggiunto il quale il carico di lavoro necessario a replicare i dati diventa insostenibile, e consiglia di limitare il cluster a un numero finito di nodi.
Nuovi sistemi scale-out
I sistemi scale-out di ultima generazione hanno fatto tesoro di tutte le soluzioni precedenti e dei loro limiti, e hanno introdotto dei concetti innovativi per superarli. Il fatto che molti prodotti presentati da differenti startup presentino soluzioni accomunate dagli stessi concetti concetti, è la riprova che questi siano effettivamente i nuovi paradigmi di uno storage scale-out. Vediamoli insieme.
Memorie Flash
Non vi è oramai più dubbio alcuno che le memorie flash, in qualsiasi forma si presentino, siano la vera base di questa rivoluzione. Le loro prestazioni consentono non solo di avere storage sempre più veloci, ma soprattutto consentono tutta una serie di elaborazioni dei dati, spesso in real-time, che coi dischi meccanici erano semplicemente impensabili. Troviamo pertanto sistemi che fanno tiering tra flash e dischi, deduplica e compressone in real time, fino ad usi più raffinati come la possibilità di garantire QoS ai vari workload. Come ha riassunto splendidamente Stephen Foskett in un suo recente articolo “I can’t see anyone ever designing another all-disk storage array for general-purpose use.”
Commodity Hardware
Sentirete sempre più spesso questo termine. Piuttosto che continuare l’infinita diatriba di cercare di catalogare un nuovo storage come “software defined” o meno, il vero differenziatore rispetto al passato è l’uso di componentistica hardware non disegnata specificatamente per il sistema storage. Riprendendo concetti introdotti tanti anni fa tra gli altri da Google (quello che vedete a fianco è un loro “server”), la nuova tendenza è realizzare tutto via software, e sfruttare l’hardware comunemente disponibile per eseguirlo. La disponibilià di CPU sempre più veloci, cui è possibile assegnare grandi quantitativi di RAM, e come detto prima aggiungere poi memorie flash, consente di realizzare sistemi storage altamente performanti. Che poi la soluzione finale sia venduta unicamente come software, lasciando al cliente la scelta dell’hardware, oppure sia distribuita come appliance abbinando già dell’hardware selezionato dal vendor, poco importa secondo me.
Questo approccio permette di avere dei cicli di sviluppo decisamente più veloci: non è necessario sostituire nessun componente hardware, ma con un semplice aggiornamento del software un cliente può integrare man mano nel suo storage nuove funzioni, versioni più performanti del software stesso, e via dicendo. Il tutto riducendo di molto i costi di esercizio della soluzione che ha comprato.
La nuova SAN è Ethernet
Anche in questo caso, i nuovi sistemi traggono vantaggio a piene mani dall’evoluzione tecnologica di altre componenti del datacenter. Se i limiti di replica erano limitati, tra gli altri fattori, anche dalle reti a 1G, oggigiorno con le connessioni 10G questi problemi sono quasi interamente risolti, e la banda disponibile consente di muovere grandi quantità di dati tra i vari nodi senza che la rete sia un collo di bottiglia che renderebbe “sprecate” le prestazioni delle memorie Flash. Inoltre, una rete ethernet è molto più economica di un Fabric FC, ed è scalabile in modo molto più lineare, veloce e pratico; può quindi essere anche essa scale-out come lo è lo storage che ci si collega.
Object Storage
Questa è forse, insieme all’uso delle memorie Flash, la novità più importante.
Mi siete mai accorti del completo scollamento tra gli elementi logici dello storage e dell’hypervisor? Da un lato parliamo di dischi, raid pool, stripes, livelli RAID, LUN. Dall’altro, abbiamo tanti files piccoli (file di configurazione) o grandi (i dischi virtuali delle VM). Parlano due lingue differenti, e ciò richiede un livello di astrazione maggiore per metterli in comunicazione. E l’astrazione porta complessità e latenza.
Non sarebbe molto meglio poter avere uno storage che parli la lingua dell’hypervisor, o per lo meno ci si avvicini? E che soprattutto elimini tutta quell’inutile complessità di uno storage tradizionale? Ecco dove entra in gioco l’object storage. Ogni dato salvato nei nuovi storage è un oggetto, sia esso il file intero quando è piccolo, oppure un blocco discreto di un file grande (immaginate ogni disco virtuale salvato a pezzettini di varia dimensione). Questi oggetti vengono salvati direttamente nel file system nativo dello storage, che nulla ha a che spartire con le LUN di una volta. Se l’hypervisor vede delle LUN o una share NFS, è solo perchè lo storage ha un “gateway” che traduce il suo formato nativo in qualcosa di comprensibile all’hypervisor. Ci sono casi avanzati di integrazione (mi viene in mente il device driver di Ceph per linux) dove il sistema operativo vede direttamente l’object storage senza astrazioni. E mi aspetto che prima o poi qualcuno inizi a scrivere questi device driver anche per piattaforme come ESXi.
Una volta che un oggetto è salvato nello storage oltretutto, si possono fare su di esso infinite operazioni. Le snapshot sono solo dei puntatori a versioni differenti di quell’oggetto, la copia dell’oggetto in vari sistemi mi da la ridondanza come il RAID, la copia a distanze più o meno elevate mi da il disaster recovery. Il tutto con un livello di granularità infinitamente maggiore degli storage tradizionali, perchè ragiono in termini di piccoli oggetti e non di intere LUN.
Facilità d’uso
Conseguenza diretta di quanto detto poco fa, è la facilità d’uso che accomuna questi sistemi. Dato che non ho più gli elementi tipici di uno storage con cui dovermi confrontare, non serve nessuna formazione o consulenza per usare questi storage. Non devo sapere quanti dischi è meglio usare in un singolo stripe, con che block size devo formattare le LUN, o altre simili informazioni per iniziati. Mi serve un nuovo spazio disco da 5 Tb per le mie virtual machine? Con due semplici click nella console creo lo spazio necessario e lo espongo al mio hypervisor. Tutte le questioni tecnich come ridondanza, prestazioni, tiering, sono in carico allo storage e io non me ne devo più preoccupare.
Sembra un sogno? No, è semplicemente la realtà di questi sistemi. Vi basterà provarne uno, e vi chiederete come sia possibile concepire ancora oggi uno degli altri “vecchi” storage.
Limiti?
Non c’è nessuna controindicazioni? Assolutamente si, ma alcune sono unicamente causate dalla giovane età di questi sistemi, quindi destinate a ridursi nel tempo.
Ovviamente il primo limite, puramente psicologico, è che nessuno di questi sistemi è venduto da un grande vendor, ma solo da startup più o meno recenti. Ma per chi pensa sia un salto nel vuoto, vorrei ricordare loro le politiche commerciali omicide di molti “fidati vendor” che tolgono da catalogo prodotti diffusissimi per obbligare i clienti a sostituirli e a spendere altri soldi. Sicuramente ci sono tantissime startup in giro, molte spariranno in qualche anno e poche sopravviveranno, o diventando abbastanza grandi o venendo acquisite. Ma se il prodotto che offrono è così superiore alla concorrenza, e voi percepite questa differenza di valore, allora l’investimento è sensato.
Secondo: a prima vista parrebbe che il mercato principale di quasi tutti questi vendor siano le grandi società o i service provider. Si parla di petabyte come noccioline, e la cosa potrebbe far pensare alla società del settore SMB che sia un prodotto non adatto a loro. Per alcuni sistemi sicuramente è vero, ma la bellezza dei sistemi scale-out è proprio che si può partire con pochi nodi. E non è detto che, presi i primi 3-4 nodi, non si debba restare con quel quantitativo per molto tempo. Ci sono oltretutto alcuni produttori che invece propongono soluzioni disegnate esattamente per il mercato SMB.
Terzo: un puro sistema di tipo object basa la sua ridondanza sulla creazione di molteplici copie degli oggetti, chiamato anche Replication Factor. Un valore 0 indica che vi è una sola copia, 1 è l’equivalente di un RAID1 (ed il più diffuso) e cosi via. Ovviamente un Replication Factor pari a 1 fa consumare il 50% dello spazio disco disponibile. Ma ancora, sfruttando le prestazioni delle moderne CPU e delle memorie Flash, questi storage sono in grado di realizzare deduplica e compressione in tempo reale sui dati, senza risentirne da un punto di vista prestazionale. L’overhead finale quindi è solitamente inferiore. Inoltre, per applicazioni dove si può sacrificare la prestazione pura, alcune soluzione prevedono l’uso di algoritmi come Erasure Code, che riduce ulteriormente i dati. Probabilmente, con l’arrivo di storage dalle prestazioni sempre maggiori, questi algoritmi potranno in futuro essere applicati anche a storage primari.
Conclusioni
Gli storage scale-out di nuova generazione sono secondo me, e secondo molti esperti di settore, il futuro.
Tutte le caratteristiche che vi ho descritto li rendono performanti, scalabili, e facilissimi da usare. Qualsiasi storage classico vi ritroverete ad usare dopo aver provato uno di quelli nuovi vi sembrerà obsoleto. Il motivo? Perchè lo sono!