In che modo un singolo disco in un array SATA RAID-10 hardware può arrestare l'intero array?


103

Preludio:

Sono una scimmia-codice che viene sempre più assunta dai compiti di SysAdmin per la mia piccola azienda. Il mio codice è il nostro prodotto e sempre più forniamo la stessa app di SaaS.

Circa 18 mesi fa ho spostato i nostri server da un fornitore incentrato sull'hosting premium a un pusher rack barebone in un data center di livello IV. (Letteralmente dall'altra parte della strada.) Questo accenno fa molto di più noi stessi - cose come rete, archiviazione e monitoraggio.

Come parte della grande mossa, per sostituire il nostro storage affittato diretto affittato dalla società di hosting, ho creato un NAS a due nodi da 9 TB basato su chassise SuperMicro, schede RAID 3ware, Ubuntu 10.04, due dozzine di dischi SATA, DRBD e. È tutto amorevolmente documentato in tre post del blog: Creazione e test di un nuovo NAS SFS RAID10 NFSv4 da 9 TB: Parte I , Parte II e Parte III .

Abbiamo anche installato un sistema di monitoraggio Cacit. Di recente abbiamo aggiunto sempre più punti dati, come i valori SMART.

Non avrei potuto fare tutto questo senza i fantastici boffin di ServerFault . È stata un'esperienza divertente ed educativa. Il mio capo è felice (abbiamo risparmiato un sacco di dollari) , i nostri clienti sono felici (i costi di archiviazione sono bassi) , io sono felice (divertente, divertente, divertente) .

Fino a ieri

Interruzione e recupero:

Qualche tempo dopo pranzo abbiamo iniziato a ricevere rapporti sulle prestazioni lente della nostra applicazione, un CMS di streaming multimediale on demand. Più o meno nello stesso periodo il nostro sistema di monitoraggio dei cactus ha inviato una bufera di neve di e-mail. Uno degli avvisi più rivelatori era un grafico di iostat in attesa.

inserisci qui la descrizione dell'immagine

Le prestazioni sono diventate così degradate che Pingdom ha iniziato a inviare notifiche "server down". Il carico complessivo è stato moderato, non vi è stato un picco di traffico.

Dopo aver effettuato l'accesso ai server delle applicazioni, client NFS del NAS, ho confermato che quasi tutto stava vivendo tempi di attesa di I / O estremamente intermittenti e follemente lunghi. E una volta passato sul nodo NAS primario stesso, gli stessi ritardi erano evidenti quando si cercava di navigare nel file system dell'array problematico.

È tempo di fallire, è andato bene. Entro 20 minuti tutto è stato confermato per il backup e il funzionamento perfetto.

Post-Mortem:

Dopo ogni errore del sistema eseguo un post mortem per determinare la causa dell'errore. La prima cosa che ho fatto è stata tornare nella scatola e iniziare a rivedere i registri. Era offline, completamente. Tempo per un viaggio nel data center. Ripristino hardware, backup e in esecuzione.

In /var/syslogho trovato questa voce dall'aspetto spaventoso:

Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_00], 6 Currently unreadable (pending) sectors
Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_07], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 171 to 170
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 16 Currently unreadable (pending) sectors
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 4 Offline uncorrectable sectors
Nov 15 06:49:45 umbilo smartd[2827]: Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
Nov 15 06:49:45 umbilo smartd[2827]: # 1  Short offline       Completed: read failure       90%      6576         3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 2  Short offline       Completed: read failure       90%      6087         3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 3  Short offline       Completed: read failure       10%      5901         656821791
Nov 15 06:49:45 umbilo smartd[2827]: # 4  Short offline       Completed: read failure       90%      5818         651637856
Nov 15 06:49:45 umbilo smartd[2827]:

Quindi sono andato a controllare i grafici dei cactus per i dischi nell'array. Qui vediamo che, sì, il disco 7 sta scivolando via proprio come dice syslog. Ma vediamo anche che gli SMART Read di Disk 8 sono fluttuanti.

inserisci qui la descrizione dell'immagine

Non ci sono messaggi sul disco 8 in syslog. Più interessante è che i valori fluttuanti per il disco 8 sono direttamente correlati ai tempi di attesa IO elevati! La mia interpretazione è che:

  • Il disco 8 presenta uno strano errore hardware che provoca lunghi tempi di funzionamento intermittenti.
  • In qualche modo questa condizione di errore sul disco sta bloccando l'intero array

Forse esiste una descrizione più accurata o corretta, ma il risultato netto è stato che l'unico disco sta influenzando le prestazioni dell'intero array.

Le domande)

  • In che modo un singolo disco in un array SATA RAID-10 hardware può arrestare l'intero array?
  • Sono ingenuo pensare che la scheda RAID avrebbe dovuto occuparsene?
  • Come posso evitare che un singolo disco che si comporta male si ripercuota sull'intero array?
  • Mi sto perdendo qualcosa?

11
Un'altra tua domanda ben scritta, +1. Sempre un piacere leggere (ma purtroppo sopra la mia tavola per avere anche un'idea).
tombull89,

1
@daff: acquista il budget corrente con questa configurazione, risparmiando un solido 66% da un comparabile di HP. Ti abbiamo dedicato un anno di vita su questa scatola, non è necessario che duri più a lungo. Ricorda che questa è una scatola di immagazzinaggio, i costi precipitano di anno in anno.
Stu Thompson,

2
3Ware non è male, di per sé. Ho avuto un comportamento traballante da una scheda PERC su un sistema Dell, che dovrebbe essere un hardware server decente. La scheda 3Ware dovrebbe avere la batteria integrata e così, quindi non mi sentirei troppo male per la decisione. Ok, potresti essere sbattuto per la decisione SAS contro SATA, ma non stai perdendo dati e dalla tua domanda sembra che tu abbia backup e monitoraggio in atto, quindi stai andando abbastanza bene :-)
Bart Silverstrim

1
@StuThompson: ovviamente è più economico risparmiare e usare l'hardware di consumo, e molto spesso funzionerà bene, specialmente quando, come nel tuo caso, c'è un buon concetto di HA dietro di esso. Ma ci sono casi, come hai dimostrato, in cui l'hardware di consumo non lo taglia quando accadono cose brutte. Posso praticamente garantirti che un singolo disco SAS difettoso su un buon controller PERC (Dell) o SmartArray (HP) non ti avrebbe causato alcun problema diverso da una chiamata di supporto per ottenere un disco sostitutivo. Nel corso degli anni abbiamo avuto molti dischi SAS morti durante la produzione, ma non li abbiamo mai fatti spegnere un server.
daff

5
La maggior parte dei dischi SATA non supporta TLER (Time Limited Error Recovery). Quando un tipico disco SATA incontra un problema fisico, invia un "blocco mentre lavoro su questo" al sottosistema del disco (che di solito fa come è stato detto). Il disco procederà quindi a dedicare 10-30 secondi (in genere) a ciascun errore rilevato fino a quando non raggiunge la soglia "I'm dead". I dischi SAS e SATA che supportano TLER sono configurati dal loro HBA per dire al sottosistema del disco "Ho un problema, cosa devo fare?" così l'HBA può decidere l'azione appropriata praticamente immediatamente. (Semplificato per brevità)
Chris S,

Risposte:


48

Odio dire "non usare SATA" in ambienti di produzione critici, ma ho visto questa situazione abbastanza spesso. Le unità SATA non sono generalmente pensate per il ciclo di lavoro descritto, anche se nella configurazione sono state specificate unità specificatamente classificate per il funzionamento 24x7 . La mia esperienza è stata che le unità SATA possono fallire in modi imprevedibili, spesso influenzando l'intero array di archiviazione, anche quando si utilizza RAID 1 + 0, come hai fatto. A volte le unità si guastano in un modo che può bloccare l'intero bus. Una cosa da notare è se stai usando espansori SAS nella tua configurazione. Ciò può fare la differenza nel modo in cui i dischi rimanenti sono influenzati da un guasto dell'unità.

Ma potrebbe essere più sensato andare con le unità SAS midline / nearline (7200 RPM) rispetto a SATA. C'è un piccolo prezzo rispetto a SATA, ma le unità funzioneranno / guasteranno in modo più prevedibile. La correzione e la segnalazione degli errori nell'interfaccia / protocollo SAS sono più robuste rispetto al set SATA. Quindi, anche con unità i cui meccanismi sono gli stessi , la differenza del protocollo SAS potrebbe aver impedito il dolore che si è verificato durante il guasto dell'unità.


Mentre stavo scrivendo la domanda, sapevo solo che la mia scelta di SAS sarebbe venuta fuori. : / IOPS e throughput rientrano nelle capacità della mia configurazione. Ma non ho appreso completamente alcune delle differenze più sottili. Abbiamo messo una durata di 3 anni su questa scatola. La prossima volta useremo SAS.
Stu Thompson,

1
Sì, è qualcosa da considerare la prossima volta. Le unità SAS nearline che ho citato non funzionano necessariamente meglio di SATA, ma sono cose come il recupero degli errori e guasti alle unità in cui la SAS è più gestibile. Ho un sistema di archiviazione SATA Sun Fire x4540 a 48 unità con 6 controller e i guasti alle singole unità tendevano a bloccare il server. Lezione dura.
ewwhite,

10
Un mio buon amico è nel mondo dello storage aziendale. Ha letto tutto questo e dice "questo ragazzo ha ragione. Quello che succede è che SATA è progettato per indicare un guasto completo e uno intermittente richiede il bus senza eseguire il failover. In genere questo non è mai visto dal momento che la maggior parte delle configurazioni SATA sono un disco "
Stu Thompson,

@StuThompson Da allora hai costruito una nuova scatola con SAS near-line? Mi piacerebbe leggere le tue esperienze. La tua domanda mi ha già aiutato molto, probabilmente costruirò una scatola simile nel prossimo futuro.
chrishiestand,

1
@chrishiestand No, non l'ho fatto. Ho lasciato la compagnia il 13 gennaio; se fossi rimasto avremmo costruito la scatola di ricambio con la linea vicina. Purtroppo, l'esistenza del NAS era troppo strettamente legata alla mia e i dati venivano trasferiti nella SAN di un fornitore di servizi.
Stu Thompson,

17

Come può un singolo disco far crollare l'array? La risposta è che non dovrebbe, ma in qualche modo dipende da cosa sta causando l'interruzione. Se il disco dovesse morire in un modo che si comportava, non dovrebbe smontarlo. Ma è possibile che non riesca in un "caso limite" che il controller non è in grado di gestire.

Sei ingenuo pensare che ciò non dovrebbe accadere? No, non la penso così. Una scheda RAID hardware del genere avrebbe dovuto gestire la maggior parte dei problemi.

Come prevenirlo? Non puoi anticipare casi strani come questo. Questo fa parte dell'essere un amministratore di sistema ... ma puoi lavorare sulle procedure di recupero per evitare che influisca sul tuo business. L'unico modo per provare a risolvere questo problema ora è provare un'altra scheda hardware (probabilmente non quella che vorresti fare) o cambiare le tue unità in unità SAS invece di SATA per vedere se SAS è più affidabile. Puoi anche contattare il tuo fornitore della scheda RAID e dire loro cosa è successo e vedere cosa dicono; sono, dopo tutto, un'azienda che dovrebbe specializzarsi nel conoscere i dettagli dell'elettronica di azionamento traballante. Potrebbero avere più consigli tecnici su come funzionano le unità e affidabilità ... se riesci a contattare le persone giuste con cui parlare.

Ti sei perso qualcosa? Se si desidera verificare che l'unità abbia un errore del caso limite, estrarla dall'array. L'array sarà degradato ma non dovresti avere più degli strani rallentamenti ed errori (a parte lo stato dell'array degradato). Stai dicendo che in questo momento sembra funzionare bene, ma se si verificano errori di lettura del disco, è necessario sostituire l'unità mentre è possibile. A volte le unità con capacità elevata possono avere errori URE (motivo migliore per non eseguire RAID 5, nota a margine) che non vengono visualizzati fino a quando un'altra unità non si guasta. E se si verifica un comportamento a margine da quell'unità, non si desidera migrare i dati danneggiati sulle altre unità dell'array.


1
Sì ... abbiamo già messo in una nuova politica di sostituzione come "se gli errori di lettura fluttuano, allora strappalo" . Ora che ci penso, abbiamo avuto un tasso abbastanza alto di guasti su queste unità. 4 di 22 in 18 mesi. Hmmm ....
Stu Thompson,

2
4 unità in 18 mesi? questo è un bel tasso lì ... mentre potrebbe essere che le unità non siano nelle specifiche, potrebbe esserci anche un problema di raffreddamento / flusso d'aria da guardare. O forse qualcosa di strano con il controller. Solo alcuni pensieri ... tieni d'occhio i registri. Se riesci a contattare chiunque in 3Ware con un vero lavoro sulle carte e non solo uno script, potresti volerlo eseguire da loro e vedere cosa dicono.
Bart Silverstrim,

1
A seconda del set in cui vedi gli errori, puoi anche verificare che non ci sia qualcosa di traballante o marginale anche con i cavi. Se gli errori sembrano concentrarsi sulla stessa porta, potresti avere meno di una serie di errori casuali.
Bart Silverstrim,

4
Ho appena visto che i valori SMART per questo disco vagabondo funzionavano a ~ 31 ° C, o ben 4 ° C in più rispetto a tutti gli altri dischi. Cose che ti fanno andare hmmmm ....
Stu Thompson,

2
@DanNeely: su 14 unità (11 dati, 3 sistemi) era l'unica con una temperatura più alta. Sono abbastanza sicuro che il flusso d'aria sia stato buono, ma controllerò esplicitamente domani.
Stu Thompson,

10

Non sono un esperto, ma ho intenzione di scattare una foto selvaggia nel buio sulla base della mia esperienza con controller RAID e array di archiviazione.

I dischi si guastano in molti modi diversi. Sfortunatamente, i dischi possono fallire, o essere difettosi, in modi in cui le loro prestazioni sono gravemente compromesse ma il controller RAID non vede come un fallimento.

Se un disco si guasta in modo ovvio, qualsiasi software di controller RAID dovrebbe essere abbastanza bravo a rilevare la mancanza di risposta dal disco, rimuoverlo dal pool e lanciare eventuali notifiche. Tuttavia, la mia ipotesi su ciò che sta accadendo qui è che il disco sta subendo un errore insolito che, per qualche motivo, non sta causando un errore sul lato controller. Pertanto, quando il controller sta eseguendo un flush flush o una lettura dal disco interessato, ci vuole molto tempo per tornare indietro e a sua volta sta bloccando l'intero IO operativo e quindi l'array. Per qualsiasi motivo, questo non è sufficiente per il controller RAID per andare "ah, disco guasto", probabilmente perché i dati finiscono per tornare alla fine.

Il mio consiglio sarebbe di sostituire immediatamente il disco guasto. Dopodiché, darei un'occhiata alla configurazione della tua scheda RAID (è 3ware, ho pensato che fossero abbastanza buoni) e scoprire cosa considera un disco guasto.

PS bella idea importando SMART in cactus.


Una volta collegati i punti, la prima cosa che ho pensato è stata quella di rimuovere il disco dall'array; la scorta calda si è riempita. Era ieri sera. Oggi ho estratto il disco e l'ho fatto con RMA. L'unità offensiva: geekomatic.ch/images/wd-re4-flux-read-error.jpg
Stu Thompson

Uno dei motivi per cui penso che ogni sistema mission-critical abbia bisogno di una scheda che esegua il lavaggio dei dati. L'ho visto troppe volte per contare, specialmente su array SATA, tuttavia, è noto che anche i dischi SAS di fascia più alta non funzionano senza attivare il controller.
Jens Ehrich,

7

Sono necessarie le funzionalità dei dispositivi di archiviazione di classe enterprise. In particolare, le unità aziendali WD RE 4 hanno due funzionalità necessarie per prevenire questo comportamento negli array RAID. La prima tecnologia elencata di seguito impedisce alle vibrazioni armoniche di rotazione di provocare un'usura inutile dei componenti meccanici del disco rigido. La seconda tecnologia è ciò che ha causato il tuo problema, il protocollo SATA non ha questa funzionalità. Per ottenere queste funzionalità hai bisogno di SAS e, se insisti sulle unità SATA, puoi acquistare le schede SAS su SATA Interposer come LSISS9252.

Tecnologia RAFF avanzata Elettronica sofisticata controlla l'azionamento e corregge le vibrazioni lineari e rotazionali in tempo reale. Il risultato è un significativo miglioramento delle prestazioni in ambienti ad alta vibrazione rispetto alla generazione precedente di azionamenti.

Ripristino errori limitato nel tempo specifico per RAID (TLER) Previene il fallout dell'unità causato dai processi estesi di recupero errori del disco rigido comuni alle unità desktop.

http://en.wikipedia.org/wiki/Error_recovery_control#Overview

Vedi anche il link seguente:

http://en.wikipedia.org/wiki/Error_recovery_control#Raid_Controllers

Vedi anche: Documento TLER di Western Digital che spiega in dettaglio il processo di recupero degli errori. Prevenzione errori di Fallout Recovery nei dischi rigidi ATA seriali WD Caviar RAID Edition:

http://www.3dfxzone.it/public/files/2579-001098.pdf


6

Solo un'ipotesi: i dischi rigidi sono configurati per riprovare su errori di lettura piuttosto che segnalare un errore. Sebbene questo sia un comportamento desiderabile in un'impostazione desktop, è controproducente in un RAID (in cui il controller dovrebbe riscrivere qualsiasi settore che non riesce a leggere dagli altri dischi, in modo che l'unità possa rimapparlo).


Molto possibile. In tal caso, questo non è provocatoriamente interessante in quanto sono specificate come unità "RAID edition". : |
Stu Thompson,

Assolutamente no, perché quella impostazione è la definizione stessa di "RAID edition" :)
Simon Richter,

6

il mio scatto al buio:

  • l'unità 7 non funziona. ha alcune finestre di errore in cui non è disponibile.

  • l'unità 8 presenta anche alcuni errori "più leggeri"; corretto riprovando.

  • RAID10 è in genere "un RAID0 di più coppie RAID1", i drive 7 e 8 sono membri della stessa coppia?

in tal caso, sembra che tu abbia colpito il caso "non dovrebbe succedere" di un errore su due dischi sulla stessa coppia. quasi l'unica cosa che può uccidere un RAID10. sfortunatamente, può succedere se tutte le tue unità provengono dallo stesso lotto di spedizione, quindi hanno una probabilità leggermente maggiore di morire simultaneamente.

Immagino che durante un guasto all'unità 7, il controller reindirizzi tutte le letture all'unità 8, quindi qualsiasi tentativo di errore ha causato grandi ritardi che hanno causato una valanga di attività bloccate, uccidendo le prestazioni per un po '.

sei fortunato che l'unità 8 non sembra essere ancora morta, quindi dovresti essere in grado di risolvere senza perdita di dati.

Comincerei cambiando entrambe le unità e non dimenticherò di controllare il cablaggio. una connessione allentata potrebbe causare questo, e se non instradato saldamente, è più probabile che accada in unità adiacenti. inoltre, alcune schede multiporta hanno diversi connettori a due porte, se l'unità 7 e l'unità 8 sono sullo stesso, potrebbe essere la causa del problema.


3
Drive 8 è ciò che causa l'interruzione del servizio, l'ho già estratto. Drive 7, mentre ha perso alcuni sektor, come è stato in questo stato per un po 'e in genere continua a funzionare bene. No, le unità sono in coppie diverse. (Era qualcosa che ho considerato, insieme a un possibile disallineamento delle mie query Cacti / SNMP.) La scheda ha 16 porte, 4 cavi, 4 porte per cavo in un riquadro posteriore. Se il problema è la scheda, il cavo o il backpane, lo saprò abbastanza presto quando inserirò la sostituzione dell'unità 8.
Stu Thompson,

3

Le schede interposer SATA sono un'altra soluzione.

Di recente ho sperimentato esattamente lo stesso destino e ho trovato questa discussione. Il tenore generale è che il protocollo SAS è più adatto per RAID rispetto a SATA, perché SATA manca di funzionalità. Questo è il motivo per cui le stesse unità fisiche sono dotate di controller SAS, quindi vendute come Nearline SAS.

Cercando ulteriormente, ho trovato:

http://www.lsi.com/products/storagecomponents/Pages/LSISS9252.aspx

Sto studiando l'aggiornamento di uno dei miei archivi con una serie di questi. In questo momento, la differenza di prezzo tra 3 TB SATA vs SAS è del 400% (prezzo vaniglia, stessa marca, specifiche e negozio, Germania). Ovviamente non posso dire se questa strategia funzioni bene, ma vale la pena provare.

Commenti molto graditi :-)


1
Bene bella teoria. Dopo aver raccolto alcune informazioni, solo i produttori di vassoi di archiviazione possono integrare queste schede e aggiungerle non significa necessariamente una migliore gestione degli errori.
Korkman,

2

Ho visto un disco SATA con elettronica rotta bloccare in modo solido l'iniziale del firmware di un Areca 12, non c'era modo di accedere al BIOS e tanto meno avviare la macchina da qualsiasi supporto fino a quando non è stato trovato il disco rigido offensivo estraendo i dischi in un file binario ricerca della moda.

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.