Pro e contro del software Parity-RAID (ad es. RAID5)


8

Di recente mi è stato detto di alcuni problemi riguardanti Parity-RAID senza cache non volatile. I controller HW più costosi dispongono di cache alimentate a batteria per completare le operazioni di scrittura in caso di interruzione dell'alimentazione. Ora, alcune persone dicono che un tale errore, forse in combinazione con un array degradato, potrebbe uccidere l'intero file system. Altri sostengono che tali problemi sono obsoleti e / o idee sbagliate .

Sfortunatamente, nessuno fornisce riferimenti concreti e né una ricerca di md RAID e cache non volatile , né la memorizzazione nella cache bitmap fornisce risposte affidabili sull'opportunità o meno di md-RAID5.

Qualche informazione al riguardo?


1
Il mdraid di Linux ha un diario, che è almeno sicuro in caso di arresto improvviso (es. Arresto anomalo del sistema o spegnimento simultaneo di tutti i dischi) o nel caso di RAID-1. Non so se il suo RAID- [56] affronta tutte le forme di spegnimento graduale.
Gilles 'SO- smetti di essere malvagio' l'

2
@Gilles, non ha un diario, ma ha una bitmap con intento di scrittura opzionale. Ciò accelera solo il processo di risincronizzazione quando il sistema viene ripristinato, poiché identifica quali aree devono essere risincronizzate e quali aree possono essere ignorate.
psusi,

@psusi Sono tornato e ho verificato ciò che avevo ricercato qualche mese fa . Per quanto ho capito, la bitmap con intento di scrittura (non un diario, errore mio) fa più che accelerare la risincronizzazione, indica quale dei componenti ha un blocco sporco, quindi è sufficiente per garantire la coerenza del blocco su RAID-1 ma non su RAID-5 (dove potresti non avere abbastanza dischi sia nel vecchio che nel nuovo stato per ripristinare entrambi gli stati).
Gilles 'SO- smetti di essere malvagio' l'

1
@Gilles Non sono sicuro di cosa intendi per "coerenza". Sembra che tu sia appeso sull'intera striscia sia nello stato prima dell'inizio della scrittura, sia nello stato successivo. Questo non è mai garantito ed è del tutto probabile che non si verifichi in caso di interruzione dell'alimentazione nel mezzo della scrittura. Spetta al filesystem gestirlo come su un singolo disco; usando il diario.
psusi,

Risposte:


4

Suppongo che il software RAID di Linux sia affidabile come una scheda RAID hardware senza BBU e con la cache di write-back abilitata. Dopotutto, i dati non impegnati in un sistema RAID software risiedono nella cache del buffer del kernel, che è una forma di cache di riscrittura senza backup della batteria.

Dal momento che ogni scheda RAID-5 hardware che abbia mai usato consente di abilitare la memorizzazione nella cache di write-back senza avere una BBU, mi aspetto che il software RAID-5 possa funzionare bene per le persone con un certo livello di tolleranza al rischio.

ObWarStory:

Detto questo, ho sperimentato personalmente una grave perdita di dati a causa della mancanza di BBU su una scheda RAID-5 sebbene la memorizzazione nella cache di write-back fosse abilitata. (Neanche UPS. Non urlare a me, non alla mia chiamata.)

Il mio capo mi ha chiamato in preda al panico mentre ero in vacanza perché uno dei nostri sistemi di produzione non sarebbe tornato dopo un'interruzione di corrente. Avrebbe finito le cose per provare. Ho dovuto staccarmi dal lato della strada, estrarre il laptop, attivare il tethering WiFi sul mio telefono, sshnel sistema colpito e sistemarlo, mentre la mia famiglia era seduta lì con me sul lato della strada fino a quando ho finito ripristino di una tabella di database con roached dal backup. (All'epoca eravamo a circa un miglio dalla perdita della ricezione cellulare).

Allora dimmi: quanto pagheresti per una scheda RAID + BBU ora ?


Bene - ho cancellato il mio commento. Ma un raid senza BBU dovrebbe scrivere, no? Questo è almeno ciò che fanno i controller PERC quando la batteria apprende e scende al di sotto della soglia.
Nils,

Sì, senza una BBU o con una BBU morta, la scheda RAID scrive ancora i dati. Quello che non fa è ricordare ciò che era nel buffer di scrittura quando l'alimentazione al server si interrompe. Poiché il RAID dipende dalla coerenza tra i bit ridondanti, viene confuso quando diventa incoerente. Pertanto, un'interruzione di corrente durante la scrittura del RAID rischia di danneggiare qualcosa sul RAID, poiché il controller è costretto a scegliere una delle due o più copie dei dati, senza sapere quale sia corretta.
Warren Young,

3

Solo un avviso: le operazioni di scrittura RAID-5/6 richiedono un tempo CPU significativo mentre l'array è degradato. Se il tuo server è già completamente caricato quando un disco si guasta, potrebbe cadere in un abisso di insensibilità. Tale problema non si verificherà con un controller RAID hardware. Quindi sconsiglio vivamente di utilizzare il software RAID-5/6 su un server di produzione. Per una workstation o un server leggermente caricato, va bene però.


3

SW RAID ha una modalità di errore: se il server si interrompe a metà di una scrittura, è possibile ottenere una striscia danneggiata. Un controller RAID HW con una BBU non è poi così costoso e manterrà i blocchi sporchi fino a quando non sarà possibile riavviare i dischi.

La BBU nella cache non garantisce le scritture in caso di interruzione dell'alimentazione (ovvero non alimenta i dischi). Alimenta la cache per alcuni giorni fino a quando non è possibile riavviare i dischi. Quindi il controller scaricherà tutti i buffer sporchi sul disco.

Alcune note su SW vs. HW RAID-5

  1. Le scritture su un volume SW RAID-5 possono essere lente se la cache write-through viene utilizzata con il blocco degli I / O, poiché la chiamata non ritorna fino al completamento dell'intero I / O. Un controller RAID HW con BBWC può ottimizzarlo notevolmente, in modo da poter vedere prestazioni sostanzialmente migliori.

  2. L'ultima volta che ho visto non è stato possibile eseguire l'I / O diretto (ovvero DMA a copia zero) su un volume RAID SW. Questo può essere cambiato ed è realmente rilevante solo per applicazioni come i gestori di database che utilizzano partizioni non elaborate.

  3. Un moderno controller RAID SAS può estrarre o spingere 1 GB / sec o più di dati da un array di dischi, in particolare se formattato con una dimensione di striping grande (diciamo 256kb). Ho anche confrontato un vecchio ASR-2200 Adaptec a velocità che indicava che stava praticamente saturando entrambi i suoi canali scsi a 600 MB / sec + in aggregato (dischi 10x 15k) con un carico di CPU molto ridotto sul computer host. Non sono sicuro che potresti ottenere questo dal software RAID-5 senza un carico eccessivo della CPU, anche su una macchina moderna. Forse potresti leggerlo velocemente.

  4. La configurazione per l'avvio da un volume RAID HW è semplice: il volume RAID è trasparente all'O / S.

Un controller RAID di fascia bassa di un fornitore di livello 1 come adaptec non è così costoso ai prezzi di vendita al dettaglio e può essere acquistato per noccioline fuori eBay. Ma ricorda, se acquisti di seconda mano, segui i fornitori di livello 1 e assicurati di conoscere il modello e verificare la disponibilità dei conducenti dal loro sito web.

Modifica: dal commento di @ psusi, assicurati di non avere un controller fakeraid (trasparente SW RAID nascosto nel driver), ma la maggior parte delle offerte dai nomi più grandi (Adaptec, 3Ware o LSI) non sono unità fakeraid. Tutto ciò che può prendere un BBU non sarà falso.


Se il potere si interrompe nel mezzo di una scrittura, si ottiene una striscia fuori sincrono non corrotta. Una striscia non sincronizzata significa solo che la parità non è aggiornata, quindi quando l'array è montato, la parità deve essere aggiornata. Anche quei controller "raid" che si possono avere per le arachidi sono spesso falsi; hanno estensioni di bios rom e driver di Windows che fanno il raid nel software.
psusi,

@psusi - La maggior parte dei controller ASR-2200 acquistati qualche anno fa costava meno di 100 USD e sono controller RAID HW pukka. Non credo che Adaptec realizzi affatto controller fakeraid. Puoi ottenere abbastanza facilmente controller RAID Adaptec, 3Ware o LSI SAS a 4 o 8 porte su ebay per poche centinaia di dollari.
ConcernedOfTunbridgeWells,

Non chiamerei qualche centinaio di dollari per un prodotto usato da una fonte sconosciuta "penny"; che indica di più lungo la linea di $ 50- $ 100 per un nuovo prodotto. I dispositivi di quella classe sono generalmente falsi.
psusi,

@psusi - Stai cercando di respingere un argomento che non ho mai fatto; Non ho mai usato la parola "penny". Per favore, non ricorrere agli argomenti di paglia - gli esempi che ho usato non sono controllori falsi.
Preoccupato di

1

Se hai i dati nella cache ma non ancora sul disco e l'alimentazione si interrompe, i dati scompariranno e molto probabilmente il tuo disco si troverà in uno stato incoerente. La probabilità non è molto alta a meno che tu non abbia un sistema che scrive costantemente, ma non vorrei ancora scommettere i miei dati sui giochi di probabilità.

Una svolta interessante sarebbe quella di creare un filesystem principale su RAID5 / 6 ma mettere un journal su un disco normale, quindi i dati vengono prima scaricati sul disco normale. Le prestazioni andrebbero probabilmente al crapper poiché si sarebbe limitati alla velocità di scrittura di un singolo disco, ma l'affidabilità aumenterebbe. Quindi immagino in una situazione in cui le tue prestazioni di scrittura non sono importanti, ma la tua lettura è che potrebbe funzionare bene.

Oppure potresti semplicemente spendere altri 100 $ e ottenere la carta con BBU, o un piccolo UPS, ed evitare del tutto tutte queste complicazioni;)


Cosa ne pensi di un diario su un SSD veloce?
user773568,

Lo farebbe, ma in quel momento stai pagando più di un controller decente in primo luogo;) Inoltre, la velocità aumenta, ma l'affidabilità diminuisce, perché la maggior parte degli SSD muoiono molto rapidamente.
Marcin,

1
@Marcin su cosa ti basi? Non sembrano avere una durata di progettazione specificata più breve, e ne ho avuto uno da oltre un anno e ho usato solo il 5% dei suoi cicli di scrittura.
psusi,

@MarcinWell Quando si dice affidabilità, è la disponibilità o la disponibilità? Non mi aspettavo che perdere il mio diario minacciasse i dati complessivi. Vero? In ogni caso, ho intenzione di mettere OS e Swap su un SSD più piccolo, per motivi di rumore e risparmio energetico. Il RAID può andare a dormire in quel modo.
user773568,

Gli SSD MLC hanno una storia di problemi di affidabilità. Le unità SLC sono molto più affidabili, ma anche molto più costose. Un white paper sull'affidabilità dell'SSD può essere trovato qui
Preoccupato da

1

Il raid del software mdadm di Linux è progettato per essere affidabile quanto un raid hardware con cache supportata da batteria. Non ci sono problemi con improvvisa perdita di energia, oltre a quelli che si applicano anche all'improvvisa perdita di potenza su un singolo disco.

Quando il sistema viene ripristinato dopo un'interruzione dell'alimentazione, l'array verrà risincronizzato, il che significa sostanzialmente che la parità viene ricalcolata per corrispondere ai dati scritti prima dell'interruzione dell'alimentazione. Ci vuole del tempo, ma davvero, non è un grosso problema. Il tempo di risincronizzazione può essere notevolmente ridotto abilitando la bitmap con intento di scrittura.


1
Sembra un po 'ottimista. In che modo una soluzione software pura può essere affidabile come una cache con batteria?
user773568,

1
Ci sono cose brutte che possono accadere a un array RAID che non può accadere a un singolo disco. Con un singolo disco, ogni settore è nel vecchio o nel nuovo stato. Ad esempio con RAID-5 su dischi 4 + 1, cosa succede se il settore 42 dei dischi 1 e 2 si trova nel vecchio stato e il settore 42 dei dischi 3, 4 e 5 si trova nel nuovo stato? Né il vecchio stato né il nuovo stato sono recuperabili. Non so se Linux adotti misure per evitarlo, e questa è la domanda.
Gilles 'SO- smetti di essere malvagio' il

@ user773568 umm ... Ho appena spiegato come?
psusi,

@Gilles hai appena riformulato lo stesso caso del singolo disco. Alcuni settori si trovano nel vecchio stato e altri nel nuovo stato. Non importa su quale disco si trovino. I filesystem gestiscono le scritture incomplete durante un crash con il journal.
psusi,

@psusi No: con un singolo disco, ogni settore è nel nuovo stato o nel vecchio stato. Con più dischi, se il driver utilizza l'approccio ingenuo di sovrascrivere il settore su ciascun disco senza archiviare informazioni altrove, un settore che si trovava in uno stato transitorio (vecchio stato su alcuni dischi, nuovo stato su altri) non può essere recuperato affatto. L'errore può essere eventualmente rilevato (se sei fortunato: la parità potrebbe coincidere per caso), ma non può essere corretto.
Gilles 'SO- smetti di essere malvagio' il

1

Ecco un blog che spiega il problema con RAID5 e come ZFS RAIDZ lo sta risolvendo .

I suoi punti chiave sono:

RAID-5 (e altri schemi di dati / parità come RAID-4, RAID-6, pari-dispari e Row Diagonal Parity) non sono mai stati mantenuti fedeli alla promessa RAID - e non possono - a causa di un difetto fatale noto come foro di scrittura RAID-5. Ogni volta che aggiorni i dati in una striscia RAID, devi anche aggiornare la parità, in modo che tutti i dischi XOR a zero - è quell'equazione che ti consente di ricostruire i dati quando un disco si guasta. Il problema è che non c'è modo di aggiornare due o più dischi atomicamente, quindi le strisce RAID possono essere danneggiate durante un crash o un'interruzione dell'alimentazione.

e

RAID-Z è uno schema di dati / parità come RAID-5, ma utilizza una larghezza di banda dinamica. Ogni blocco è la sua striscia RAID-Z, indipendentemente dalla dimensione del blocco. Ciò significa che ogni scrittura RAID-Z è una scrittura a banda intera. Ciò, se combinato con la semantica transazionale copia-scrittura di ZFS, elimina completamente il foro di scrittura RAID.

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.