Sono stato invitato a partecipare in qualità di delegato alloStorage Field Day, nella sua quarta edizione in quel di San Josè, California. Il secondo produttore che abbiamo incontrato è stato GridStore. Ecco un resoconto dell’incontro.
Chi è GridStore
GridStore è basata a Mountain View, CA, ed è stata fondata nel 2009. Hanno un focus molto elevato con il loro prodotto: i loro clienti principali sono le società medio-piccole che utilizzano sistemi Windows fisici, o Hyper-V. La filosofia della loro soluzione è separare la capacità dello storage, dalla gestione dell’ I/O che viene prodotto dai vari client che si connettono allo storage stesso. Il loro prodotto infatti consiste di due componenti, uno storage di tipo scale-out, costituito da differenti modelli hardware, e un “Virtual Controller” che può essere installato in ogni sistema Windows, sia esso fisico, virtuale o l’hypervisor di casa Microsoft.
Il Virtual Controller
Da un punto di vista architetturale, l’innovazione di GridStore è molto originale: il controller di un classico sistema di storage è stato spostato dallo storage array stesso verso il server che deve utilizzare lo storage, e quindi “prende in prestito” la potenza di calcolo dal server stesso per funzionare. Confidando sull’enorme potenza di calcolo dei moderni processori, che a parte casi rarissimi non sono mai il collo di bottiglia di una infrastruttura, è una soluzione che ha fondamento. Anche in sistemi condivisi come Hyper-V, il controller è installato nella partizione 0 di Hyper-V, quindi non deve contendere le risorse della CPU con le virtual machines; altrimenti un sistema eccessivamente carico potrebbe avere un impatto negativo sul vController stesso.
I vari Virtual Controller (denominato Server-side Virtual Controller Technology, o SVCT in breve) vengono installati in ogni server Hyper-V o fisico che deve ottenere un certo quantitativo di storage dalla soluzione. E’ composto da un driver che presenta i volumi della Grid come un block device, più una serie di servizi. I vari controllers possono accedere contemporaneamente alla stessa “Grid”, ed effettuano tutta una serie di ottimizzazioni sullo stream I/O prima di inviarlo allo storage, come ad esempio la serializzazione del random I/O, la gestione delle snapshots direttamente a livello di VM, la loro replica, tutto fatto a livello di VM e non più di LUN, e tramite un sistema di QoS la prioritizzazione dei workloads, su tre differenti livelli.
La Grid
Uscendo dal server, il Controller si collega tramite la rete ethernet a uno o più “Nodes”. Ogni Node (ne esistono tre modelli differenti, uno anche con una scheda PCIe Flash) è un elemento 1U dotato di 4 dischi e un processore, e non ha la minima ridondanza interna. La soluzione funziona su un concetto di “Grid” (da cui il nome della società) che partendo da un minimo di 3 nodi, può scalare attualmente fino a 250 nodi. Ogni nodo contribuisce con il suo processore e il suo spazio storage, pertanto la soluzione nel suo complesso ha la potenza dell’insieme dei nodi presenti.
L’I/O e i dati sono distribuiti uniformemente su tutti i nodi, e ribilanciati automaticamente ogni volta che un nuovo nodo viene aggiunto.La ridondanza è garantita utilizzando Reed Solomon Erasure Code piuttosto che sistemi RAID o repliche pure, e il computo dell’erasure code viene effettuato direttamente dal vController. Questa ridondanza è configurabile per la completa perdita di 1 o N elementi completi (un disco, un network link, un intero nodo), ed è configurabile indipendentemente per ogni singolo volume pubblicato, chiamato da GridStore vLUN. L’overhead in fatto di spazio è paragonabile ai sistemi RAID, ma senza i problemi di prestazioni causati dal calcolo della parità e i limiti di ridondanza N+1 ad esempio di RAID-5, si possono infatti configurare per esempio ridondanze come 3+2. La massima perdita possibile è costituita dalla metà delle risorse storage disponibili + 1; con 11 nodi se ne possono perdere fino a 5.
Ci si potrebbe chiedere a cosa serva tutta questa potenza di calcolo nei nodi, se il Virtual Controller utilizza la CPU dell’host dove viene installato. 1 CPU Quad Core e 32 Gb di RAM per singolo nodo non sono molti in assoluto, ma se li immaginate distribuiti su molti nodi, la potenza di calcolo complessiva è decisamente importante. Tuttavia, alcuni servizi sono demandati direttamente ai nodi e non eseguiti dai vController. Una su tutte la ricostruzione delle repliche in seguito a failure. Questo è ben pensato, perchè ci si può aspettare che in uno scenario di failure i server che contengono i vController possano essere andati in crash.
Note finali
La soluzione GridStore è molto interessante. Non nascondo che in generale ogni soluzione che cerchi di superare i classici limiti degli storage tradizionali adottando soluzioni scale-out mi piace, e l’ho spiegato in un’altro articolo. GridStore ha scelto un approccio molto particolare sia per l’architettura sia per il mercato a cui si rivolge. Per evitare i problemi di scalabilità che i protocolli classici hanno, ha deciso di scrivere un driver proprietario, che comunica con il proprio formato con i vari controller. Non utilizza ne NFS ne iISCSI infatti. Inoltre,da un punto di vista strategico, è apprezzabile l’idea di non voler essere l’ennesimo storage per VMware, ma piuttosto uno dei pochi ottimizzato per Hyper-V. Ciò non vuol dire che GridStore non stia valutando altre possibilità, e probabilmente nel futuro vedremo il supporto per altre piattaforme, magari VMware ma anche KVM/Openstack…
Altro elemento che ho potuto apprezzare, la soluzione è veramente molto facile da usare. Credo che per molte società di medie dimensioni, ovvero il target principale di GridStore, questo sia un altro elemento importante. E’ una ottima soluzione per quegli ambienti in cui è necessario partire con poche risorse, ma dove la crescita potrebbe rendere in poco tempo necessario un cambio di storage. Il prezzo di listino è di 1 USD per raw GB per il modello capacity, e 1.5 per il modello Hybrid. Tradotto, il sistema minimo per partire costa 12.000 dollari per avere 12 TB di spazio raw, che sono circa 8 TB con Erasure Code in stile RAID5.
E se anche lavorate in ambienti VMware, la soluzione GridStore non è da sottovalutare. Ci sono scenari come ad esempio gli storage di backup dove questo prodotto può essere una ottima soluzione per creare un repository in grado di essere espanso e potenziato nel tempo senza nessuna necessità di riconfigurazione. Tanto che GridStore e Veeam hanno realizzato alcuni documenti congiunti sul modo migliore di usare questo storage come repository primario per i backup.