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?
quelle
Antworten:
Ich hasse es, in kritischen Produktionsumgebungen "SATA nicht verwenden" zu sagen, aber ich habe diese Situation ziemlich oft gesehen. SATA-Laufwerke sind im Allgemeinen nicht für den von Ihnen beschriebenen Arbeitszyklus vorgesehen, obwohl Sie in Ihrem Setup Laufwerke angegeben haben, die speziell für den 24x7-Betrieb ausgelegt sind . Ich habe die Erfahrung gemacht, dass SATA-Laufwerke auf unvorhersehbare Weise ausfallen können, was sich häufig auf das gesamte Speicher-Array auswirkt, selbst wenn Sie RAID 1 + 0 verwenden, wie Sie es getan haben. Manchmal fallen die Laufwerke so aus, dass der gesamte Bus blockiert wird. Beachten Sie, ob Sie in Ihrem Setup SAS-Expander verwenden. Dies kann sich darauf auswirken, wie die verbleibenden Festplatten von einem Laufwerksausfall betroffen sind.
Möglicherweise hat es jedoch mehr Sinn gemacht, SAS-Laufwerke mit Midline- / Nearline-Geschwindigkeit (7200 U / min) anstelle von SATA- Laufwerken zu verwenden . Es gibt einen kleinen Preisaufschlag gegenüber SATA, aber die Laufwerke funktionieren / fallen vorhersehbarer aus. Die Fehlerkorrektur und Berichterstattung in der SAS-Schnittstelle / im SAS-Protokoll ist robuster als im SATA-Set. Selbst bei Laufwerken mit identischer Mechanik hat der Unterschied im SAS-Protokoll möglicherweise die Schmerzen verhindert, die Sie bei einem Laufwerksausfall hatten.
quelle
Wie kann eine einzelne Festplatte das Array herunterfahren? Die Antwort ist, dass es nicht sollte, aber es hängt davon ab, was den Ausfall verursacht. Wenn die Festplatte auf eine Weise stirbt, die sich so verhält, sollte sie nicht heruntergefahren werden. Aber es ist möglich, dass es in einem "Randfall" versagt, den der Controller nicht handhaben kann.
Sind Sie naiv zu denken, dass dies nicht passieren sollte? Nein, das glaube ich nicht. Eine solche Hardware-RAID-Karte hätte die meisten Probleme lösen müssen.
Wie kann man das verhindern? Sie können solche seltsamen Randfälle nicht vorhersehen. Dies gehört dazu, ein Systemadministrator zu sein, aber Sie können an Wiederherstellungsverfahren arbeiten, um zu verhindern, dass sich dies auf Ihr Unternehmen auswirkt. Die einzige Möglichkeit, dies zu beheben, besteht darin, entweder eine andere Hardware-Karte zu verwenden (wahrscheinlich nicht das, was Sie tun möchten) oder Ihre Laufwerke auf SAS-Laufwerke anstelle von SATA zu ändern, um festzustellen, ob SAS robuster ist. Sie können sich auch an Ihren Anbieter der RAID-Karte wenden und ihm mitteilen, was passiert ist, und sehen, was er sagt. sie sind schließlich eine firma, die sich auf das kennenlernen der wackeligen antriebselektronik spezialisieren soll. Sie erhalten möglicherweise weitere technische Ratschläge zur Funktionsweise der Laufwerke sowie zur Zuverlässigkeit ... wenn Sie die richtigen Ansprechpartner finden.
Hast du etwas verpasst? Wenn Sie sicherstellen möchten, dass das Laufwerk einen Edge-Case-Fehler aufweist, ziehen Sie es aus dem Array. Das Array wird herabgesetzt, aber Sie sollten nicht mehr von den seltsamen Verlangsamungen und Fehlern betroffen sein (abgesehen vom herabgesetzten Array-Status). Sie sagen, dass es im Moment gut funktioniert, aber wenn es Festplattenlesefehler gibt, sollten Sie das Laufwerk ersetzen, solange Sie können. Laufwerke mit hoher Kapazität können manchmal URE-Fehler aufweisen (der beste Grund, RAID 5 nicht auszuführen, Randnotiz), die erst angezeigt werden, wenn ein anderes Laufwerk ausgefallen ist. Wenn auf diesem einen Laufwerk ein Edge-Case-Verhalten auftritt, sollen keine beschädigten Daten auf die anderen Laufwerke im Array migriert werden.
quelle
Ich bin kein Experte, aber aufgrund meiner Erfahrung mit RAID-Controllern und Speicher-Arrays werde ich einen wilden Schuss im Dunkeln machen.
Festplatten versagen auf viele verschiedene Arten. Leider können Festplatten in einer Weise ausfallen oder fehlerhaft sein, in der ihre Leistung ernsthaft beeinträchtigt wird, der RAID-Controller wird jedoch nicht als Ausfall angesehen.
Wenn eine Festplatte auf offensichtliche Weise ausfällt, sollte jede RAID-Controller-Software imstande sein, fehlende Antworten von der Festplatte zu erkennen, sie aus dem Pool zu entfernen und Benachrichtigungen auszulösen. Ich vermute jedoch, dass auf der Festplatte ein ungewöhnlicher Fehler auftritt, der aus irgendeinem Grund keinen Fehler auf der Controllerseite auslöst. Wenn der Controller einen Schreib- oder Lesevorgang von der betroffenen Festplatte durchführt, dauert es daher lange, bis er wieder verfügbar ist, und der gesamte E / A-Betrieb und damit das Array hängen bleibt. Aus irgendeinem Grund reicht dies nicht aus, damit der RAID-Controller auf "ah, failed disk" wechselt, wahrscheinlich, weil die Daten irgendwann zurückkommen.
Mein Rat wäre, die ausgefallene Festplatte sofort auszutauschen. Danach schaue ich mir die Konfiguration Ihrer RAID-Karte an (3ware fand ich ziemlich gut) und finde heraus, was eine ausgefallene Festplatte bedeutet.
PS nette Idee, SMART in Kakteen zu importieren.
quelle
Sie benötigen die Funktionen von Speichergeräten der Enterprise-Klasse. Insbesondere die WD RE 4 Enterprise-Laufwerke verfügen über zwei Funktionen, die erforderlich sind, um dieses Verhalten in RAID-Arrays zu verhindern. Die erste unten aufgeführte Technologie verhindert, dass durch harmonische Rotationsschwingungen unnötiger Verschleiß der mechanischen Festplattenkomponenten verursacht wird. Die zweite Technologie hat Ihr Problem verursacht. Das SATA-Protokoll verfügt nicht über diese Funktion. Um diese Funktionen nutzen zu können, benötigen Sie SAS. Wenn Sie auf SATA-Laufwerken bestehen, können Sie SAS-zu-SATA-Interposer-Karten wie die LSISS9252 erwerben.
Verbesserte RAFF-Technologie Ausgefeilte Elektronik überwacht den Antrieb und korrigiert sowohl lineare als auch rotative Schwingungen in Echtzeit. Das Ergebnis ist eine signifikante Leistungsverbesserung in Umgebungen mit starken Vibrationen gegenüber der vorherigen Antriebsgeneration.
RAID-spezifische, zeitlich begrenzte Fehlerbehebung (TLER) Verhindert Laufwerksausfälle, die durch die bei Desktop-Laufwerken üblichen erweiterten Fehlerbehebungsprozesse für Festplattenlaufwerke verursacht werden.
http://en.wikipedia.org/wiki/Error_recovery_control#Overview
Siehe auch Link unten:
http://en.wikipedia.org/wiki/Error_recovery_control#Raid_Controllers
Siehe auch: Western Digital TLER-Dokument, in dem der Fehlerbehebungsprozess ausführlich erläutert wird. Verhinderung von Ausfällen bei der Fehlerbehebung bei Serial ATA-Festplatten mit WD Caviar RAID Edition:
http://www.3dfxzone.it/public/files/2579-001098.pdf
quelle
Nur eine Vermutung: Die Festplatten sind so konfiguriert, dass sie bei Lesefehlern erneut versuchen, anstatt einen Fehler zu melden. Dies ist in einer Desktop-Umgebung zwar wünschenswert, in einem RAID jedoch kontraproduktiv (wobei der Controller alle Sektoren neu schreiben sollte, die nicht von den anderen Datenträgern gelesen werden können, damit das Laufwerk sie neu zuordnen kann).
quelle
Mein Schuss im Dunkeln:
Laufwerk 7 fällt aus. Es gibt einige Fehlerfenster, in denen es nicht verfügbar ist.
Laufwerk 8 weist auch einige kleinere Fehler auf. durch erneuten Versuch korrigiert.
RAID10 ist normalerweise "ein RAID0 mit mehreren RAID1-Paaren". Gehören Laufwerk 7 und 8 zum selben Paar?
Wenn dies der Fall ist, haben Sie anscheinend den "Sollte nicht passieren" -Fall eines Zweidiskettenfehlers für dasselbe Paar getroffen. fast das einzige, was ein RAID10 töten kann. Leider kann es vorkommen, dass alle Laufwerke von derselben Versandmenge stammen, sodass die Wahrscheinlichkeit, dass sie gleichzeitig sterben, etwas höher ist.
Ich vermute, dass während eines Ausfalls von Laufwerk 7 der Controller alle Lesevorgänge auf Laufwerk 8 umleitete, sodass jede Wiederholung von Fehlern große Verzögerungen verursachte, die eine Lawine eingefrorener Aufgaben verursachten und die Leistung für eine Weile beeinträchtigten.
Sie haben Glück, dass Laufwerk 8 noch nicht tot zu sein scheint. Sie sollten also in der Lage sein, das Problem ohne Datenverlust zu beheben.
Zunächst würde ich beide Laufwerke austauschen und die Verkabelung überprüfen. Dies kann durch eine lose Verbindung verursacht werden. Wenn die Verbindung nicht fest geroutet wird, ist es wahrscheinlicher, dass sie in benachbarten Laufwerken auftritt. Außerdem haben einige Multiport-Karten mehrere Anschlüsse mit zwei Anschlüssen. Wenn sich Laufwerk 7 und Laufwerk 8 auf demselben befinden, kann dies zu Problemen führen.
quelle
SATA Interposer-Karten sind eine weitere Lösung.
Ich habe vor kurzem genau das gleiche Schicksal erlebt und diesen Thread gefunden. Der allgemeine Tenor ist, dass das SAS- Protokoll für RAID besser geeignet ist als für SATA, da SATA keine Funktionen bietet. Aus diesem Grund werden dieselben physischen Laufwerke mit SAS-Controllern ausgestattet und dann als Nearline SAS verkauft.
Bei weiterer Suche fand ich:
http://www.lsi.com/products/storagecomponents/Pages/LSISS9252.aspx
Ich untersuche, einen meiner Speicher mit einem Stapel davon zu aktualisieren. Derzeit beträgt der Preisunterschied zwischen 3 TB SATA und SAS 400% (Vanillepreis, gleiche Marke, Spezifikationen und Geschäft, Deutschland). Ich kann natürlich nicht sagen, ob diese Strategie gut funktioniert, aber es ist einen Versuch wert.
Kommentare sehr willkommen :-)
quelle
Ich habe gesehen, dass eine SATA-Festplatte mit defekter Elektronik die Firmware-Initialisierung eines Areca 12-Computers blockiert. Es gab keine Möglichkeit, auf das BIOS zuzugreifen, geschweige denn, den Computer von einem Medium aus zu starten, bis die fehlerhafte Festplatte durch Herausziehen von Festplatten in einer Binärdatei gefunden wurde Mode suchen.
quelle