RAID5 è più robusto di RAID1


12

Sto per sostituire un vecchio array RAID5 hardware con un array RAID1 software Linux. Stavo parlando con un amico e ha affermato che RAID5 era più robusto di RAID1.

La sua affermazione era che con RAID5, in lettura i dati di parità venivano letti per assicurarsi che tutte le unità restituissero i dati corretti. Ha inoltre affermato che su RAID1 errori che si verificano su un'unità passeranno inosservati perché tale controllo non viene eseguito con RAID1.

Posso vedere come questo potrebbe essere vero, ma posso anche vedere che tutto dipende da come vengono implementati i sistemi RAID in questione. Sicuramente un sistema RAID5 non deve leggere e controllare i dati di parità su una lettura e un sistema RAID1 potrebbe leggere altrettanto facilmente da tutte le unità in lettura per verificare che contenessero tutti gli stessi dati e quindi raggiungere lo stesso livello di robustezza ( con una corrispondente perdita di prestazioni).

Quindi la domanda è: cosa fanno realmente i sistemi RAID5 / RAID1 nel mondo reale? I sistemi RAID5 controllano i dati di parità nelle letture? Esistono sistemi RAID1 che leggono da tutte le unità e confrontano i dati in lettura?

Risposte:


22

RAID-5 è una soluzione di tolleranza agli errori, non una soluzione di integrità dei dati .

Ricorda che RAID è l'acronimo di Redundant Array of Inexpensive Disks . I dischi sono l'unità atomica di ridondanza: al RAID non interessano davvero i dati. Acquistate soluzioni che impiegano filesystem come WAFL o ZFS per affrontare la ridondanza e l'integrità dei dati.

Il controller RAID (hardware o software) non verifica la parità dei blocchi in fase di lettura. Questo è il rischio maggiore di eseguire RAID-5: se si verifica un errore multimediale parziale su un'unità (una situazione in cui un blocco danneggiato non è contrassegnato come "cattivo"), ora ci si trova in una situazione in cui i dati sono stati silenziosamente corrotti.

RAID-Z / ZFS di Sun in realtà fornisce integrità dei dati end-to-end e sospetto che altri file system e sistemi RAID forniranno questa funzionalità in futuro poiché il numero di core disponibili sulle CPU continua ad aumentare.

Se stai usando RAID-5, secondo me sei a buon mercato. RAID 1 offre prestazioni migliori, offre una maggiore protezione e non influisce sulla produzione in caso di guasto di un'unità, con una differenza di costo marginale.


6

Credo che la risposta dipenda dal controller / software, ad esempio è abbastanza comune per i sistemi di mirroring leggere solo un disco da una coppia e quindi essere in grado di fornire dati errati. Noto che se i tuoi risultati dipendono da quei dati il ​​momento in cui i dati vengono scritti su entrambi i dischi viene danneggiato su entrambi i dischi .....

Dal pdf in SATAssure (tm) Plus:

"La rivoluzionaria tecnologia SATAssure offre protezione e affidabilità dei dati di classe enterprise utilizzando unità disco SATA economiche di grande capacità. SATAssure opera su tutte le operazioni di lettura, garantendo l'integrità dei dati e corregge automaticamente i problemi in tempo reale, il tutto senza la penalità di prestazioni o capacità riscontrata nella tradizione sistemi di archiviazione. Riduzione degli RMA di unità con una nuova capacità di spegnere e riaccendere singole unità. "

È interessante notare che alcuni produttori fanno storie sul fatto che calcolano sempre la parità, questo mi porta a pensare che sia relativamente raro sui controller hardware. Si noti inoltre che sistemi come ZFS e WAFL (netapp) eseguono calcoli di parità per ogni lettura.


Quel link sembra interessante, ma in realtà dice esplicitamente ovunque su quella pagina o brochure che ricalcolano la parità su tutte le letture?
andynormancx,

Ho aggiunto un preventivo dal pdf. Si noti che le scatole S2A sono di fascia alta silenziosa.
James,

3

Con RAID-5, la parità viene generalmente letta solo sulla ricostruzione dell'array, non sulla lettura generale. Ciò significa che le letture possono essere più casuali e più veloci (poiché non è necessario leggere e calcolare la parità per un'intera striscia ogni volta che si desidera 1K di dati dall'array).

Con RAID-1, in genere le letture vengono fatte passare attraverso le unità ogni volta che è possibile per migliorare le prestazioni di lettura. Come hai notato, se il sottosistema RAID tenta di leggere entrambe le unità e differiscono, il sottosistema non ha modo di sapere quale unità è errata.

La maggior parte dei sottosistemi RAID dipendono dall'unità per informare il controller o il computer quando sta andando male.

Quindi RAID-5 è "più robusto"? La risposta è, dipende. RAID-5 consente di ottenere una memoria più efficace per un determinato numero di dischi rispetto a RAID-1; sebbene per fornire una memoria efficace oltre un disco, RAID-1 deve essere combinato con RAID-0, sia come una serie di array RAID-1, sia come RAID-1 su due strisce RAID-0.

(Preferisco il primo, poiché un guasto a una singola unità eliminerà un singolo elemento RAID-1, il che significa che solo una singola unità richiederà la ricostruzione. Con quest'ultima, un guasto a una singola unità uccide un elemento RAID-0, il che significa che HALF il i dischi saranno coinvolti nella ricostruzione quando l'unità viene sostituita.)

Questo porta anche a discussioni su "scritture fantasma", in cui una scrittura viene segnalata come riuscita dall'elettronica dell'unità, ma per qualsiasi motivo la scrittura non arriva mai sul disco. Questo succede. Considerare che per un array RAID-5, quando si verifica un guasto dell'unità, l'array DEVE leggere TUTTI i settori su TUTTE le unità sopravvissute PERFETTAMENTE al fine di ripristinare. NetApp afferma che le grandi dimensioni delle unità più le grandi dimensioni dei gruppi raid significano che in alcuni casi le probabilità di guasto durante una ricostruzione possono essere pari a una su dieci. Pertanto, stanno raccomandando che dischi di grandi dimensioni in grandi gruppi RAID utilizzino la doppia parità (che ritengo sia correlata a RAID-6).

L'ho imparato in una discussione tecnica su NetApp tenuta da un paio di loro ingegneri.


Non userei il termine "più efficace" ... "più capacità" sarebbe più appropriato. Nella mia mente, una soluzione che rende più probabile la perdita dei miei dati non è più efficace.
duffbeer703,

Tutto è un compromesso in termini di costi. RAID-5 è più conveniente dal punto di vista dello storage, mentre RAID-1 o RAID-1 + 0 (0 + 1) è più efficace.
David Mackintosh,

L'altro motivo per preferire 1 + 0 a 0 + 1 è che 1 + 0 può sopravvivere a 4 dei 6 possibili "una seconda unità si guasta prima che la prima unità guasta venga sostituita e l'array ricostruito" scenari in cui 0 + 1 può sopravvivere solo 2 dei 6. Sebbene 0 + 1 possa sopravvivere a un guasto del controller su un braccio (dove 0 + 1 non può), questo è molto più raro del guasto di un'unità (anche un guasto di più unità).
David Spillett,

RAID-DP (implementazione doppia parità di NetApp) è un RAID-6. RAID-6 (a differenza di RAID-5) è definito funzionalmente come un RAID che può sopravvivere a due guasti del disco. RAID-DP differisce dal tipico RAID-6 in quanto non distribuisce la parità - WAFL non scrive casualmente scritture casuali, quindi la distribuzione della parità non offre alcun vantaggio.
Capitano Segfault,

3

Nessuna implementazione RAID comune controlla in genere la parità sull'accesso ai dati. Non ne ho mai visto uno. Alcune implementazioni RAID5 leggono i dati di parità per le letture in streaming per prevenire ricerche inutili (più economico buttare via ogni ennesimo blocco piuttosto che indurre l'unità a cercare su ogni ennesimo blocco). Le implementazioni RAID1 non possono controllare perché leggono le prestazioni di entrambi i dischi (beh, nella stragrande maggioranza delle implementazioni RAID1. Una manciata che puoi scegliere, che può essere utile se un disco è molto più lento dell'altro e non è ad alta intensità di scrittura caricare.)

Alcuni controllano con uno 'scrubbing' di fondo. In tal caso, RAID6 vince in quanto può recuperare i dati e RAID5 e RAID1 si trovano nella stessa situazione, è possibile identificare ma non correggere. (Questo non è strettamente vero in quanto l'unità potrebbe rilevare un CRC errato, restituire un errore e consentire di riscrivere il blocco dalla parità. Questo accade abbastanza comunemente).

Se si desidera l'integrità dei dati, archiviare un hash con ogni blocco (o record, o comunque sia suddiviso) a livello di applicazione. Sybase e Oracle fanno questo (credo a livello di pagina) e l'ho visto in molte occasioni salvare un gigantesco database. (ad es. il controller inizia a restituire dati errati, sybase si arresta in modo anomalo con un errore evidente, pertanto non sono state eseguite scritture quando il database era in esecuzione su hardware guasto con uno stato incoerente).

L'unica soluzione di filesystem e l'unica soluzione RAID che fa questo per te è ZFS.


0

Il tuo amico sta parlando del bit di parità coinvolto in alcuni livelli RAID o del checksum dei dati scritti su disco?

Se sono in parità, RAID1 non ha un bit di parità: hai due copie degli stessi dati. Dovrebbe esserci un checksum eseguito dal disco per garantire che ciò che è stato scritto sul disco corrisponda a ciò che è venuto giù dal filo

RAID5 ha un bit di parità. Ciò significa che puoi perdere un disco nel tuo set RAID e continuare come se nulla fosse successo. Tuttavia, dovrebbe essere eseguito un checksum dei dati scritti sul disco per assicurarsi che corrisponda a ciò che è venuto giù dal filo

In questo caso, i checksum sono totalmente indipendenti dal RAID che può o meno essere eseguito con un sacco di dischi

Modificato per aggiungere: hai menzionato il passaggio da RAID hardware a RAID software. La preferenza è sempre RAID hardware su RAID software. Se riesci ad acquistare l'hardware necessario per fornire il livello RAID che desideri implementare, ti suggerirei di provarlo. Ciò consentirà a tutti i calcoli di parità di essere eseguiti dalla scheda RAID, anziché dall'host. Pertanto liberando risorse sull'host. Non ci sono altri vantaggi, ma al momento mi sfuggono


Stava parlando della parità. Stava sostenendo che su RAID5 le informazioni sulla parità venivano recuperate su una lettura e confrontate con i dati provenienti dagli altri dischi per verificare che non vi fossero errori di lettura.
andynormancx,

5
Non sono d'accordo con la tua raccomandazione di RAID hardware su software in tutti i casi. Con l'hardware moderno, il software RAID può essere veloce quanto l'hardware se il tuo server ha un sacco di CPU di riserva (che il mio avrà sempre). Inoltre, l'hardware RAID ha alcuni aspetti negativi, il principale è che in una situazione di recupero è necessaria una scheda RAID corrispondente. Con il software RAID è possibile estrarre un'unità da una macchina, inserirla in un'altra e partire senza ottenere una nuova scheda RAID che corrisponda esattamente a quella vecchia.
andynormancx,

Stavo cercando di capire in quale contesto stava parlando. A quanto ho capito, i checksum vengono utilizzati durante la scrittura del disco (indipendentemente dal RAID). La parità viene utilizzata per posizionare blocchi di dati su dischi diversi e per ricostruire un array in caso di guasto del disco. La parità non viene utilizzata su tutti i livelli RAID
Ben Quick,

1
Si prega di consultare en.wikipedia.org/wiki/… per la discussione sul software Vs hardware RAID Ovviamente, l'implementazione scelta dipende dal proprio ambiente e dalle proprie esigenze. La mia preferenza è l'hardware RAID rispetto al software RAID
Ben Quick,

Capisco, dimentica di aver mai menzionato i checksum. Ho aggiornato la domanda per chiarire la confusione. La domanda è se i sistemi RAID5 in genere controllano i dati di parità nelle letture.
Andynormancx,

0

Sto per sostituire un vecchio array RAID5 hardware con un array RAID1 software Linux. Stavo parlando con un amico e ha affermato che RAID5 era più robusto di RAID1.

Ciò dipende dal tipo di implementazione del raid (hw / sw), dai dischi, dal controller del raid, se presente, e dalle sue caratteristiche.

La sua affermazione era che con RAID5, in lettura i dati di parità venivano letti per assicurarsi che tutte le unità restituissero i dati corretti. Ha inoltre affermato che su RAID1 errori che si verificano su un'unità passeranno inosservati perché tale controllo non viene eseguito con RAID1.

ha un certo senso, ma non proprio :) ciò che accade è: se vengono scritti dati errati, su un mirror verranno inviati a entrambe le unità e su raid5 parità verrà generato e diffuso tra le unità. il controllo della lettura / scrittura dei dati viene eseguito dal firmware del disco e del controller e non ha nulla a che fare con i livelli di raid.

So the question is, what do RAID5/RAID1 systems in the real world

davvero? I sistemi RAID5 controllano i dati di parità nelle letture? Esistono sistemi RAID1 che leggono da tutte le unità e confrontano i dati in lettura?

come ho detto, i controlli non fanno parte dell'algoritmo raid, anche se alcuni controller potrebbero implementare qualcosa di aggiuntivo.

la solidità dell'array dipende dalla qualità delle unità (unità da 2,5 "tendono a vivere più a lungo di 3,5" a causa della riduzione dei tassi di RV; nella mia esperienza, MAI acquistare unità SCSI / SAS maxtor - hanno orribili problemi con il firmware), l'ambiente (controllo della temperatura e dell'umidità), il controller stesso (ha una BBU? il firmware è aggiornato? è un vero raid o fakeraid?), la quantità di PSU nel server, la qualità dell'UPS ecc.


Temo che tu non abbia risposto alla domanda, che è molto precisa su ciò che fanno le reali implementazioni reali di RAID5 rispetto al controllo dei dati di parità su una lettura.
andynormancx,

0

Non lo so , ma mi sembra improbabile che lo sia. Ricorda che per calcolare la parità, dovrà leggere il blocco da tutte le unità nel tuo set RAID e quindi fare matematica per determinare la correttezza, mentre in caso contrario, fa solo la lettura di un'unità.

Inoltre, se la tua lettura è per meno di un blocco, una lettura di controllo di parità dovrebbe estenderla a un blocco completo, mentre una lettura regolare no. (Supponendo, ovviamente, che il blocco RAID sia più grande dei blocchi dei dischi. Penso che le letture dal disco debbano essere di blocchi completi. Altrimenti, il mio punto è ancora più valido.)

Quindi, dal mio punto di vista, sì, potrebbe farlo, ma se lo facesse, sarebbe inefficiente e dubito che qualcuno sia implementato in quel modo.

Ancora una volta, tuttavia, non ho alcuna conoscenza personale delle implementazioni effettive.


0

I sistemi RAID5 controllano i dati di parità nelle letture?

Non ha davvero senso. Cosa fai quando trovi una mancata corrispondenza di parità? (Come fai a sapere quale blocco è sbagliato?)

Per letture casuali il controllo della parità sarebbe costoso. Normalmente potresti servire una lettura casuale semplicemente guardando un singolo disco, ma se vuoi controllare la parità dovresti leggere tutti i dischi su ogni lettura. (Ciò potrebbe avere ancora senso se ci fosse qualcosa che potresti fare al riguardo!)

Si noti che anche RAID-1 presenta questo problema, il che ha senso quando si considera un RAID-1 come un RAID-5 a due dischi.


0

Ho pensato un po 'all'affermazione che RAID-1 dovrebbe essere più veloce nelle letture rispetto a RAID-5, poiché legge contemporaneamente su entrambe le unità.

Ora, poiché la parità non viene letta su RAID-5 a meno che l'array non abbia bisogno di essere ricostruito, in realtà è uguale a un array RAID-0 in termini di lettura, ho ragione?

RAID-0 è generalmente considerato il livello più veloce (anche se dovrebbe essere chiamato "AID", poiché non c'è ridondanza di sorta). :-D

Parlando di RAID software Linux, un semplice test - usando hdparm - conferma questa teoria: i miei array RAID-5 mostrano sempre una velocità di lettura superiore rispetto ai miei array RAID-1.

MA: un array degradato funziona molto più lentamente di un normale array in esecuzione, a quanto pare! Ho appena provato questo con Fedora 9, in esecuzione su 4 unità WD da 1 TB con diversi livelli RAID. Ecco i risultati:

RAID-5 degradato: velocità di lettura 43 MB / sec RAID-5 normale: velocità di lettura 240 MB / sec (!) RAID-1: velocità di lettura 88 MB / sec

Poiché la perdita consentita di dischi è la stessa in RAID-1 e RAID-5 (vale a dire uno), penso che RAID-5 dovrebbe superare RAID-1 in tutti gli aspetti, offrendo maggiore capacità in relazione al numero di dischi utilizzati in array e stesso tolleranza ai guasti. Ciò porta a una conclusione in cui si afferma che RAID-6 supera ogni altro livello RAID, poiché è veloce come RAID-0 in lettura normale (nessuna lettura di parità dai due dischi di parità) e comunque tollerante ai guasti in caso di perdita di un membro dell'array. ;-)


Alcune cose interessanti, ma hai ripetuto l'errore di RAID1 che sento sempre. RAID1 non deve significare che può sopravvivere solo a un singolo errore del disco. Non è necessario avere solo due dischi nell'array RAID1. Ad esempio, hai un array RAID1 con 3 dischi che sopravviverà a due guasti del disco e anche le prestazioni di lettura dovrebbero aumentare ( se il tuo sistema RAID sta leggendo da più unità su una lettura).
andynormancx,

-1

Personalmente, penso che il test finale di un sistema RAID sia quanto bene possa resistere ai guasti. In questo caso, sia RAID5 che RAID1 sono in grado di gestire guasti a singola unità, ma nessuno dei due sopravviverà più di così.

Per quanto riguarda la tua domanda sul bit di parità, penso che dipenda dai driver RAID. Verrà sicuramente letto durante la ricostruzione, ma con un uso normale, non avrebbe molto senso farlo poiché la larghezza di banda verrebbe sprecata su di esso.


Temo che la tua risposta equivale a "Non so se nessuna implementazione RAID5 controlla la parità su una lettura" e quindi non risponde alla domanda.
andynormancx,

È una risposta valida perché nessuno lo saprà per certo tranne la persona che ha effettivamente scritto il driver.
sybreon,

-2

ma non sono un professionista dello storage 24/7, il controller controlla sempre ciò che viene scritto e letto dai dischi. cioè con raid1 hai delle scritture leggermente peggiori rispetto a un singolo disco ma le tue letture sono un po 'più veloci (deve scrivere un file su due dischi ma può leggere una parte dal disco uno e l'altra parte dal disco due).

Forse puoi disabilitare il controllo dei dati per un livello di incursione, ma qual è il punto di ciò, tutti i livelli di incursione (tranne 0) sono lì per darti ridondanza dei dati, quindi perché ostacolarti.

Con il raid 5 hai bisogno di almeno 3 dischi e puoi usare i dischi N-1 per i dati. Con il raid 1 hai sempre bisogno di un numero pari di dischi e puoi usare dischi N / 2 per i dati.

Quindi nei raid più grandi il livello 5 ti dà più spazio mentre il raid 1 ti dà più ridondanza.

Se per più robusto intendi quale offre più ridondanza, rispetto al raid 1.

a seconda della dimensione del raid, devi anche considerare i tempi di ricostruzione in caso di errore (quanti dischi ci sono, quanto è grande un disco, che tipo di raid (software, falso, hardware), quale livello ecc. )

Quindi non è davvero possibile dire che un raid sia più robusto di un altro (forse il raid 6 è sempre più robusto del raid 5 a costo di perdere spazio di archiviazione)


1
Temo che questo non risponda davvero alla mia domanda, la mia domanda è molto precisa se le tipiche implementazioni RAID5 controllano o meno i dati di parità in lettura. E per la cronaca RAID1 non ha bisogno di un numero pari di dischi. Puoi tranquillamente avere un array RAID1 con più di due dischi, aumentando così la ridondanza riducendo la velocità di scrittura.
Andynormancx,

1
"il controller controlla sempre ciò che viene scritto e letto dai dischi." Questo non è il caso in cui il controller potrebbe leggere da entrambi i dischi ma alcuni controller restituiscono i primi dati che ottengono.
James,

Penso che sia possibile dire che RAID1 ha bisogno di un numero pari di dischi e che un terzo mirror è diverso da RAID1. Così poche implementazioni supportano un terzo mirror che la terminologia non ha mai standardizzato.
carlito,
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.