QuicksearchCodenews SearchDisclaimerThe individual owning this blog works for Oracle in Germany. The opinions expressed here are his own, are not necessarily reviewed in advance by anyone but the individual author, and neither Oracle nor any other party necessarily agrees with them.
NavigationCategories
|
Anmerkungen zum ZFS-Tutorial in der c´tTuesday, October 7. 2008Comments
Display comments as
(Linear | Threaded)
Danke für die Klarstellung.
Andere Frage: Gibt es Aussagen dazu, wann die WebGUI für ZFS in OpenSolaris reinkommt? Der Workaround über Express funktioniert ja offensichtlich, aber schön ist was anderes.
Ich kann verstehen dass das Filesystem eindfriert statt der Anwendung (df, ls, write/read) einen Fehler zu melden. Besonders wenn es einstellbar ist. Ich kann allerdings nicht verstehen wieso zfs admin tools ein solches filesystem nicht als "blocked" anzeigen sondern sich verklemmen. Allerdings hab ich den Artikel nicht vorlegen, lag eventuell swap oder root auf dem Test-fs?
Gruss Bernd
Kabel ziehen testet in der Tag keinen Disk Fehler. Aber wenn das System schon Kabel/Disk ziehen nicht sauber übersteht, muss man schlimmeres Disk verhalten (Timeouts, Command Ignores, Block Fehler, Bus Resets...) erst garnicht versuchen zu simulieren.
Ich kann verstehen dass Hersteller vor (elektrischem) Hardware Schaden warnen beim Kabelziehen, aber man kann dem Kabelziehen nicht absprechen ein guter Testcase zu sein, oder? (Natuerlich nie bei Produktivsystmen) Gruss Bernd
Das Kabel bzw. Festplatten ziehen ist so üblich als Testmethode, das einige Hersteller inzwischen eine Testfallerkennung haben. Es hat durchaus seine Berechtigung, aber man sollte immer Versuchen einen Testfall zu generieren, der damit nicht zu erschlagen ist.
Vorweg: Ich habe noch kein ZFS in Aktion gesehen und habe auch sonst von Storage unterhalb der LVM-Ebene kaum Ahnung.
Es irritiert mich aber etwas, daß die c't über eine so einfache Sache gestolpert sein soll. Mal angenommen, jemand hätte versehentlich das Kabel gezogen. Man kennt sie ja, diese fehleranfällig verkabelten Racks. Hätte der Administrator denn überhaupt eine Chance, von ZFS zu erfahren, daß es darauf wartet, daß das Laufwerk wieder zurückkommt? Syslog, dmesg, irgendwas? Wenn sich ZFS in einem solch einfachen Fall wirklich tot stellt und sich darauf verläßt, daß man die Fehlerquelle schon irgendwie auf anderem Weg findet, ist das ja keine so richtig pralle Art von Fehlerbehandlung. "Works as designed" erscheint mir da als Begründung nicht so wirklich angemessen.
Es steht im Logfile, es steht im fmdump, es steht im zpool status, wenn es man in einem anderen Fenster als dem mit dem gelockten zpool status abfragt ... jede menge Moeglichkeiten es herauszufinden: Ansonsten ... http://www.c0t0d0s0.org/archives/4903-Anmerkungen-zum-ZFS-Tutorial-in-der-ct-revisited.html
Einen echten Hardware Fehler Test hattest du doch schon mal hier gepostet
http://www.c0t0d0s0.org/archives/4310-No-data-was-harmed-in-this-movie-.....html
Also mich würde ja jetzt - nachdem der Artikel jetzt schon zum zweiten Mal hier angesprochen wird - interessieren, wie das Recovery aus dieser Fehlersituation (failmode=wait) konkret aussieht.
Und dabei bitte ich, nicht von irgendwelchem IDE-crap auszugehen. Ist das dann mehr ein Trial and Error Verfahren, bei dem ich solange an meinem Storage Platten tausche, bis das ZFS so gnädig ist und wieder in "normal" Mode zurückfällt?
Habe ich in einem weiteren Artikel im Blog erlaeutert: http://www.c0t0d0s0.org/archives/4903-Anmerkungen-zum-ZFS-Tutorial-in-der-ct-revisited.html
Ein kurzer Kommentar:
Die Ausführungen zu Datenkorrektheit vs. Datenverfügbarkeit und der Design-Entscheidung, die ZFS in dieser Frage trifft, sind völlig korrekt. Trotzdem halte ich es nicht für ein wünschenswertes Verhalten, dass man ein funktionierendes System, in dem ein Zpool kaputt geht, hart resetten muss, um den Normalbetrieb wiederherzustellen (/ lag nicht auf dem Zpool). ZFS erkennt (und meldet) korrekt den Ausfall einer Platte; beim Ausfall mehrerer Platten über die redundanten Devices hinaus hätte ich eine entsprechende Fehlermeldung von zpool und evtl. einen automatischen Umount des beschädigten Zpools erwartet. Wie sonst soll der Admin das Problem im laufenden Betrieb beheben?
Leider hängt "zpool status" auch schon ab und an, wenn nur eine Platte ausgefallen ist. Ist dann leider ein wenig blöd herauszufinden, welche Platte Ärger macht, insbesondere wenn weder FMA noch cfgadm eine Meinung dazu haben
Können Sie näher ausführen, unter welchen Umständen das passiert. Für welchen zpool das eintritt, wie die Konfiguration des Pools ist und vielleicht das ganze mit Logfiles untermauern?
Momentan leider nicht mehr, da schon > 4 Wochen vorbei. Symptome: fmdump war leer (Kiste war gerade 2 Wochen vorher aufgesetzt), cfgadm sagte, dass alle Platten "configured" sind. zpool status blieb schrieb die ersten Zeilen bis zu : Status: DEGRADED
Macht dann ein sehr gutes Gefühl, nicht zu wissen, welche Platte es ist. Da wir noch relative Solaris Neulinge sind, haben ir einen sauberen Reboot gemacht, danach ist dann auch 'fmadm faulty' an Bord gewesen und sagte brav, welche Platte es ist. Leider macht man einen Reboot ungern auf einem Fileserver.
1. Via fmdump oder via eines in einem anderen Terminalwindow ausgefuehrten zpool status koennen die fehlerhaften devices eingesehen werden.
2. Nach dem Einstecken kann durch zpool clear die Betriebsbereitschaft des Pools wieder hergestellt werden. 3. Wie erlaeutert, kann das voellige Blocken durch failmode=continue als pool property abgestellt werden.
Zu 1: Bei meinen Versuchen konnte ich bei dem kaputten RAID-Z beliebig viele Terminalfenster mit parallel hängenden zpool-Aufrufen blockieren (Nevada Build 98). Selbst df blieb hängen. fmdump habe ich nicht ausprobiert.
Zu 2 und 3: Stimmt natürlich.
Stichwort Ghetto-JBOD: werden bei den J4x00-Storages auch Enclosure-Informationen (Luefter-Drehzahlen, Netzteil-Zustand) ueber das SAS-Kabel uebertragen? Und kann Solaris das auswerten?
Ja ... kann es. Signalisierung laeuft in-band auf SAS-Kabel. Abfrage und Weiterleitung ueber CAMS-Server beziehungsweise CAMS-Proxy-Server, wenn der CAMS-Server nicht lokal laeuft.
Auch ich halte das Verhalten im Falle der Pool Status Befehle für unglücklich.
Eine zusätzliche Option für timedwait oder application_error wäre nicht schlecht für Leitsysteme und sonstige Echtzeitdatensammler. Es besteht zwar meist nur die Anforderung innerhalb von einer Minute die Daten zu speichern, aber auch die wird in diesem Fall überschritten. Besser mit Fehler raus und auf die Redundanz umschalten.
Die Redundanz wird doch eh verwendet ? Es dreht sich hier um einen Fall, der dann eintritt, wenn der ganze Pool nicht mehr betriebsfähig ist. Zwei Platten fallen auf einem RAIDZ aus beispielsweise. Ganz andere Baustelle.
Da habe ich mich wohl ungenau ausgedrückt.
Mit Redundanz ist ein parallel mitlaufender Rechner gemeint, der dann als "Hauptrechner" gekennzeichnet wird. Der Rechner mit schwächelnder Platte tritt sozudagen ins zweite Glied zurück.
Also, wegen einer einzelnen schwächelnden Platte passiert das nicht. Da siehst du nur Meldungen, das dir gerade eine Platte ausgefallen ist. Das System laeuft weiter.
Im Cluster gehen wir von ganz anderen Bedingungen aus. Als beispiel für einen wirklich wichtigen Datensammler oder Leittechnikrechner mal folgendes Beispiel. Zunächsteinmal setzt man dort in der Regel mit MPxIO gemultipathte Verbindungen ein, so das das Flackern einer Kabels nicht zum Verlust der Verfuegbarkeit der Platten fuehrt, also funktioniert das weiter. Weiterhin setzt man in Clustern, die diesen Namen auch verdienen entweder multipathingfähige JBODS ein oder aber Storagearrays mit 2 cachegemirrorten RAID-Controllern (geht auch mit der 25xx Linie). Wenn man auf einen Dienst so angewiesen ist, das man sich den Luxus eines Cluster leistet, so hat man meistens zwei Storageboxen. Das konfiguriert man dann so, das kein Ausfall einer Einzelkomponente zum Verlust von so vielen Mirrorhälften führt, das das System in den obigen Zustand fällt. Fälle in denen das dann trotzdem passiert, sind fast immer diejenigen, bei denen man einen Feuerlöscher mit ins Datacenter nehmen sollte, entweder um eben dort Feuer zu löschen oder um der Person eins ueberzubraten die gerade alle Kabel zu allen Cluster-Nodes aus dem Storage gezogen hat. Man muss immer dran denken: Der beschriebene Zustand des einfrierenden Pools tritt nur ein, wenn weniger als die Mindestanzahl von Platten im einem Pool noch betriebsbereit ist. Und wir reden im Cluster auch nie von SATA mit dem doch mediocren Fehlermanagement sondern von SAS oder SATA wo im übrigen viele Verbindungsfehler durch Technologien wie MPXIO geregelt werden (damit kann man uebrigens auch mit iSCSI prima multifabric SANs bauen) In einem vernünftigen ClusterFramework wird dann auch noch einiger Aufwand getrieben, um schnell den Ausfall zu dedektieren. BTW: Die tiefe Kernelintegration von OHAC hat da durchaus seine vorteile. Wobei: Um wirklich kurze umschaltzeiten zu erreichen, wenns dann wirklich mal in die Hose geht, muss man dann auch noch in die Applikation gucken Verwendet das Leitsystem eine Datenbank wie Oracle, würde ich gleichzeitig noch über Oracle RAC nachdenken. Das taugt zwar nicht zum Skalieren, ist aber prima um Failover zu verkürzen (da kein Nachfahren des Logs). Und ansonsten gilt: Meistens ist der schnellste Failover einer Loadbalancer davor mit einem inband-healthcheck und einem shared nothing cluster. Nur geht das nicht immer ....
Zitat: "Verabschiedet euch insbesondere, das Daten sicher sind, wenn ihr sie auf consumer-grade Elektronik speichert."
Ach deshalb nutzt Sun auf den X4500 Hitachi Deskstar Festplatten Sorry, das konnte ich mir gerade nicht verkneifen, nachdem wieder 3 Platten innerhalb von 2 Wochen das zeitliche gesegnet haben.
DeathStar-Platten? ...das liegt doch alles nur an NCQ, dass es nicht funktioniert.
Was ich mich nur frage: Wie hätte denn ein Hardware-RAID System (in diesem Fall wäre es wohl ein RAID 5 gewesen, wenn es RAIDZ entspricht) reagiert? Ich denke nicht, das irgendein OS eine freundliche Fehlermeldung generiert hätte, außer das das Ding nicht mehr lesbar ist.
Eine weitere Frage hätte ich noch: Eine unserer Platten hatte laut SMART einen 'reallocated sector' und 5 'current pending sectors'. Warum ist ZFS nicht intelligent genug genau diese Sektoren noch einmal mit einem WRITE zu beglücken, damit die Festplatte diese Sektoren endlich reallozieren kann?
1. Ist SMART nur teilweise nur mässig mit dem Ausfallrisiko der Platte oder des Sektors im Zusammenhang stehend. Das haben Studien in grossen Festplattenpopulationen gezeigt.
2. 'current pending sectors' steht nicht notwendigerweise dafür, das der nächste Write eine relocation antriggern wird. Wird dern nächste Write oder Read auf diesen Sektor wieder korrekt ausgefuehrt, so sinkt die Anzahl wieder. 3. Warum sollte ZFS das tun? ZFS sichert die Daten durch eigene Checksummen ab, kann daher abschätzen, ob die Daten wirklich korrekt von der Platte kommen. 4. Eine Best-Practice in Zusammenhang mit ZFS ist es, in regelmaessigen Zeitabständen einen zpool scrub durchzuführen. Dieser überprüft dann wirklich, ob alle Daten noch lesbar sind, ob sie korrekt sind und führt dann gegebenfalls ein Neuschreiben der Daten aus, um eine fehlerfreie Redundanz wiederherzustellen. Sollte es sich bei den "pending sectors" wirklich um defekte Sektoren handeln und nicht nur eine SMART-Anomalie, wird der Write neu ausgefuehrt, da die Checksummen nicht stimmen, darauf hin wird ZFS versuchen die Daten neu zu schreiben, was dann zum gewuenschten Write fuehrt. 5. Kann das irgendein anderes Filesystem?
Zu 1: Ja, aber fmadm meckert beständig und fordert wegen "immident" failure, dass die Platte getauscht wird -> teuer für Sun, aufwändig für mich, FRU-Papiere auszufüllen
Zu 2: Richtig, aber warum triggert ZFS/das System es nicht einfach? Ist wenig Aufwand und würde einer "falschen" Meldung zuvorkommen Zu 3: Darum nehmen wir ja auch ZFS Zu 4: Ja läuft wöchentlich, aber auch danach sind die current pendings noch da. Evtl. nutzt das FS diese Blöcke momentan nicht (mehr) aktiv und werden so bei einem scrub nicht mehr addressiert. Zu 5: Nicht dass ich wüsste, aber Hardware RAID Controller machen das bei einem Volume Check bzw. sollten es machen. Getestet haben wir es nur für Areca Controller. |
Links in this articleThe LKSF bookThe book with the consolidated Less known Solaris Tutorials is available for download here
Twitterfeedstwitter.com/c0t0d0s0
http://twitpic.com/22vkb7 - In the hindsight twitter.com/codenews 6966476 syseventd timeout due to lengthy pool_stats ioctl http://bit.ly/cWdEfN twitter.com/SunPatches 133391-08 - Cumulative Maintenance Sun StorageTek Unisys CSC 5R1 5-1-28. Available since Jul/05/10. http://bit.ly/cg3egG twitter.com/SolPatchesX86 Security patch: 111607-08 - SunOS 5.8_x86: /usr/sbin/in.ftpd patch. Available since Jul/02/10. http://bit.ly/azglba twitter.com/SolPatchesSPARC Security patch: 111606-08 - SunOS 5.8: /usr/sbin/in.ftpd patch. Available since Jul/02/10. http://bit.ly/9gcHsH Web 2.0Contact
Networking xing.com My photos SyndicationTagged articlesAMD Apple avs Bahn Blogging Blogosphere braindump Business Travel CeBIT cec cec2006 CMT del.icio.us deutsch dtrace fliegen Fundsache General Hamburg IBM i hate sundays Intel iscsi jumpstart Links Linux lksf Mindfuck Movies Music Musik Niagara Opensolaris Opteron Photographie policy of ... Politik Security Solaris storage Sun suncec2007 sunw t1 The IT Business Ultrasparc ultrasparc t1 Wirtschaft Work ZFS
CommentsSat, 31.07.2010 01:54
Thanks for those comparisons T
S -food for thought indeed...
Sat, 31.07.2010 01:04
Correction for old Premium pri
ce, since I misread the SPARC
premium prices:
1-2S: $1080
3S+ $1980
Current [...]
Sat, 31.07.2010 00:47
Joerg: you know what I realiz
ed after thinking about this a
little more?
http://www.th
eregister.co.uk/2009/10/ [...]
Fri, 30.07.2010 23:12
....again FUD?...
http://ww
w.computerweekly.com/Articles/
2010/07/30/242174/Oracle-clear
s-the-air-on-OpenSolaris [...]
Buttons![]() This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License
![]() ![]() ![]() Blog Administration |
Anmerkungen zum ZFS-Tutorial in der c´t - c0t0d0s0.org Die c´t schreibt im Artikel ueber ZFS:Aber auch ein RAID-Z kann richtig kaputtgehen: Als wir im laufenden Be (tags: solaris zfs stora
Tracked: Oct 08, 18:03
Tracked: Oct 09, 19:41
Jörg hat nach dem Erscheinen des ZFS Tutorials in der c’t einen guten Artikel in seinem Blog geschrieben, warum ZFS bei einem Fehler den Zugriff auf das Filesystem verweigert. Insbesondere erklärt er, weshalb das Filesystem so reagiert und aus ...
Tracked: Oct 09, 19:41