Auftakt:
Ich bin ein Code-Affe, der zunehmend SysAdmin-Aufgaben für meine kleine Firma übernimmt. Mein Code ist unser Produkt und wir bieten zunehmend die gleiche App wie SaaS an.
Vor ungefähr 18 Monaten habe ich unsere Server von einem Premium-Hosting-zentrierten Anbieter auf einen Barebones-Rack-Pusher in einem Tier IV-Rechenzentrum umgestellt. (Im wahrsten Sinne des Wortes auf der anderen Straßenseite.) Dies bedeutet, dass wir viel mehr selbst tun - Dinge wie Vernetzung, Speicherung und Überwachung.
Als Teil des großen Schrittes, um unseren gemieteten Direct Attached Storage vom Hosting-Unternehmen zu ersetzen, baute ich ein 9-TB-NAS mit zwei Knoten auf der Basis von SuperMicro-Chassis, 3ware-RAID-Karten, Ubuntu 10.04, zwei Dutzend SATA-Festplatten, DRBD und. In drei Blog-Posts wird alles liebevoll dokumentiert: Aufbau und Test eines neuen 9-TB-SATA-RAID10-NFSv4-NAS: Teil I , Teil II und Teil III .
Wir richten auch ein Cacit-Überwachungssystem ein. In letzter Zeit haben wir immer mehr Datenpunkte hinzugefügt, z. B. SMART-Werte.
Ich hätte das alles nicht machen können ohne die tollen Trottel bei ServerFault . Es war eine unterhaltsame und lehrreiche Erfahrung. Mein Chef ist glücklich (wir haben jede Menge Geld gespart) , unsere Kunden sind glücklich (die Lagerkosten sind gesunken) , ich bin glücklich (Spaß, Spaß, Spaß) .
Bis gestern.
Ausfall & Wiederherstellung:
Einige Zeit nach dem Mittagessen erhielten wir Berichte über schwache Leistung von unserer Anwendung, einem On-Demand-Streaming-Media-CMS. Ungefähr zur gleichen Zeit schickte unser Cacti-Überwachungssystem einen Schneesturm von E-Mails. Eine der aufschlussreicheren Warnungen war ein Diagramm von iostat, das auf Sie wartet.
Die Leistung wurde so herabgesetzt, dass Pingdom Benachrichtigungen über den Ausfall von Servern verschickte. Die Gesamtlast war moderat, es gab keine Verkehrsspitzen.
Nachdem ich mich bei den Anwendungsservern, den NFS-Clients des NAS, angemeldet hatte, bestätigte ich, dass es bei fast allem zu sehr sporadischen und wahnsinnig langen E / A-Wartezeiten kam. Und als ich auf den primären NAS-Knoten selbst gesprungen bin, waren die gleichen Verzögerungen beim Versuch, im Dateisystem des Problem-Arrays zu navigieren, offensichtlich.
Zeit für ein Failover, das ist gut gelaufen. Innerhalb von 20 Minuten wurde bestätigt, dass alles wieder funktioniert.
Post-Mortem:
Nach allen Systemfehlern stelle ich post mortem die Fehlerursache fest. Das erste, was ich tat, war, ssh wieder in die Box zu werfen und die Protokolle zu überprüfen. Es war komplett offline. Zeit für einen Ausflug ins Rechenzentrum. Hardware zurücksetzen, sichern und ausführen.
In /var/syslog
diesem beängstigend aussehenden Eintrag fand ich:
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]:
Also suchte ich in den Cacti-Diagrammen nach den Datenträgern im Array. Hier sehen wir, dass die Festplatte 7 wegrutscht, so wie es Syslog sagt. Wir sehen aber auch, dass die SMART Read Erros von Disk 8 schwanken.
Es gibt keine Meldungen zu Datenträger 8 in Syslog. Interessanter ist, dass die schwankenden Werte für Platte 8 direkt mit den hohen IO-Wartezeiten korrelieren! Meine Interpretation ist, dass:
- Datenträger 8 weist einen ungeraden Hardwarefehler auf, der zu zeitweise langen Betriebszeiten führt.
- Irgendwie blockiert dieser Fehlerzustand auf der Festplatte das gesamte Array
Vielleicht gibt es eine genauere oder korrektere Beschreibung, aber das Nettoergebnis ist, dass die eine Festplatte die Leistung des gesamten Arrays beeinträchtigt.
Die Fragen)
- Wie kann eine einzelne Festplatte in einem Hardware-SATA-RAID-10-Array das gesamte Array zum Stillstand bringen?
- Bin ich naiv zu denken, dass die RAID-Karte damit hätte fertig werden sollen?
- Wie kann ich verhindern, dass sich eine einzelne fehlerhafte Festplatte auf das gesamte Array auswirkt?
- Vermisse ich etwas?