venerdì 13 dicembre 2013

SCALE - OUT NAS: ISILON porta lo storage nel futuro (parte 2)

Nella prima parte, abbiamo illustrato i principi su cui è fondato il sistema EMC ISILON. Il paradigma dello Scale-Out, realizzato attraverso l’adozione di un’architettura cluster (invece del tradizionale approccio controller-array) e l’implementazione di un sistema operativo in grado di virtualizzare tutte le risorse hardware,  non sarebbe completamente realizzato senza una modalità innovativa ed efficiente di protezione dei dati.  OneFS aggrega le funzionalità di RAID Management, Volume Management e File System in un unico livello software che svincola definitivamente le esigenze di protezione dei dati dal livello fisico e consente agli storage manager di gestire i dati, non l'infrastruttura.

N+M: PROTEZIONE DEI DATI OLTRE I CONFINI DEL RAID


Big Data non significa soltanto grandi quantità di dati, ma anche dati che sono continuamente modificati,  che si espandono continuamente e un tasso di obsolescenza molto più accelerato del normale: il RAID è un meccanismo troppo statico e oneroso dal punto di vista dell’overhead per essere considerato ottimale. 

Il livello tradizionale di protezione dei file (mirroring e FEC) è sempre stato definito a livello fisico, mediante la creazione dei gruppi RAID, indipendentemente dal ciclo di vita dei dati. E’ possibile però che uno stesso dataset abbia una criticità maggiore in una certa fase della sua vita rispetto a un’altra o che nuove policy aziendali richiedano una modifica non prevista al livello di protezione dei dati. In un array basato sul RAID, questo significherebbe onerose e rischiose operazioni di migrazione dei dati e ricostruzione dei gruppi RAID, oppure acquisto di nuovo spazio disco.

EMC ISILON implementa invece un meccanismo proprietario estremamente flessibile, in cui l’elemento atomico del gruppo di protezione non è più il singolo disco, ma il nodo, e che consente di riconfigurare il livello di protezione online a seconda delle esigenze e senza più necessità di migrazione dati. 

Tale meccanismo è chiamato N+M. I vantaggi del N+M sono immediatamente comprensibili, se paragonato al RAID:

Feature

N+M

RAID

Fault Tolerance

Fino a 4 failure (N+4)

Fino a 2 failure (RAID 6)

Flessibilità

Livello modificabile a caldo (SW level)

Non modificabile a caldo  
(HW level)

Granularità

File Level (SW)

Raid Group Level (HW)

Efficienza vs Scalabilità

Variabile (a parità di protezione, l’efficienza aumenta con la dimensione del cluster)

Fissa (a parità di protezione, aumentando la capacità bisogna creare nuovi gruppi RAID )


Sebbene N+M sia in qualche modo paragonabile al RAID, è importante ricordare che mentre il failure, nel RAID, è riferito ad uno o due dischi all'interno di un RAID Group, per ISILON, un failure è riferito a un NODO, quindi fino a 36 dischi di uno stesso nodo che possono contemporaneamente essere offline senza alcun impatto sulla disponibilità dei dati. L’implementazione della protezione N+M è molto semplice.


                    Ogni volta che un client scrive un file in un cluster ISILON, questo è suddiviso in blocchi da 128 KB

                    Per ogni N di questi blocchi, il sistema calcola M blocchi di parità, sempre da 128 KB

                    Gli N+M blocchi risultanti costituiscono una stripe (o protection group)

                    La stripe viene scritta sui dischi, un blocco per nodo ( * )

                    Il procedimento viene ripetuto fino all’esaurimento della dimensione complessiva del file

( * )  La massima estensione di una stripe è 20 blocchi, di cui al massimo 16 di dati e i restanti di parità. Ogni blocco di una stessa stripe viene scritto su un nodo diverso, perciò per cluster inferiori ai 20 nodi N+M è uguale al numero dei nodi del cluster, mentre per cluster più grandi, la stripe sarà scritta al massimo su venti dei nodi che compongono il cluster.

Nell'immagine seguente, è riportato l'esempio di un file che viene scritto con una doppia protezione in un cluster composto da 6 nodi (N=4, M=2) . Nella pratica, il nodo che ha in carico la sessione di file sharing si occupa di dividere il file, calcolare la parità ed inviare infine i blocchi agli altri nodi.


Per file più piccoli di 128 KB, il risultato della procedura N+M è un mirroring, quindi, di fatto, i file di piccole dimensioni vengono mirrorati (OneFS supporta nativamente anche il mirroring da 2x a 8x). Ovviamente, OneFS gestisce e ottimizza file la cui dimensione non sia multiplo di 128 KB, ma la spiegazione di come siano trattati i casi particolari di striping(incluse le configurazioni N+M:b) esula dallo scopo di questo post. Il grande vantaggio dell’algoritmo N+M è che N e M sono numeri configurabili a seconda delle esigenze, con l’unico vincolo che N sia maggiore M, quindi, per esempio, la doppia parità è applicabile solo a cluster con un numero di nodi uguale o superiore a 5 e così via. Il valore di M (cioè del numero di fault tollerati) varia da 1 a 4 . M = 1 corrisponde a una protezione a singola parità (protezione equivalente a quella del RAID 5) mentre M = 2 corrisponde a una protezione a doppia parità (protezione equivalente a quella del RAID 6).Il livello di protezione può essere definito su base file o cartella e può essere modificato a caldo, svincolandosi pertanto definitivamente dalla quantità e dalla configurazione dei dischi sottostanti.

Vale la pena sottolineare il fatto che M = 3 e M = 4 sono livelli di protezione non raggiungibili con i tradizionali RAID e pertanto da nessun altro sistema.

Ultime due considerazioni: la distribuzione dei blocchi in cui il file è suddiviso su un numero ampio di nodi ha due conseguenze dirette molto importanti: innanzitutto, un nodo non è mai un Single Point of Failure per la disponibilità e l'integrità dei dati, perchè un file in nessun caso può risiedere interamente su un unico nodo; in secondo luogo, l'utilizzo bilanciato di tutti i nodi evita la creazione di hot spot e consente al sistema di lavorare in maniera efficiente, sia dal punto di vista delle prestazioni che da quello dell'utilizzo della capacità.

Alcuni esempi pratici:

CLUSTER di 3 NODI, protezione a singola parità: N+M diventa 2+1 (ovvero il file viene suddiviso in stripe composte da 3 blocchi di 128 KB, di cui due di dati e una di parità). L’efficienza dello storage è 67%.

CLUSTER di 8 NODI, protezione a singola parità: N+M diventa 7+1 (ovvero il file viene suddiviso in stripe composte da 8 blocchi di 128 KB, di cui sette di dati e una di parità). L’efficienza dello storage è 87%.

CLUSTER di 8 NODI, protezione a doppia parità: N+M diventa 6+2 (ovvero il file viene suddiviso in stripe composte da 8 blocchi di 128 KB, di cui sei di dati e due di parità). L’efficienza dello storage è 75%.

Cluster di 18 NODI, protezione a singola parità: N+M diventa 16+1 (ovvero il file viene suddiviso in stripe composte da 17 blocchi di 128 KB, di cui sedici di dati e una di parità). In questo caso, ogni file sarà suddiviso su un diverso sottoinsieme di nodi, in modo che l’occupazione complessiva dei nodi sia sempre bilanciata. L’efficienza dello storage è 88%.

Cluster di 20 NODI, protezione a quadrupla parità: N+M diventa 16+4 (ovvero il file viene suddiviso in stripe composte da 20 chunk di 128 KB, di cui sedici di dati e quattro di parità). L’efficienza dello storage è 80%

Nota Bene: Gli esempi riportano casi molto semplici in cui un solo algoritmo di protezione è stato definito per tutto il cluster, per cui è molto semplice calcolare l’efficienza. Vale la pena ricordare che si può applicare una diversa protezione a diversi sottoinsiemi di dati nello stesso filesystem, pertanto l’efficienza, seppure sempre crescente al crescere del numero dei nodi, non risulta più immediatamente calcolabile a priori.

Nessun commento:

Posta un commento