Questo articolo fa parte di una piccola serie (1, 2, 3, 4 e qui uno sullo storage tradizionale) che ha l’obiettivo di informare il lettore su come sta evolvendo lo storage enterprise e cosa si deve aspettare per la sua futura infrastruttura. Continuo quindi parlando delle caratteristiche software:

Deduplication

Fino ad oggi la funzionalità di deduplica è sempre stata considerata troppo onerosa, in termini di CPU, per poter essere integrata all’interno di uno storage primario. Infatti, nella maggior parte dei casi questa funzionalità era implementata in sistemi di storage che funzionano da Virtual Tape Library e qausi sempre in modalità post-process.
Post process significa semplicemente che un dato viene scritto nella sua interezza per poi essere riletto in un secondo momento da un processo che si occupa delle operazioni necessarie per la deduplicazione. Questo approccio ha il grande vantaggio di non utilizzare CPU quando questa è necessaria per le operazioni di IO o di calcolo del RAID ma, allo stesso tempo, costringe ad uno spreco di spazio per il fatto che è necessario riservare parte dello spazio per i dati non ancora deduplicati. Di solito, dipende dall’implementazione del prodotto, Il processo di deduplicazione può essere programmato nel tempo (nei momenti di minor impatto per l’IO) oppure automaticamente in background quando il sistema è più scarico.
Gli algoritmi coinvolti nelle operazioni di deduplica sono di diverso tipo e si differenziano soprattutto per come trattano il dato (le due grandi famiglie sono a blocco fisso o a blocco variabile, ma esistono anche delle evoluzioni più sofisticate che cercano di inidirizzare i vantaggi di entrambi). Il blocco fisso è più efficiente in termini di CPU utilizzata mentre, al contrario, nel caso del blocco variabile si possono registrare delle riduzioni dei dati maggiori.
I sistemi di ultima generazione, soprattutto quelli scale-out che fanno ampio uso di dischi allo stato solido (SSD), implementano massivamente la deduplica di tipo inline. Questo avviene principalmente per due motivi: da un lato la potenza di calcolo necessaria non è più un problema (la potenza e il numero di CPU a disposizione è molto elevato) e dall’altro si cerca di ottimizzare al massimo l’uso dello spazio (per mitigare il costo dei dischi SSD). Un ulteriore risultato della deduplicazione è la maggiore efficienza della cache negli ambienti molto virtualizzati (quindi in termini di perfomance) proprio per l’alta probabilità che un elevato numero di blocchi sia sempre presente in cache (es. VDI).

Compressione

Non tutti i tipi di dati sono deduplicabili allo stesso modo, in alcuni casi la compressione ottiene risultati migliori. Anche in questo caso la CPU ha un ruolo fondamentale e valgono gli stessi ragionamenti che sono stati fatti per la Deduplication: il sistema è divenuto utilizzabile in produzione su sistemi primari per l’abbondanza di CPU nei sistemi di tipo scale-out. L’obiettivo è sempre quello di utilizzare al massimo risorse di spazio disco costose.
Al contrario di quanto succede per la deduplication la compressione è implementata quasi sempre inline e l’algoritmo più diffuso è il classico LZW (quello implementato nella maggior parte di utility di compressione).
Da un punto di vista di ottimizzazione ed efficienza, ad oggi, il migliore risultato si ottiene con la combinazione di compressione e deduplication: alcuni sistemi, infatti, permettono di analizzare i blocchi in ingresso e decidono quale è la miglior tecnica di riduzione del dato. In questo caso non si parla mai di una vera e propria attività svolta inline proprio per la complessità che questa scelta comporta.

SSD

L’argomento SSD meriterebbe una serie di articoli a se stante: l’argomento, oltre ad essere uno dei più caldi al momento è anche decisamente complesso. Esistono molte tecnologie che si stanno affermando sul mercato, ed altre saranno lanciate presto. Il form factor (alcuni produttori usano delle schede PCI mentre altri dei dispositivi che hanno la forma di un disco tradizionale), la tecnologia con cui sono costruite le celle di memoria ed anche gli algoritmi che gestiscono queste memorie sono argomenti per dibattiti molto serrati. A quanto appena scritto si aggiunge anche il fatto che gli array di vecchia generazione non erano in grado di utilizzare efficientemente questo tipo di media.
Nei sistemi di vecchia generazione il problema più grande è dovuto alla scarsa potenza dei controller accoppiato alla scarsa disponibilità di banda sul backend. Infatti, il punto non è solo il throughput ma, in parte, le diverse caratteristiche che questi dispositivi hanno rispetto ad hard disk tradizionali e, come spiegato in precedenza, il grande numero di operazioni che i controller devono fare per utilizzare il costosissimo spazio al meglio.
I nuovi sistemi di tipo scale-out hanno risolto questo problema e permettono quindi di allargare enormemente lo spettro di applicazione dei dischi SSD. Anche rinunciando a parte della capacità di risposta di questi sistemi di memorizzazione, il vantaggio che hanno sui dischi tradizionali rimane comunque nell’ordine di un ordine di grandezza. Anche la capacità, che fino a poco tempo fa era decisamente limitata, ora sta aumentando e ora è paragonabile a quella dei dischi SAS dell’ultima generazione. Le nuove funzionalità software che sono state sviluppate sui sistemi di nuova generazione hanno anche l’ulteriore pregio di aggevolare, in alcuni casi, l’uso di SSD più economici (MLC).

Questa serie sta diventando alquanto lunga, spero non troppo, nel prossimo articolo scriverò dei meccanismi di automazione che ci si aspetta dagli storage di nuova generazione.