Quali sono i diversi livelli RAID ampiamente utilizzati e quando devo considerarli?


181

Questa è una domanda canonica sui livelli RAID.

Cosa sono:

  • i livelli RAID normalmente utilizzati (inclusa la famiglia RAID-Z)?
  • le distribuzioni si trovano comunemente in?
  • benefici e insidie ​​di ciascuno?

10
@ erimar77 Il punto della rete StackExchange è quello di raccogliere tutte le conoscenze sull'argomento specificato all'interno della rete SE . Ciò significa che i dati su Wikipedia sono inutili per la missione. Sono abbastanza esperto di RAID, quindi non ho bisogno della risposta, ma è pensato per essere una domanda canonica. Una domanda conica è quella che contiene una risposta definitiva a un problema comune a cui siamo in grado di indicare tutti i duplicati. "Basta google" o "è su Wikipedia" non sono risposte accettabili. L'articolo su Wikipedia è molto buono, però.
MDMarra,

2
Copiato in Super User su I posso VTC come duplicato lì. Copia la risposta per Super User (o fammi copiarla per ora).
Hennes,

Risposte:


197

RAID: perché e quando

RAID è l'acronimo di Redundant Array of Independent Disks (ad alcuni viene insegnato "Economico" per indicare che si tratta di dischi "normali"; storicamente c'erano dischi ridondanti internamente che erano molto costosi; poiché quelli non sono più disponibili, l'acronimo si è adattato).

A livello più generale, un RAID è un gruppo di dischi che agiscono sulle stesse letture e scritture. SCSI IO viene eseguito su un volume ("LUN") e questi vengono distribuiti ai dischi sottostanti in modo da introdurre un aumento delle prestazioni e / o un aumento della ridondanza. L'aumento delle prestazioni è una funzione dello striping: i dati vengono distribuiti su più dischi per consentire a letture e scritture di utilizzare contemporaneamente tutte le code di I / O dei dischi. La ridondanza è una funzione del mirroring. Interi dischi possono essere conservati come copie o singole strisce possono essere scritte più volte. In alternativa, in alcuni tipi di raid, anziché copiare i dati bit per bit, la ridondanza si ottiene creando strisce speciali che contengono informazioni di parità, che possono essere utilizzate per ricreare eventuali dati persi in caso di guasto hardware.

Esistono diverse configurazioni che offrono livelli diversi di questi vantaggi, che sono illustrati qui e ognuno ha un orientamento verso le prestazioni o la ridondanza.

Un aspetto importante nella valutazione del livello RAID che funzionerà per te dipende dai suoi vantaggi e requisiti hardware (ad esempio: numero di unità).

Un altro aspetto importante della maggior parte di questi tipi di RAID (0,1,5) è che non garantiscono l'integrità dei dati, poiché vengono sottratti ai dati reali archiviati. Quindi RAID non protegge dai file corrotti. Se un file viene corrotto in qualsiasi modo, il danneggiamento verrà rispecchiato o paritato e impegnato sul disco a prescindere. Tuttavia, RAID-Z afferma di fornire integrità a livello di file dei dati .


RAID collegato direttamente: software e hardware

Esistono due livelli in cui RAID può essere implementato su storage collegato direttamente: hardware e software. Nelle soluzioni RAID hardware reali, esiste un controller hardware dedicato con un processore dedicato ai calcoli e all'elaborazione RAID. In genere ha anche un modulo cache alimentato a batteria in modo che i dati possano essere scritti su disco, anche dopo un'interruzione di corrente. Questo aiuta a eliminare le incoerenze quando i sistemi non vengono chiusi in modo pulito. In generale, i buoni controller hardware hanno prestazioni migliori rispetto alle loro controparti software, ma hanno anche un costo sostanziale e aumentano la complessità.

Il software RAID in genere non richiede un controller, poiché non utilizza un processore RAID dedicato o una cache separata. In genere queste operazioni sono gestite direttamente dalla CPU. Nei sistemi moderni, questi calcoli consumano risorse minime, sebbene si verifichi una latenza marginale. Il RAID è gestito direttamente dal sistema operativo o da un controller falso nel caso di FakeRAID .

In generale, se qualcuno sceglierà il software RAID, dovrebbe evitare FakeRAID e utilizzare il pacchetto nativo del sistema operativo per il proprio sistema come Dischi dinamici in Windows, mdadm / LVM in Linux o ZFS in Solaris, FreeBSD e altre distribuzioni correlate . FakeRAID utilizza una combinazione di hardware e software che determina l'aspetto iniziale del RAID hardware, ma le prestazioni effettive del RAID software. Inoltre, è comunemente estremamente difficile spostare l'array su un altro adattatore (se l'originale non dovesse funzionare).


Archiviazione centralizzata

L'altro punto in cui RAID è comune è su dispositivi di archiviazione centralizzati, generalmente chiamati SAN (Storage Area Network) o NAS (Network Attached Storage). Questi dispositivi gestiscono il proprio spazio di archiviazione e consentono ai server collegati di accedere allo spazio di archiviazione in varie mode. Poiché più carichi di lavoro sono contenuti sugli stessi pochi dischi, è generalmente auspicabile un elevato livello di ridondanza.

La differenza principale tra un NAS e una SAN è l'esportazione a livello di blocco rispetto al file system. Una SAN esporta un intero "dispositivo a blocchi" come una partizione o un volume logico (compresi quelli costruiti sopra un array RAID). Esempi di SAN includono Fibre Channel e iSCSI. Un NAS esporta un "file system" come un file o una cartella. Esempi di NAS includono CIFS / SMB (condivisione file di Windows) e NFS.


RAID 0

Buono quando: velocità a tutti i costi!

Cattivo quando: ti preoccupi dei tuoi dati

RAID0 (aka Striping) viene talvolta definito come "la quantità di dati che rimarrà in caso di guasto di un'unità". Funziona davvero contro il "RAID", dove "R" sta per "ridondante".

RAID0 prende il tuo blocco di dati, lo divide in tanti pezzi quanti ne hai (2 dischi → 2 pezzi, 3 dischi → 3 pezzi) e quindi scrive ogni pezzo di dati su un disco separato.

Ciò significa che un singolo errore del disco distrugge l'intero array (perché hai Parte 1 e Parte 2, ma nessuna Parte 3), ma fornisce un accesso al disco molto veloce.

Non viene spesso utilizzato in ambienti di produzione, ma potrebbe essere utilizzato in una situazione in cui si dispone di dati strettamente temporanei che possono essere persi senza ripercussioni. È usato piuttosto comunemente per i dispositivi di memorizzazione nella cache (come un dispositivo L2Arc).

Lo spazio totale su disco utilizzabile è la somma di tutti i dischi dell'array sommati (ad es. 3 dischi da 1 TB = 3 TB di spazio).

RAID 1


RAID 1

Buono quando: hai un numero limitato di dischi ma hai bisogno di ridondanza

Cattivo quando: hai bisogno di molto spazio di archiviazione

RAID 1 (aka Mirroring) prende i tuoi dati e li duplica in modo identico su due o più dischi (sebbene in genere solo 2 dischi). Se vengono utilizzati più di due dischi, le stesse informazioni vengono archiviate su ciascun disco (sono tutte identiche). È l'unico modo per garantire la ridondanza dei dati quando si hanno meno di tre dischi.

RAID 1 a volte migliora le prestazioni di lettura. Alcune implementazioni di RAID 1 leggeranno da entrambi i dischi per raddoppiare la velocità di lettura. Alcuni leggeranno solo da uno dei dischi, il che non fornisce ulteriori vantaggi di velocità. Altri leggeranno gli stessi dati da entrambi i dischi, garantendo l'integrità dell'array ad ogni lettura, ma ciò comporterà la stessa velocità di lettura di un singolo disco.

In genere viene utilizzato in server di piccole dimensioni con un'espansione del disco molto ridotta, ad esempio server 1RU che possono avere spazio solo per due dischi o in workstation che richiedono ridondanza. A causa dell'elevato sovraccarico di spazio "perso", può essere proibitivo in termini di costi con unità di piccola capacità, ad alta velocità (e ad alto costo), poiché è necessario spendere il doppio di denaro per ottenere lo stesso livello di archiviazione utilizzabile.

Lo spazio totale su disco utilizzabile è la dimensione del disco più piccolo dell'array (ad es. 2 dischi da 1 TB = 1 TB di spazio).

RAID 1


RAID 1E

Il livello RAID 1E è simile al RAID 1 in quanto i dati vengono sempre scritti su (almeno) due dischi. Ma a differenza di RAID1, consente un numero dispari di dischi semplicemente intercalando i blocchi di dati tra diversi dischi.

Le caratteristiche prestazionali sono simili a RAID1, la tolleranza ai guasti è simile a RAID 10. Questo schema può essere esteso a un numero dispari di dischi superiore a tre (possibilmente chiamato RAID 10E, sebbene raramente).

RAID 1E


RAID 10

Buono quando: vuoi velocità e ridondanza

Cattivo quando: non puoi permetterti di perdere metà dello spazio su disco

RAID 10 è una combinazione di RAID 1 e RAID 0. L'ordine di 1 e 0 è molto importante. Supponiamo che tu abbia 8 dischi, creerà 4 array RAID 1 e quindi applicherà un array RAID 0 sopra i 4 array RAID 1. Richiede almeno 4 dischi e i dischi aggiuntivi devono essere aggiunti in coppia.

Ciò significa che un disco di ciascuna coppia può fallire. Quindi se hai set A, B, C e D con dischi A1, A2, B1, B2, C1, C2, D1, D2, puoi perdere un disco da ogni set (A, B, C o D) e avere ancora un array funzionante.

Tuttavia, se si perdono due dischi dello stesso set, l'array viene completamente perso. Puoi perdere fino al 50% (ma non garantito) dei dischi.

Sono garantiti alta velocità e alta disponibilità in RAID 10.

RAID 10 è un livello RAID molto comune, in particolare con unità ad alta capacità in cui un singolo errore del disco rende più probabile un errore del secondo disco prima della ricostruzione dell'array RAID. Durante il ripristino, il degrado delle prestazioni è molto inferiore rispetto alla sua controparte RAID 5 in quanto deve solo leggere da un'unità per ricostruire i dati.

Lo spazio su disco disponibile è il 50% della somma dello spazio totale. (ad es. 8 unità da 1 TB = 4 TB di spazio utilizzabile). Se si utilizzano dimensioni diverse, verrà utilizzata solo la dimensione più piccola da ciascun disco.

Vale la pena notare che il driver raid software del kernel Linux chiamato md consente configurazioni RAID 10 con una quantità dispari di unità , ovvero un RAID 10 a 3 o 5 dischi.

RAID 10


RAID 01

Buono quando: mai

Brutto quando: sempre

È il contrario di RAID 10. Crea due array RAID 0, quindi inserisce un RAID 1 in alto. Ciò significa che è possibile perdere un disco per ogni set (A1, A2, A3, A4 o B1, B2, B3, B4). È molto raro vedere nelle applicazioni commerciali, ma è possibile farlo con il software RAID.

Per essere assolutamente chiari:

  • Se disponi di un array RAID10 con 8 dischi e uno muore (lo chiameremo A1), avrai 6 dischi ridondanti e 1 senza ridondanza. Se un altro disco si spegne c'è una probabilità dell'85% che l'array funzioni ancora.
  • Se si dispone di un array RAID01 con 8 dischi e uno muore (lo chiameremo A1), si avranno 3 dischi ridondanti e 4 senza ridondanza. Se un altro disco si spegne c'è una probabilità del 43% che l'array funzioni ancora.

Non fornisce velocità aggiuntiva rispetto a RAID 10, ma sostanzialmente meno ridondanza e dovrebbe essere evitato a tutti i costi.


RAID 5

Buono quando: vuoi un equilibrio di ridondanza e spazio su disco o hai un carico di lavoro in lettura per lo più casuale

Cattivo quando: carico di lavoro in scrittura casuale elevato o unità di grandi dimensioni

RAID 5 è stato il livello RAID più comunemente usato per decenni. Fornisce le prestazioni del sistema di tutte le unità dell'array (tranne che per le piccole scritture casuali, che comportano un leggero sovraccarico). Utilizza una semplice operazione XOR per calcolare la parità. In caso di guasto di una singola unità, è possibile ricostruire le informazioni dalle unità rimanenti utilizzando l'operazione XOR sui dati noti.

Sfortunatamente, in caso di guasto di un'unità, il processo di ricostruzione è molto dispendioso in termini di I / O. Maggiore è il numero di unità nel RAID, maggiore sarà il tempo necessario per la ricostruzione e maggiori saranno le possibilità di guasto di una seconda unità. Poiché entrambe le unità lente di grandi dimensioni hanno entrambi molti più dati da ricostruire e molte meno prestazioni per farlo, di solito non è consigliabile utilizzare RAID 5 con un valore di 7200 RPM o inferiore.

Forse il problema più critico con gli array RAID 5, quando utilizzati in applicazioni consumer, è che sono quasi garantiti guasti quando la capacità totale supera i 12 TB. Questo perché il tasso di errore di lettura (URE) irrecuperabile delle unità consumer SATA è uno ogni 10 14 bit, o ~ 12,5 TB.

Se prendiamo un esempio di un array RAID 5 con sette unità da 2 TB: quando un'unità si guasta, rimangono sei unità. Per ricostruire l'array, il controller deve leggere attraverso sei unità a 2 TB ciascuna. Guardando la figura sopra è quasi certo che si verificherà un altro URE prima che la ricostruzione sia terminata. Una volta che ciò accade, l'array e tutti i dati su di esso vengono persi.

Tuttavia, URE / perdita di dati / errore dell'array con RAID 5 nelle unità consumer è stato in qualche modo mitigato dal fatto che la maggior parte dei produttori di dischi rigidi ha aumentato le classificazioni URE delle unità più recenti a una su 10 15 bit. Come sempre, controlla la scheda tecnica prima di acquistare!

È inoltre indispensabile che RAID 5 sia protetto da una cache di scrittura affidabile (supportata da batteria). Questo evita il sovraccarico per le piccole scritture, nonché comportamenti instabili che possono verificarsi in caso di errore nel mezzo di una scrittura.

RAID 5 è la soluzione più economica per aggiungere spazio di archiviazione ridondante a un array, in quanto richiede la perdita di solo 1 disco (ad esempio, dischi da 12x 146 GB = 1606 GB di spazio utilizzabile). Richiede un minimo di 3 dischi.

RAID 5


RAID 6

Buono quando: vuoi usare RAID 5, ma i tuoi dischi sono troppo grandi o lenti

Cattivo quando: carico di lavoro in scrittura casuale elevato

RAID 6 è simile a RAID 5 ma utilizza due dischi di parità invece di uno solo (il primo è XOR, il secondo è un LSFR), quindi è possibile perdere due dischi dall'array senza perdita di dati. La penalità di scrittura è superiore a RAID 5 e si dispone di un disco in meno di spazio.

Vale la pena considerare che alla fine un array RAID 6 incontrerà problemi simili a un RAID 5. Unità più grandi causano tempi di ricostruzione maggiori e errori più latenti, portando infine a un fallimento dell'intero array e alla perdita di tutti i dati prima del completamento di una ricostruzione.

RAID 6


RAID 50

Buono quando: hai molti dischi che devono essere in un singolo array e RAID 10 non è un'opzione a causa della capacità

Cattivo quando: hai così tanti dischi che sono possibili molti errori simultanei prima del completamento delle ricostruzioni o quando non hai molti dischi

RAID 50 è un livello nidificato, molto simile a RAID 10. Combina due o più array RAID 5 e trasferisce i dati su di essi in un RAID 0. Ciò offre prestazioni e ridondanza su più dischi, purché si perdano più dischi da RAID 5 diversi array.

In un RAID 50, la capacità del disco è nx, dove x è il numero di RAID 5 con striping. Ad esempio, se un semplice RAID 50 a 6 dischi, il più piccolo possibile, se si disponessero di dischi 6x1TB in due RAID 5 che sono stati quindi sottoposti a striping per diventare un RAID 50, si disporrebbe di una memoria utilizzabile da 4 TB.


RAID 60

Buono quando: hai un caso d'uso simile a RAID 50, ma hai bisogno di più ridondanza

Cattivo quando: nell'array non è presente un numero sostanziale di dischi

Da RAID 6 a RAID 60 come da RAID 5 a RAID 50. In sostanza, hai più di un RAID 6 su cui i dati vengono quindi sottoposti a striping in un RAID 0. Questa configurazione consente fino a due membri di ogni singolo RAID 6 nel set fallire senza perdita di dati. I tempi di ricostruzione per gli array RAID 60 possono essere sostanziali, quindi di solito è una buona idea disporre di un hot spare per ciascun membro RAID 6 dell'array.

In un RAID 60, la capacità del disco è n-2x, dove x è il numero di RAID 6 con striping. Ad esempio, se un semplice RAID 60 a 8 dischi, il più piccolo possibile, se si disponessero di dischi 8x1TB in due RAID 6 che sono stati quindi sottoposti a striping per diventare un RAID 60, si disporrebbe di una memoria utilizzabile da 4 TB. Come puoi vedere, questo fornisce la stessa quantità di memoria utilizzabile che un RAID 10 darebbe su un array di 8 membri. Mentre RAID 60 sarebbe leggermente più ridondante, i tempi di ricostruzione sarebbero sostanzialmente più grandi. In genere, si desidera prendere in considerazione RAID 60 solo se si dispone di un numero elevato di dischi.


RAID-Z

Buono quando: stai usando ZFS su un sistema che lo supporta

Cattivo quando: le prestazioni richiedono accelerazione RAID hardware

RAID-Z è un po 'complicato da spiegare poiché ZFS cambia radicalmente l'interazione tra archiviazione e file system. ZFS comprende i ruoli tradizionali della gestione del volume (RAID è una funzione di un gestore di volumi) e del file system. Per questo motivo, ZFS può eseguire RAID a livello di blocco di archiviazione del file anziché a livello di strip del volume. Questo è esattamente ciò che fa RAID-Z, scrivere i blocchi di archiviazione del file su più unità fisiche tra cui un blocco di parità per ogni serie di strisce.

Un esempio può rendere questo molto più chiaro. Supponi di avere 3 dischi in un pool ZFS RAID-Z, la dimensione del blocco è 4KB. Ora scrivi un file sul sistema esattamente 16 KB. ZFS lo dividerà in quattro blocchi 4KB (come farebbe un normale sistema operativo); quindi calcolerà due blocchi di parità. Quei sei blocchi verranno posizionati sulle unità in modo simile a come RAID-5 distribuirà dati e parità. Questo è un miglioramento rispetto a RAID5 in quanto non è stata eseguita la lettura delle strisce di dati esistenti per calcolare la parità.

Un altro esempio si basa sul precedente. Supponiamo che il file fosse solo 4KB. ZFS dovrà ancora creare un blocco di parità, ma ora il carico di scrittura è ridotto a 2 blocchi. Il terzo disco sarà libero di soddisfare qualsiasi altra richiesta simultanea. Un effetto simile verrà visualizzato ogni volta che il file in fase di scrittura non è un multiplo della dimensione del blocco del pool moltiplicato per il numero di unità meno uno (ovvero [Dimensione file] <> [Dimensione blocco] * [Unità - 1]).

ZFS che gestisce sia la gestione del volume che il file system significa anche che non devi preoccuparti di allineare le partizioni o le dimensioni dei blocchi di striping. ZFS gestisce tutto ciò automaticamente con le configurazioni consigliate.

La natura di ZFS contrasta alcuni dei classici avvertimenti RAID-5/6. Tutte le scritture in ZFS vengono eseguite in modo copia su scrittura; tutti i blocchi modificati in un'operazione di scrittura vengono scritti in una nuova posizione sul disco, anziché sovrascrivere i blocchi esistenti. Se una scrittura non riesce per qualsiasi motivo o il sistema non riesce a metà scrittura, la transazione di scrittura si verifica completamente dopo il ripristino del sistema (con l'aiuto del registro degli intenti ZFS) o non si verifica affatto, evitando potenziali danni ai dati. Un altro problema con RAID-5/6 è la potenziale perdita di dati o il danneggiamento silenzioso dei dati durante le ricostruzioni; le zpool scruboperazioni regolari possono aiutare a rilevare la corruzione dei dati o a guidare i problemi prima che causino la perdita di dati e il checksum di tutti i blocchi di dati garantirà la cattura di tutta la corruzione durante una ricostruzione.

Lo svantaggio principale di RAID-Z è che è ancora un raid software (e soffre della stessa minore latenza sostenuta dalla CPU per calcolare il carico di scrittura invece di lasciare che un HBA hardware lo scarichi ). Questo potrebbe essere risolto in futuro dagli HBA che supportano l'accelerazione hardware ZFS.

Altre funzionalità RAID e non standard

Poiché non esiste alcuna autorità centrale che imponga alcun tipo di funzionalità standard, i vari livelli RAID si sono evoluti e sono stati standardizzati dall'uso prevalente. Molti venditori hanno prodotto prodotti che si discostano dalle descrizioni di cui sopra. È anche abbastanza comune per loro inventare una nuova terminologia di marketing per descrivere uno dei concetti di cui sopra (questo accade più frequentemente nel mercato SOHO). Quando possibile, cerca di convincere il fornitore a descrivere effettivamente la funzionalità del meccanismo di ridondanza (la maggior parte offrirà volontariamente queste informazioni, dato che in realtà non c'è più alcuna salsa segreta).

Vale la pena ricordare che esistono implementazioni simili a RAID 5 che consentono di avviare un array con solo due dischi. Memorizzerebbe i dati su una striscia e la parità sull'altra, simile a RAID 5 sopra. Ciò funzionerebbe come RAID 1 con l'overhead aggiuntivo del calcolo della parità. Il vantaggio è che è possibile aggiungere dischi all'array ricalcolando la parità.


Al momento non ho tempo per aggiungere queste informazioni, ma spiegare come è possibile utilizzare il tasso di errore di lettura irrecuperabile per stimare il set RAID 5 più grande che è possibile utilizzare con dischi specifici sarebbe una buona idea.
Hubert Kario,

Ottimo riassunto! Ho un'aggiunta per quanto riguarda RAID5 vs. RAID6: spesso le persone che considerano l'affidabilità generale (possibilità di un guasto irreversibile dell'array) di array popolati con un gran numero di mandrini o dischi di capacità molto elevata sceglieranno RAID6. Lo fanno in base alla probabilità che si verifichi un secondo errore durante la ricostruzione del primo disco. La mia regola empirica personale è RAID6 quando il numero di mandrini è maggiore di 8 o quando le singole unità sono superiori a 1 TB. Non sono stato in grado di trovare un calcolatore canonico, ma Google e il noto tempo di ricostruzione aiuteranno a calcolare bene.
JGurtz,

3
Potrebbe valere la pena aggiungere una nota qui che il software Linux RAID10 non è standard. Permette layout insoliti e potenzialmente utili. en.wikipedia.org/wiki/Non-standard_RAID_levels#Linux_MD_RAID_10
Zoredache,

Potrebbe valere la pena includere il chiarimento della penalità di scrittura e della coalescenza a strisce. RAID 2 o 3 potrebbe meritare una menzione d'onore, ma non conosco implementazioni "reali". Tuttavia - NetApp utilizza ancora RAID4 (e RAID-DP è sostanzialmente RAID-4 con un'unità di parità aggiuntiva.)
Sobrique,

1
RAID 6: LSFR dovrebbe essere LFSR (registro a scorrimento a retroazione lineare)?
un CVn del

58

Anche RAID UN MILIONE !!!!

128 Dischi così le letture sarebbero veloci, orribili scritture ma molto affidabili immagino, oh e otterresti 1/128 dello spazio disponibile, quindi non eccezionale dal punto di vista del bilancio. Non farlo con le unità flash, ho provato a dare fuoco all'atmosfera ...

inserisci qui la descrizione dell'immagine


7
Oh Dio. Chopper sta perdendo la testa adesso.
MDMarra,

4
Ho sbagliato la mia matematica?
Chopper 3

6
Sai che lo costruirò davvero?
Chopper 3

33
Raid 1000000 richiederebbe un minimo di 128 dischi, ma fornirebbe 64 dischi di spazio di archiviazione, avrebbe avuto le stesse prestazioni di scrittura nel caso peggiore di Raid 1 e ogni 2 guasti all'unità adiacenti avrebbero ucciso l'array. Descrivevi il Raid 0111111, che avrebbe avuto un'affidabilità abbastanza buona (il Raid 11111110 avrebbe avuto una maggiore affidabilità in media.)
Kevin Cathcart,

5
Oh amorevole. Livelli RAID binari. Qual è il prossimo?
un CVn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.