Lessons Learned: Der Weg zu stabilem CephFS

Daniel Baumann daniel.baumann at bfh.ch
Thu Oct 12 16:03:43 CEST 2017


Hallo zusammen,

hier eine Zusammenfassung zu "8 Monaten CephFS im Produktiv-Einsatz" und
wie wir die aufgetretenen Probleme bzgl. Stabilitaet der letzten drei
Wochen loesen koennen.


Vorausbemerkung
===============

  * In einem Ceph Storage Cluster werden die Daten in der Form
    von Objekten abgelegt.

  * Objekte in Ceph koennen entweder als Objekte, als Block Storage
    oder als Dateisystem (CephFS) von ausserhalb des Ceph Clusters
    benutzt werden.

  * Mit Ceph (= da wo die Daten physisch abgelegt werden) hatten wir nie
    Probleme, im Gegenteil - selbst ein gleichzeitiger Ausfall von 6
    Festplatten konnte Ceph nichts anhaben.

  * Mit CephFS (= so wie die Daten "angezeigt" werden) hatten wir einige
    Probleme. Diese lassen sich in die folgenden zwei Problemkreise
    einteilen.


1st Lesson Learned:
Single MDS in Default-Settings fuer CephFS ist nicht stabil genug
=================================================================

Bei Ceph Version 11.2 (kraken) vom Januar 2017, mit welchem wir den
Storage Cluster im Februar aufgesetzt haben, gab es nur die Moeglichkeit
eines einzelnen aktiven Meta-Daten-Servers (MDS), sowie mehreren
Standby-MDS.

Der MDS stellt die Ceph Objekte als CephFS zur Verfuegung, vergleichbar
einem Webserver (z.B. apache) welche eine Website (html Dateien) den
Nutzern zur Verfuegung stellt.

Dabei sind zwei Probleme aufgetreten:

1. Die Standardeinstellungen fuer den Cache eines MDS sind fuer die
   Daten und Einsatzzweck wie wir sie an der BFH haben (insbesondere
   Moodle mit 2TB Daten in knapp 1Mio. Files) nicht geignet und mussten
   zuerst optimal eingestellt werden.

   Dies hat zweimal eine kurze Downtime von Moodle im April verursacht.

2. Da nur ein einzelner MDS aktiv sein kann, und dieser crasht wegen
   zu vielen Anfragen, ist der Wechsel auf den Standby fuer einige
   Applikationen (u.a. Moodle) nicht schnell genug und kann dann zu
   Aussetzern in der Applikation fuehren.

   Dies hat zweimal eine kurze Downtime (davon einmal Moodle) Ende Juni
   und Mitte August verursacht.

Loesung: Multi-MDS mit Ceph 12.2 (luminous)
-------------------------------------------

Seit Ceph Version 12.2 (luminous) vom September werden Multi-MDS
unterstuetzt (d.h. mehrere gleichzeitig aktive MDS Instanzen, die sich
loadbalanced in einer echten aktiv-aktiv Konfiguration formieren).

Wir haben Anfang September auf luminous aktualisiert. Wir haben mit
einigen Tests ueberpruefen koennen, dass das neue Multi-MDS Setup obige
Probleme zuverlaessig behebt.


2nd Lesson Learned:
Multi-Protokoll Zugriffe auf einzelnes CephFS ist problematisch
===============================================================

Unsere Idee war folgende: Wir legen einziges CephFS an und speichern
alle Daten darauf, so dass:

  * alle Linux Systeme CephFS nativ einbinden koennen

  * fuer Windows Systeme haben wir einen Samba als Gateway-Server
    aufgesetzt, welcher das gleiche, eingebundene CephFS via SMB
    serviert.

Vorteil davon ist dass alle Daten, unabhaengig vom Zugriffsprotokoll/Art
nur einmal zentral abgelegt werden muessen und der Komfort, dass von
ueberall/mit allen Clientssystemen gleichermassen benutzt werden
koennen.

Problem: das funktioniert so nicht :(

Es treten zwei problematische Szenarien auf: Der Samba Server hat,
standardmaessig, alle Files die durch Windows User in Benutzung waren,
innerhalb von Samba gelockt. Diesen Lock gibt er an CephFS
"unvollstaendig" weiter, d.h.:

   * (vereinfacht:) Bricht ein Windows Client ab, werden die Samba Locks
     wieder freigegeben, nicht aber die darunterliegenden CephFS Locks.

     Dadurch wird der MDS extrem belastet (bis er dann nach einer
     grossen Anzahl von "haengenden" Locks sich beendet und das ganze
     CephFS mit sich reist), und andere User koennen die Files via
     CephFS nicht bearbeiten. Das ist insbesondere bei den Linux Number
     Crunchern ein grosses Problem, da dort die User mit Windows Clients
     die Daten "organisieren" und via SSH auf den Linux Servern dann
     damit rechnen.

     Abschalten der Locks im Samba Server hilft, ist aber nicht
     trivial bzgl. dessen Verhalten, siehe anstatt vieler:


https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/locking.html

   * Wird ein File zuerst auf CephFS bearbeitet, kann es trotzdem durch
     Samba gleichzeitig bearbeitet werden, da dieser die CephFS Locks
     wegen obigem Verhalten dann nicht/nur unvollstaendig beachtet.

Diese Problematik hat sich erst in den letzten drei Wochen ergeben,
da seither viel mehr Leute den Samba Server fuer Dateiaustausch benutzt
haben. Dies war im ersten Halbjahr nicht der Fall, weshalb dies
unbemerkt blieb.

Loesung: kein Multi-Protokoll sondern dezidierte Ceph Pools
-----------------------------------------------------------

Die gute Nachricht:

  Ein Ceph Storage Cluster kann immer schon in mehrere
  Pools partitioniert werden. Wenn wir also einen eigenen Pool pro
  Protokoll/Zugriffsart verwenden (einen fuer SMB, einen fuer NFS, einen
  fuer CephFS), gibt es keine konkurrierenden Zugriffe und wir
  haben einen stabilen Zugriff auf unseren Ceph Storage Cluster.

Die schlechte Nachricht:

  * da wir durch einige konkurierende Zugriffe der letzten Paar Tage
    einige Datei-Artefakten haben die wir nicht mehr loeschen koennen,
    muessen wir fuer eine saubere Transition einen neuen Pool anlegen
    und die Daten umkopieren.

  * Dies ginge online (d.h. ohne Unterbruch und transparent fuer die
    Nutzer), sofern wir genuegend Platz auf unserem Ceph Cluster haetten.

    Die Erweiterung des Clusters war fuer Herbst 2016 geplant und hat
    sich leider immer wieder verzoegert. Voraussichtlich werden wir
    im Fruehling 2018 den Ausbau vornehmen koennen.

    Da die Migration aber dringend ist, muessen wir eine offline
    Migration machen, d.h. alle Daten wegkopieren, Pool loeschen,
    Pool neu anlegen, Daten zurueckkopieren.

    Von den momentan belegten 53TB muessen wir so rund 37TB hin- und
    herschaufeln, frei sind (abzueglich Sicherheitsreserven etc.) gerade
    noch rund 15TB.

Glueck im Unglueck:

  * Wegen der laufenden NetApp Migration koennen wir den alten NetApp
    als temporaeren Zwischenspeicher benutzen und dies innerhalb der
    naechsten 10 Tage durchfuehren (mehr dazu im naechsten Mail).


Schlussbemerkungen
==================

Wir haben versucht, maximalen Komfort fuer unsere User zur Verfuegung
zu stellen - CephFS ist leider immernoch etwas Neuland und so kommt
dieser Komfort leider zum Preis von oben genannten Service
Unterbruechen.

Datenverfuegbarkeit und -integritaet sind wichtiger als Komfort, daher
muessen wir die Migration auf einzelne Pools vornehmen, auch wenn
dadurch z.B. nicht-Linux User fuer den Datenaustausch mit den Linux
Number Crunchern ein zusaetzliches Programm (WinSCP/Cyberduck) benutzen
muessen, statt des Windows Explorers/Finders.

Wir moechten uns nochmal ausdruecklich fuer die Unanehmlichkeiten der
letzten drei Wochen entschuldigen und hoffen auf euer Verstaendnis.

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