CephFS Ausfall vom 12.6. (Erklaerung)
Daniel Baumann
daniel.baumann at bfh.ch
Wed Jun 21 07:44:55 CEST 2017
Hallo zusammen,
wie immer hier der ausfuehrliche Bericht zum CephFS-Ausfall von letzter
Woche.
Zusammenfassung
===============
* es sind 6 von 72 Harddisks innerhalb von wenigen Minuten
ausgefallen, das ist durchaus ein normales Ereignis und nicht weiter
tragisch.
Ceph ist robust genug, Ausfaelle in solchen Groessenordnungen
problemlos und unterbruchsfrei zu ueberstehen.
* Datenintegritaet war und ist jederzeit Gewaehrleistet.
* das sofort automatisch einsetzende Rebalance
(= Wiederherstellen der 3-fachen Redundanz aller Dateien
im Cluster durch Anlegen von Kopien der durch den Disk-Ausfall
fehlenden Objekte) hat in der Standarteinstellung
von Ceph fuer kleine Cluster eine zu hohe Prioritaet.
Dies fuehrt dazu dass die I/O Performance des Clusters waehrend
dem Rebalance zu stark vermindert ist, so dass diese nicht mehr
fuer Anwendungen mit groessere Nutzerzahlen ausreicht.
* sicherheitshalber haben wir das Rebalance abgewartet und die
ensprechenden Dienste fuer diese Zeit heruntergefahren.
* Moodle war deshalb am 12.6. von 11:16 bis 18:00 nicht erreichbar.
Massnahmen
==========
* Wir haben die Rebalance Settings ensprechend angepasst
(osd_scrub_during_recovery und osd_recovery_max_active).
* Damit sind wir sicher dass bei einem beliebig grossen gleichzeitigen
Ausfall von Disks (unterhalbs des Maximums der aktuellen Belegung
des Clusters) die I/O Performance ueber die ganze
Rebalance Dauer gewaehrleistet bleibt und alle darauf aufbauenden
Dienste wie z.B. Moodle fuer alle Nutzer unveraendert weiterlaufen.
---
Details
=======
Bemerkungen zu Harddisks im Allgemeinen
---------------------------------------
* Grundsaetzlich sind Harddisks Verrauchsmaterial, d.h. weil sie
rotierende Medien sind ist es nur eine Frage der Zeit bis sie
kaputt gehen und nicht ob sie kaputt gehen.
* Wenn man eine geneugend grosse Anzahl Disks im Einsatz hat gehen
staendig Disks kaputt, das ist normal.
* So haben groessere Rechenzentren von z.B. Cloud-Anbietern
jederzeit mehrere Dutzend Personen im Einsatz welche rund um die Uhr
im 4-Schicht-Betrieb nur eines tun - Disks wechseln.
* Wenn man viele Disks gleichzeitig beschafft, erhaelt man in der
Regel alle von der gleichen Produktionscharge. Zusaetzlich werden
Disks in Storage-Systemen ueblicherweise "gleich" benutzt, d.h. sie
laufen alle genau gleich lang, wurden gleichviel an- und
abgeschaltet, und es wurde auch gleichviel und in gleichen Mustern
gelesen/geschrieben.
Dadurch ergibt sich eine gleiche Abnutzung/Verbrauch der Mechanik
und damit ein grosses Klumpenrisiko: wenn eine Disk aufgrund von
Abnutzung/Verbrauch ausfaellt, ist es sehr wahrscheinlich dass
weitere Disks innerhalb kurzer Zeit ebenfalls ausfallen.
* Um dieses Risiko zu verringern (sowohl aufgrund Abnutzung/Verbrauch,
als auch die Chance dafuer, dass man eine schlechte Charge erwischt
hat) setzt man auf unterschiedliche Hersteller und u.U. auch
unterschiedliche Modelle/Groessen einer Harddisk.
Ceph welches fuer maximales Scale-out designed ist, ist flexibel
und kann jede beliebige Groesse von Disks ohne Verschnitt im Cluster
einbinden (was ja bei RAID nicht so waere), was ein grosser Vorteil
resp. eine zwingende Anforderung fuer mittlere und groessere Storage
Systeme ist.
* Trotzdem: Disks sind Verbrauchsmaterial und fallen so oder so aus.
Die Aufgabe des Sysadmins ists beim Aufbau von Storage Systemen
dafuer zu sorgen, dass der garantiert auftretende gleichzeitige und
mehrfacher Ausfall von Disks einen minimal geringen Einfluss auf das
System haben kann.
* Backblaze (Anbieter von Cloud-Storage) ist einer der wenigen die
Statistiken ueber Diskausfaelle veroeffentlichen. Bei der
Interpretation muss man allerdings etwas aufpassen - Backblaze setzt
auf moeglichst billig und auf Masse, d.h. sie setzt auch
Occasion/Second Hand/Used Disks und Retouren/Refurbished Disks ein
welche via Ebay und andere "Quellen" gekauft werden.
https://www.backblaze.com/b2/hard-drive-test-data.html
Bemerkungen zu den Harddisks im BFH Ceph Cluster
------------------------------------------------
* Unser Cluster hat insgesamt 72 Disks:
- 36x Western Digital Red Pro 4TB
- 36x Seagate Enterprise Capacity 4TB
* Die Seriennummern von beiden Modellen sind z.T. direkt
aufeinanderfolgend, kommen also alle aus einer Charge. Als kleiner
Kunde koennen wir leider nicht vernuenftige Verteilung ueber mehrere
Chargen erhalten (oder muessten stark Zeitversetzt einkaufen, was
Beschaffungen enorm verkompliziert). Wir koennen daher lediglich auf
die Diversifizierung (unterschiedliche Hersteller, unterschiedliche
Modelle) setzen um eine maximale Diversitaet zu erreichen.
* Fuer zukuenftige Ceph Cluster Erweiterungen werden wir mind. auf ein
weiteren Hersteller zurueckgreifen, so dass wir dann Disks von 3
Herstellern im Verbund haben.
* Die 6 gleichzeitig ausgefallenen Disks waren folgendermassen verteilt:
- storage2.ceph.bfh.ch: /dev/sdh1 - WD Red Pro
(S/N: WD-WMC5D0D683A1)
- storage2.ceph.bfh.ch: /dev/sdm1 - WD Red Pro
(S/N: WD-WMC5D0D79C84)
- storage4.ceph.bfh.ch: /dev/sdc1 - WD Red Pro
(S/N: WD-WMC5D0D23D88)
- storage4.ceph.bfh.ch: /dev/sdk1 - WD Red Pro
(S/N: WD-WMC5D0D0YJTD)
- storage4.ceph.bfh.ch: /dev/sdl1 - WD Red Pro
(S/N: WD-WMC5D0D57V5T)
- storage6.ceph.bfh.ch: /dev/sdf1 - WD Red Pro
(S/N: WD-WMC5D0D9X5L3)
* Dies "passt" ein bisschen ins Bild - alle 72 Disks laufen seit
September 2015 im 24/7 Betrieb, bisher sind erst 3 Disks Ausgefallen
(3x WD Red Pro im Herbst/Winter 2016).
* Daraus kann man allerdings keine serioesen verallgemeinernde
Schluesse ziehen:
- die Gesamtanzahl der Disks ist mit 72 zu gering
- in der Regel sind alle Disks gleich "schlecht", egal welcher
Hersteller.
- man kann Glueck oder Pech haben mit einer Charge/Produktionslinie
von Disks, unabhaengig von Hersteller und Modell. So ist ein Jahr
mal das eine Modell das beste, und im Folgejahr ist das
schlechteste.
Bemerkungen zum Ceph Rebalance
------------------------------
* Bei Ceph ist bzgl. Rebalance nicht relevant, wann eine defekte Disk
ersetzt wird oder nicht - im Fehlerfall werden die (zum
vollstaendigen Erreichen der verwendeten Anzahl der Replicas)
Objekte automatisch und sofort auf allen anderen verfuegbaren Disks
gleichmaessig verteilt.
* Ebenfalls ist nicht relevant wieviele Disks gleichzeitig ausfallen,
solange es noch genuegend "freien" Platz hat um durch Rebalance zu
kompensieren.
* Der Einfachheit halber kann man sich das mit dem folgenden Modell
vorstellen...
- bei Replica 3 bilden 3 Disks zusammen eine logische Gruppe
- innerhalb dieser Gruppe ist ein gewisses Set an Dateien abgelegt
und ueber diese gleichmaessig verteilt (d.h. jede Disk hat je eine
Kopie aller Daten).
- wenn eine Disk der Gruppe ausfaellt, haben nur noch zwei Disks die
Daten, auf diesen koennen die Daten jederzeit gelesen/geschrieben
werden. Die Gruppe bestehlt also nur noch aus zwei Disks.
- setzt das Rebalance ein, kommt (fiktiv) eine neue Disk in die
Gruppe rein.
- damit auf die neue Disk geschrieben werden kann, werden von den
anderen zwei Disks gleichzeitig die Daten je zur Haelfte gelesen.
- Dadurch verringert sich die Lese/Schreib-Performance auf die
Dateien welche innerhalb dieser logischen Gruppe abgelegt sind.
* ...mit folgender Charakteristika:
- Wenn niemand waehrend des Rebalances auf diese Dateien zugreifen
will, spielt es keine Rolle dass diese nur langsam verfuegbar
waeren.
- Wenn auf diese Dateien zugegriffen werden soll, muss der Ceph
ensprechend QoS machen, d.h. Zugriffe abseits des Rebalance
muessen prioritaer behandelt werden, ansonsten sind die Files
nicht in nuetzlicher Performance les/schreibbar.
* Die Anzahl der gleichzeitig rebalancenden logischen Gruppen ist
bzgl. Performance nur insofern relevant, als dass bei sehr kleinen
Clustern (<< 100 Disks) aufgrund der groesseren relativen
Gesamtanteils einer Disk am Cluster, dies die Wahrscheinlichkeit
erhoeht dass durch das Rebalance die Disks beschaeftigt sind mit
genau den Daten, die man lesen/schreiben will.
* oder anderst:
- faellt eine Disk aus, sind drei beschaeftig (2x lesen,
1x schreiben)
- fallen 6 Disks aus, sind 18 Disks beschaeftigt (12 lesen,
6x schreiben)
- Daumenregel: sind ~10% oder mehr der Disks des Clusters
beschaeftigt waehrend eines Rebalances, ist die Gesamt-I/O
Performance des Clusters nicht mehr ausreichend gewaehrleistet.
* Nota Bene: ja, auch Netzwerk-Performance spielt hier eine Rolle, wir
haben allerdings genug davon so dass wir mit gemessenen 8Gbit Netto
rebalancen koennen, pro System:
- 2x 10GBit active-active LACP: Ceph Public Network, da kommen
die "Client" Anfragen rein
- 2x 10Gbit active-active LACP: Ceph Private Network, darueber
laeuft der Rebalance Traffic
Unser Problem ist lediglich die geringe Anzahl der Disks resp. der
Treshold, siehe unten.
* Nota Bene 2: es gibt kein anderes System das so robust ist wie Ceph
das eine so hohe Anzahl gleichzeit ausfallender Disks ohne
Datenverlust uebersteht - weder generell noch (und insbesondere)
and der BFH.
Was koennen wir dagegen tun?
----------------------------
Es gibt zwei Moeglichkeiten:
* Ceph erlaubt die Anzahl Threads welche pro Disk lesen
einzuschraenken, default ist diese auf 15. Wir haben sie auf 1
gestellt.
Dadurch wird das die Recovery Zeit bis wieder alle Replicas im
Cluster erstellt sind zu Gunsten von konstanter I/O Performance
verlaengert.
Da wir Replica 3 haben, ist dies in Ordnung so.
* Wenn die Anzahl Disks erhoeht wird, koennen gleichzeitig mehr Disks
Rebalancen ohne dass die I/O Performance runter geht.
Bei 6 gleichzeitig ausfallenden Disks sind 18 beschaeftigt, bei 72
Disks enspricht das rund 25%.
Haetten wir 288 Disks im Cluster, waehren es nur noch 6.25% :)
* Wir haben als Sofortmassnahme den Treshold angepasst. Unabhaengig
davon werden wir voraussichtlich diesen Sommer unseren Storage
Cluster mit weiteren Disks ergaenzen, welches zusaezlichen
Performance-Puffer bieten wird (Ceph ist ja das einzige System, das
je mehr Disks dazukommen, umso schneller wird das ganze System).
* Uebrigens: der Treshold laesst sich natuerlich online waehrend eines
Rebalances anpassen. Ich habe mich allerdings ohne vorgaengie
Recherche dagegen enschieden um auf der sicheren Seite zu sein.
Haette ich den Treshold runtergesetzt, waehre Moodle ueber die ganze
Zeit des Rebalances unveraendert benutztbar gewesen.
Serioese Storage-Admins irren lieber auf der zu vorsichtigen Seite,
oder anderst: konservativ-vorsichtige Admins ist ein Feature sofern
einem die Daten wichtig sind ;)
Damit moechten wir uns nochmals fuer die Unannehmlichkeiten
entschuldigen und hoffen, hiermit transparent aufgezeigt zu haben, was
das Problem war und wie wir es fuer die Zukunft ausschliessen koennen.
Gruesse,
Daniel
--
Berner Fachhochschule / Bern University of Applied Sciences
IT-Services / Team Infrastructure Services
Daniel Baumann
IT System Engineer Linux
___________________________________________________________
Dammweg 3, CH-3013 Bern
Phone direct +41 31 848 48 22
Phone Servicedesk +41 31 848 48 48
daniel.baumann at bfh.ch
https://servicedesk.bfh.ch
https://www.bfh.ch
https://linux.bfh.ch
More information about the bfh-linux-announce
mailing list