Hintergrund zum Ceph-Ausfall - technische Kurzfassung

Daniel Baumann daniel.baumann at bfh.ch
Sun Apr 18 22:03:33 CEST 2021


Hallo zusammen

Hier die technische Kurzfassung fuer Ceph-vertraute Personen zum Ceph
Totalausfall der vergangenen Woche.

Diese Kurzfassung enthaelt keine weiteren Links, Zahlen,
Erklaerungen oder Loesungsschritte (dazu dann zu Dokumentationszwecken
die Langfassung spaeter).


1. Ausgangslage
===============

  * Wir betreiben Ceph in der aktuellen Version 15 (octopus) mit
    replica 3 und min_size 2.

  * Aktuell relevant laufen wegen des Rechenzentrum-Umzuges
    nur 3 von 6 HDD Server, jeder mit jeweils 60 OSDs
    (= total 180 HDD OSDs up).

  * Fuer unstruktierten Legacy-Storage via SMB verwenden wir zwischen
    50TB und 250TB RBDs pro Departement, formatiert als ext4,
    gemountet via kernel rbd, exportiert via Samba.


2. Probleme
===========

2.1 kernel rbd - Snapshot Limit
-------------------------------

  * Durch Erreichen des 513. Snapshots (undokumentiertes Hardlimit bei
    Verwendung des kernel rbd) auf dem HAFL RBD wurde dieses fuer den
    kernel rbd automatisch gelockt.

  * Das Removal von Snapshots auf RBDs triggert snaptrim auf den OSDs.


2.2 bluefs_buffered_io - Default Value
--------------------------------------

  * Upstream hat bluefs_buffered_io in einem der letzten Point Releases
    von true auf false gesetzt.

  * Upstream hats seither fuer alle vorherigen Releases wieder reverted,
    (noch) nicht aber fuer Ceph 15.

  * Mit bluefs_buffered_io=false wurden waehrend snaptrim die OSDs
    unresponsive, die MONs markierten die OSDs dementsprechend als down.


2.3 Python import - Bug in den Paketen
--------------------------------------

  * Upstream hat einen Bug in den Downstream Paketen wie Ceph den Python
    Module Loader verwendet.

  * Der Bug fuehrt bei den OSDs zum Nicht-Starten des eigentlichen
    Prozesses.

  * Da die MONs alle OSDs die als down markiert sind, automatisch weil
    selbstheilend neu startet, fallen somit snaptrimmende OSDs komplett
    aus.


2.4 halbe Redundanz/Groesse
---------------------------

  * Durch die suboptimale Verteilung aufgrund des wegen Rechenzentrum-
    Umzuges um die Haelfte verkleinerten Clusters hat jeder Host im
    Schnitt 1+1/3 Replicas.

  * Da alle PGs des Pools gleichverteilt sind, faellt somit beim Ausfall
    eines OSDs mind. mehrere PGs aus.

  * Da bei RBDs faktisch Inodes = Objects gilt, und diese ueber die PGs
    gleichverteilt sind, und alle RBDs fuer SMB in einem Pool sind,
    faellt beim Ausfall einer PG mit groesster anzunehmender
    Wahrscheinlichkeit Inodes aus mehreren resp. aus allen RBDs
    innerhalb des gleichen Pools weg.

  * Weil wenn 1.33 Replicas von 3 wegfallen, die verbleibende Replica-
    Zahl unter 2 ist und wir den Cluster auf min_size=2 haben, sind
    somit beim Ausfall *eines* einzigen (sic!) OSDs *alle* (sic!)
    SMB RBDs nicht nur im ueblichen write-lock, sondern weil
    'data unavailable' komplett down.


3. Zusammenfassung
==================

TL;DR:

  * weil Snapshot Limit auf einem RBD erreicht...
  * danach ein Snapshot geloescht...
  * darum laeuft snaptrim...
  * wegen bluefs_buffered_io=false dadurch OSDs unresponsive...
  * somit MONs markieren OSDs down...

  * weil OSDs nicht mehr starten wegen Python Bug...
  * und mehr OSDs nicht da weil Cluster reduziert wegen RZ-Umzug...
  * darum PGs nicht mehr verfuegbar...
  * soweit dass min_size unterschritten wird...

  * somit alle RBDs down...
  * dadurch alle nicht-Basisdienste der Science DMZ down...
  * verstaendlicherweise alle User unhappy...
  * LNI arbeitet ueber Nacht durch...
  * alles wieder gut.

Gruesse,
Daniel

-- 
Berner Fachhochschule / Bern University of Applied Sciences
Services / IT-Services
Daniel Baumann
Teamleiter Linux & Infrastructure Services
___________________________________________________________
Dammweg 3, CH-3013 Bern
Telefon direkt +41 31 848 48 22
Telefon Servicedesk +41 31 848 48 48
daniel.baumann at bfh.ch
https://bfh.ch
https://bfh.science


More information about the bfh-linux-announce mailing list