This post is also available in: Inglese

Reading Time: 5 minutes

Se si parla di data protection contro guasti hardware all’interno di uno strorage, probabilmente si pensa subito al RAID (Redundant Array of Independent Disks), sicuramente una delle tecnologie più utilizzate finora.

Il RAID può essere applicato a livello hardware (tipico di molte schede RAID per server, ed usato negli storage enterprise soprattutto in principio) o a livello software (che permette una flessibilità maggiore come, ad esempio, di implementare anche altre funzioni come compressione e/o deduplica). Tipicamente quasi tutti gli storage, che utilizzino il RAID, oramai adottano l’implementazione in software, o a livello di sistema operativo o a livello di servizio.

In realtà a livello di sistema operativo possono anche esistere dei file system che già implementano funzioni simili al RAID (si pensi ad esempio allo ZFS).

I problemi del RAID sono però legati alla continua crescita di capacità dei dischi (sono già disponibili dischi a 6TB) e all’utilizzo sempre maggiore di dischi SATA o NearLine che comunque hanno un’affidabilità minore o comunque un’occorrenza di quasti in minor tempo. Ma più grande diventa il disco e più lenta diventerà la ricostruzione di un RAID in stato “degradated” con l’ulteriore aggravante che il collo di bottiglia diventa il disco stesso (per una trattazione più esaustiva dei problemi del RAID si veda questo post in inglese).

Nuove tecnologie si stanno affiancando come sostituti del RAID: EC e RAIN.

  • Erasure coding (EC) è un metodo di data protection dove i dati sono suddivisi in frammenti e distribuiti su più location differenti (che possono essere dischi, nodi o anche località geografiche).
  • RAIN (redundant array of independent nodes, chiamato anche channel bonding, reliable array of independent nodes, or random array of independent nodes) è un modello di sistemi distribuiti di storage con funzioni opportuno per gestire la disponibità del dato in caso di guasto ad uno dei nodi.

Come si può intuire RAIN in realtà non è una tecnologia, ma un modello di distribuzione dei dati, tipicamente adottato negli storage scale-out. Nulla di nuovo visto che già tanti anni esistevano soluzioni come LeftHand (per fare un esempio) che implementavano una technica simile al RAID1 dove però la copia era distribuita sui nodi.

Erasure coding però (abbinato magari al modello RAIN) rappresenta però un qualcosa di diverso rispetto ad un semplice RAID1 o RAID10 attraverso la rete.

Banalizzando si potrebbe pensare come da un’evoluzione del RAID5, RAID6 (o altri RAID con parità) dove però il dati e le parità sono distribuiti su nodi diversi e lo storage può tollerare il fallimento di un nodo (anche se formalente sarebbe più corretto dire che RAID5 e RAID6 sono un caso molto particolare di EC): Erasure-Coding Ovviamente anche in questo caso il modello di storage è di tipo scale-out.

Anche qua in realtà non c’è nulla di nuovo: il concetto di erasure code è già stato ampiamente analizzato nella teoria dell’informazione e da un punto di vista matematico. E già è utilizzato negli ojbect storage (e anche in cloud pubblici di grosse dimensioni, come come ad esempio Azure: Erasure Coding in Windows Azure Storage).

La novità è che l’EC e il RAIN incominciano a diventare comuni anche nello storage enterprise:

Rispetto alle comuni tecniche con parità però l’erasure coding è più complesso e potenzialmente oneroso dal punto di vista computazione. L’aspetto interessante però è che esistono diversi algoritmi possibili di erasure code e ovviamente diverse implementazioni. Ma soprattutto che i sistemi di storage sono oramai basati su commodity hardware, ossia normali sistemi server (da qui il principio del RAIN) con notevole potenza di calcolo!

Come scritto, EC spezza i dati in piccoli frammenti che sono espansi ed encondati su un numero configurabile di parti distribuite (ciascuno dei quali rappresenta un singlo fault domain). Tipicamente nel RAIN e negli storage scale-out sono pià nodi di storage. Uno dei grossi vantaggi è che è possibile recuperare il dato da una combinazione qualunque di questi frammaneti e che in caso di guasto è possibile reidratarlo (usando l’informazione di “parità”) sfruttando la potenza di tutti i nodi.

Il tutto resistendo al fallimento di due o più elementi di storage portanto quindi da un livello di resilenza comparabile a quello del RAID6. In realtà secondo Marc Staimer, president of Dragon Slayer Consulting, l’erasure coding può offrire un livello di resilenza 10.000 volte maggiore rispetto a quello del RAID6!

Al di là degli algoritmi usanti, i principali parametri che caratterizzano l’EC sono:

  • Numero di frammenti nel quale il dato è diviso:…….m
  • Numero di frammenti nel quale il dato è salvato:…..n (n>m)
  • Encoding rate…………………………………………………..r = m/n (<1)
  • Spazio richiesto nello storage ……………………………1/r
  • Un oggetto salvato in n frammenti può essere ricostruito dagli m frammenti.

Questi numeri in realtà definiscono come l’EC sia efficiente dal punto di vista dello spazio e parzialmente da quanto sia efficiente anche dal punto di vista delle prestazioni.

Questo perché maggiore è il numero di frammenti e maggiore sarà anche la complessità di calcolo per gestirli. Però più si aumentano i nodi e più potenza di calcolo si può avere!

C’è poi da considerare, come già detto, che anche il tipo di algoritmo e la sua relativa implementazione va poi ad influenzare le prestazioni.

Vedere anche (in inglese):

Share

Virtualization, Cloud and Storage Architect. Tech Field delegate. VMUG IT Co-Founder and board member. VMware VMTN Moderator and vExpert 2010-24. Dell TechCenter Rockstar 2014-15. Microsoft MVP 2014-16. Veeam Vanguard 2015-23. Nutanix NTC 2014-20. Several certifications including: VCDX-DCV, VCP-DCV/DT/Cloud, VCAP-DCA/DCD/CIA/CID/DTA/DTD, MCSA, MCSE, MCITP, CCA, NPP.