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.
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/syslog
ho 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.
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?