RAID, oppure Redundant Unrray di Ionon dipendente (o Ionexpensive) Disks, è una tecnologia di archiviazione dei dati utilizzata per la ridondanza dei dati (protezione contro i guasti hardware), il miglioramento delle prestazioni o una combinazione di entrambi.

I vari tipi di RAID (livelli) memorizzano i dati in modo diverso, si concentrano su cose diverse (tolleranza ai guasti, throughput, costo) e, come tali, sono adatti a situazioni diverse. E c’è anche la questione dell’efficacia del RAID in questo giorno ed età attuali.

Con l’avvento di tecnologie alternative come SSD e Erasure Coding, la domanda incombe; RAID vale ancora la pena? Discuteremo tutti questi e argomenti simili in questo articolo.

Che cos’è il RAID? Come funziona

RAID è una tecnologia di archiviazione utilizzata per configurare più dischi fisici come un singolo disco logico chiamato Logical Unit Number (LUN). In generale, in una configurazione RAID, i dati vengono memorizzati su più dischi, con l’obiettivo principale di ridondanza dei dati e/ o miglioramento delle prestazioni.

La ridondanza dei dati aumenta l’affidabilità fungendo da rete di sicurezza contro i guasti del disco. Allo stesso modo, la combinazione delle specifiche di più dischi fornisce significativi incrementi delle prestazioni per le operazioni di I/O.

Naturalmente, questa è solo una descrizione ampia. Il grado in cui l’array si concentra sulla ridondanza o sulle prestazioni dipende dal tipo di RAID utilizzato, in genere denominato livelli RAID. Alcuni sono progettati per uno scopo esclusivo, mentre altri offrono il meglio di entrambi i mondi.

Le Livelli RAID standard sono RAID 0 – RAID 6, ma ci sono numerosi altri livelli di RAID che rientrano in categorie come NESTED RAID e Non-Standard RAID. Parleremo di tutti questi in modo più dettagliato più avanti, ma per ora, concludiamolo con una breve introduzione.

standard-raid-levels

Per quanto riguarda il modo in cui RAID funziona effettivamente, implementa tecniche come lo striping dei dati, il mirroring del disco e la parità. A seconda del livello RAID, è possibile utilizzare una o qualsiasi combinazione di queste tecniche.

Striping dei dati è il processo di suddivisione di segmenti consecutivi di dati logicamente sequenziali su dischi diversi. Accedendo contemporaneamente ai dati distribuiti su più dischi, è possibile utilizzare il throughput dei dati combinato, che fondamentalmente porta a prestazioni migliorate.

Mirroring è autoesplicativo: i dati di un disco vengono copiati su un altro. Ciò rende ridondanti i dati su un disco, ma è inteso in quanto ciò consente di recuperare i dati nel caso in cui uno dei dischi nell’array fallisca.

Parità è una tecnica di protezione dagli errori comunemente utilizzata per fornire tolleranza ai guasti e ottenere ridondanza. I dati di parità vengono memorizzati su un disco dedicato o distribuiti su tutti i dischi e, in caso di guasto di un disco dell’array, è possibile sostituirlo con un nuovo disco e utilizzare i dati di parità e i dati degli altri dischi per ricostruire i dati persi.

In generale, di base Xor viene eseguito sui dati dei dischi per calcolare i dati di parità, ma alcuni livelli RAID come RAID 2 o RAID 6 utilizzano parità dedicate, di cui abbiamo parlato più avanti nell’articolo.

Infine, c’è la questione di Implementazione RAID. L’array RAID può essere gestito da un controller RAID dedicato, da implementazioni basate su software (md, ZFS, ecc.) o da implementazioni basate su firmware e driver.

I controller RAID fisici possono essere costosi, mentre i controller software sono gratuiti o convenienti. Tuttavia, poiché i controller software dipendono dalla macchina host per le risorse, anche l’aumento delle prestazioni RAID ne risente. Generalmente, RAID 0 – 4 può essere gestito con controller software, mentre RAID 5 e livelli superiori richiedono un controller RAID fisico.

Livelli RAID standard

I livelli RAID si sono evoluti nel corso degli anni, ma lo standard attualmente accettato, come mantenuto da SNIA, classifica RAID 0 – 6 come i livelli standard.

RAID 0

raid0

RAID 0 utilizza lo striping su almeno due dischi. Poiché i file sono distribuiti su più dischi, anche la velocità effettiva disponibile viene moltiplicata. Ma allo stesso modo, è anche molto più incline al fallimento, poiché qualsiasi guasto dell’unità significherebbe che tutti i dati vengono persi.

Poiché RAID 0 non fornisce ridondanza, some discutere se dovrebbe anche essere chiamato RAID. Poiché il rischio di guasto è elevato, non viene utilizzato molto spesso, in particolare con un gran numero di dischi, poiché la possibilità di guasto sarebbe ancora più alta. Ma ha ancora i suoi casi d’uso. Per scenari in cui ti interessa solo Prestazione, come i giochi, RAID 0 può essere utile.

In una configurazione RAID 0, la capacità di archiviazione totale è la somma di tutti i dischi utilizzati. Ad esempio, se vengono utilizzati due dischi da 1 TB, lo spazio disponibile sarà di 2 TB.

RAID 1

raid 1

RAID 1 esegue il mirroring dei dati da un disco agli altri dischi dell’array. Il punto di forza di RAID 1 è il suo affidabilità, poiché l’array non si guasta finché almeno un’unità è operativa. Tuttavia, poiché è progettato per l’affidabilità, altri fattori come le prestazioni e lo storage utilizzabile ne risentono.

Poiché i dati possono essere letti da uno qualsiasi dei dischi dell’array, le prestazioni di lettura sono generalmente vicine all’unità più veloce dell’array. Lo stesso non si può dire per le prestazioni di scrittura, poiché tutte le modifiche in scrittura devono essere applicate a tutti i dischi.

In base alla progettazione, l’archiviazione utilizzabile può anche essere grande solo quanto il disco più piccolo dell’array. Ad esempio, se si utilizza un’unità da 500 GB e 1 TB, lo spazio utilizzabile sarebbe di 500 GB e 500 GB verrebbero utilizzati per il mirroring, mentre gli altri 500 GB rimarrebbero inutilizzati.

RAID 2, 3, 4

Raid 4

Usi RAID 2 striping a livello di bit su dischi con parità di codice Hamming dedicata. Fondamentalmente, ogni bit sequenziale è memorizzato su un’unità diversa, mentre almeno un disco viene utilizzato per memorizzare i dati di parità. Poiché la maggior parte dei dischi di archiviazione moderni include il codice di correzione degli errori (ECC), RAID 2 non viene più utilizzato.

RAID 3 è simile, ma utilizza striping a livello di byte invece, mentre un disco dedicato viene utilizzato per memorizzare i dati di parità. Anche RAID 3 è usato raramente, poiché è stato sostituito da RAID 4.

Usi RAID 4 striping a livello di blocco con un disco di parità dedicato. Poiché i blocchi di dati sono distribuiti su più dischi, le richieste di lettura possono essere gestite da più dischi consentendo la sovrapposizione di I/O. Mentre RAID 4 ha i suoi vantaggi rispetto a RAID 2 e 3, come il parallelismo I / O, non è nemmeno comunemente usato, poiché livelli più alti come RAID 5 e 6 sono in gran parte preferiti.

RAID 5

Raid 5

RAID 5 utilizza lo striping a livello di blocco con parità distribuita, in cui i dati di parità vengono sottoposti a striping su ciascun disco. RAID 5 richiede almeno 3 dischi e, anche in caso di guasto di un’unità, la parità distribuita può essere utilizzata per ricostruire l’array. RAID 5 offre essenzialmente vantaggi sia in termini di prestazioni che di ridondanza.

La scrittura di dati di parità ha un certo impatto sulle prestazioni di scrittura, ma non è così stressante come i livelli RAID inferiori, poiché tutti i dischi dell’array sono in grado di soddisfare le richieste di scrittura in RAID 5.

Nonostante tutte le sue qualità, RAID 5 ha un grosso difetto: la sua suscettibilità al fallimento. Quando si verifica un errore su un disco, la ricostruzione dell’array può richiedere più ore o addirittura giorni. Ma il problema ancora più grande è che la ricostruzione dell’array richiede la lettura dei dati di tutti i dischi, creando la possibilità di un guasto di una seconda unità, che porterebbe alla completa perdita di dati.

Due unità che si guastano contemporaneamente è molto improbabile, ma è ancora qualcosa da considerare quando si decide la configurazione. Pertanto, per un’affidabilità ottimale, sarebbe meglio attenersi ai livelli RAID più elevati di cui parleremo di seguito.

RAID 6

Raid 6

RAID 6 è simile a RAID 5 in quanto utilizza lo striping a livello di blocco con parità distribuita, ma c’è una differenza critica; utilizza due schemi di parità invece di uno. La doppia parità distribuita consente all’array di rimanere operativo nonostante due errori del disco. Il failsafe aggiuntivo ha un costo ovvio, le prestazioni di scrittura sono influenzate e il doppio dello spazio viene utilizzato per archiviare i dati di parità.

Nel caso di un array di piccole dimensioni come 4 dischi (il minimo per RAID 6), sei libero di scegliere tra RAID 5 o 6 a seconda che le prestazioni o l’affidabilità siano la priorità. Ma con array più grandi, si consiglia vivamente di attenersi a RAID 6.

Certo, anche la RAIL’affidabilità di D 6 non è a prova di errore. Man mano che le dimensioni del disco crescono, aumentano anche i tempi di ricostruzione e, con essi, la probabilità di guasto del disco. L’efficacia di RAID 6 sta diminuendo e presto potrebbe essere necessaria la tripla parità.

Livelli RAID nidificati

raid0+1,raid!+0

Nested RAID o Hybrid RAID è fondamentalmente una combinazione di diversi livelli RAID. Questi vengono utilizzati per ridondanza aggiuntiva, aumento delle prestazioni o una combinazione di entrambi.

Ad esempio, con RAID 10 (RAID 1+0), dove 0 è il matrice superiore, una serie di dischi viene prima sottoposta a mirroring, quindi i mirror vengono sottoposti a striping. RAID 01 (RAID 0+1) è l’opposto, dove 1 è l’array superiore. Qui, i dati vengono prima sottoposti a striping sui dischi, quindi il set viene sottoposto a mirroring.

È la stessa idea con altri livelli RAID nidificati come RAID 03, RAID 50, RAID 60, ecc. Il RAID nidificato in genere non supera un livello, ma ci sono eccezioni come RAID 100 (RAID 10+0), in cui gli array RAID 10 vengono sottoposti a striping utilizzando RAID 0.

E anche se non entreremo nei dettagli su di loro, vale anche la pena ricordare che RAID non standard i livelli esistono. Si tratta per lo più di tecnologie proprietarie progettate pensando a una particolare organizzazione o progetto. Alcuni esempi includono Linux MD RAID 10, RAID-Z e Hadoop.

Utilizzo RAID e futuro

sala server raid

Non è un segreto che il futuro del RAID, allo stato attuale delle cose, è finito. Negli ultimi anni sono emerse tecnologie in grado di migliorare la protezione dei dati, le prestazioni e l’affidabilità, come la codifica di cancellazione e gli SSD. Con l’aumentare delle dimensioni del disco, aumentano anche i tempi di ricostruzione (downtime) e la possibilità di guasto durante la ricostruzione.

E mentre più dischi non dovrebbero fallire insieme in teoria, esporre le stesse unità di marca alle stesse condizioni ambientali può renderlo molto più probabile di quanto la maggior parte delle persone pensi.

Tuttavia, questo non vuol dire che RAID sia già obsoleto. In ambienti server aziendali con array di grandi dimensioni in cui il tempo di attività è importante e, in generale, quando è necessario configurare il sistema nel modo più efficiente, RAID è ancora molto rilevante.

Detto questo, ci sono alcune cose da tenere a mente se stai esaminando le configurazioni RAID. Innanzitutto, la ridondanza non è la stessa cosa dei backup. RAID aiuta ma non garantisce la protezione dei dati. È ancora suscettibile di errori umani o virus e, nel caso in cui i dischi vengano persi per qualsiasi motivo, avere un backup fuori sede può essere un vero toccasana.

In secondo luogo, se si valutano esclusivamente le prestazioni, si potrebbe andare con RAID 0. RAID 1 è ottimo per la ridondanza, mentre qualcosa come RAID 5 offre il meglio di entrambi i mondi. Se si apprezza di più l’affidabilità, che è importante man mano che l’array diventa più grande, i livelli RAID 6 o RAID nidificati sarebbero opzioni ancora migliori, ma hanno un costo aggiuntivo poiché sono necessari più dischi per i livelli RAID più elevati.

In definitiva, si tratta solo di trovare il miglior equilibrio tra prestazioni, protezione e costi per le circostanze specifiche.