Optimale nearfull ratio im Proxmox Ceph 3-Node Cluster bestimmen

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen
OSD Übersicht in einem 3-Node Ceph Cluster.

Um Datenverlust zu vermeiden, gibt es in jedem Ceph-Cluster Schwellwerte. Diese warnen und schützen davor, den Cluster zu überfüllen. Deren Standardwerte schützen in der Regel ausreichend gut.

Ceph-Cluster mit 3 Hosts stellen aber einen Sonderfall dar. In diesem Artikel geht es darum, sichere Schwellwerte für Ceph-Cluster mit 3 Hosts an einem Beispiel zu bestimmen.

Konfiguration des Clusters

3-Node Ceph Cluster mit 83% Füllgrad.

Wir verwenden einen Ceph-Cluster mit 3 Hosts in einer virtuellen Umgebung auf Proxmox VE. In einem solchen Ceph-Cluster sind 12 OSDs als Mindestanzahl empfohlen[1]:

Hosts 3
OSDs 12 (4 pro Host)
Kapazität pro OSD 16 GiB
Replica Standard (osd_pool_default_size) 3
Replica Minimum (osd_pool_default_min_size) 2

Dazu haben wir sinnvollerweise auf jedem Host einen Monitor und einen Manager installiert.

Kapazität

Insgesamt erhalten wir in unserem Beispiel-Cluster folgende Speicherkapazität:

  • Gesamtkapazität: 192 GiB (abzgl. Overhead durch Metadaten)
  • Nettokapazität: 64 GiB (abzgl. Overhead durch Metadaten)
  • Nettokapazität pro OSD: 5,33 GiB (abzgl. Overhead durch Metadaten)

Mit den Standardwerten erhält man ausgehend von der Gesamtkapazität außerdem folgende Schwellwerte für den Füllgrad des Clusters:

  • mon_osd_nearfull_ratio (85 %):
    • Cluster: 163,2 GiB
    • OSD: 13,6 GiB
  • mon_osd_backfillfull_ratio (90 %):
    • Cluster: 172,8 GiB
    • OSD: 14,4 GiB
  • mon_osd_full_ratio (95%):
    • Cluster: 182,4 GiB
    • OSD: 15,2 GiB

Die Schwellwerte werden pro OSD geprüft und entsprechend im Dashboard angezeigt.

Passende Schwellwerte bestimmen

Eine OSD ist ausgefallen. Durch die backfillfull_ratio werden keine weiteren PGs wiederhergestellt.

Zur Bestimmung guter Schwellwerte für unseren Cluster berechnen wir zunächst, was bei verschiedenen Ausfallszenarien mit den Standardwerten geschieht. Dann berechnen wir bessere Schwellwerte und stellen diese im Cluster ein.

Ausfallszenarien

Wir füllen den Test-Cluster so weit, dass einzelne OSDs bereits den mon_osd_nearfull_ratio Schwellwert von 85 % (13,6 GiB) erreichen.

Host fällt aus

Bei Ausfall eines Hosts wird keine Recovery der PGs angestoßen, da kein dritter Host als Fehlerdomäne zur Verfügung steht.

Die Datenredundanz des Clusters ist vermindert.

Anmerkung: Bei mehr als 3 Hosts werden in einem 3-fach replizierten Pool die PGs auf den verbleibenden Hosts wiederhergestellt.

OSD fällt aus

Der Cluster startet eine Recovery. Die Placement Groups (PGs) des ausgefallenen OSDs werden auf den verbleibenden OSDs desselben Hosts wiederhergestellt, da er als dritte Fehlerdomäne noch vorhanden ist. Mit folgender Formel lässt sich errechnen, welchen Füllgrad diese OSDs dann erreichen würden:

Belegungneu=OSDsOSDs1+Belegungalt

In unserem Fall bedeutet das bei 13,6 GiB Auslastung und 3 verbleibenden OSDs auf dem Host:

18,13=43*13,6

Die Maximalkapzität der OSDs wäre also überschritten. Durch einen Sicherungsmechanismus wird das verhindert. Sobald die mon_osd_backfillfull_ratio erreicht ist, stoppt Ceph die Wiederherstellung.

Die PGs werden nicht vollständig wiederhergestellt, bis Speicherplatz freigegeben oder der Cluster erweitert wird. Da es Replikate auf den anderen Hosts gibt, gehen keine Daten verloren.

Die Datendredundanz des Clusters ist aber vermindert.

Schwellwerte anpassen

Um zu gewährleisten, dass eine vollständige Wiederherstellung im Falle eines OSD Ausfalls möglich ist, sollte man die Schwellwerte anpassen.

Optimale Schwellwerte für Cluster mit 3 Hosts

Die richtigen Schwellwerte sorgen dafür, dass bei Ausfall einer OSD die Recovery nicht die Backfill-Schwelle überschreitet. Das heißt:

Backfillfullosd>Belegungneu

Am wichtigsten ist die Konfiguration der mon_osd_nearfull_ratio. Behalten wir die anderen Werte bei, ist der Optimale Wert in unserem Fall:

nearfull<0,9*43=0,675

Wobei 0,9 für eine zu 90% gefüllte OSD steht. Empfohlen ist daher eine mon_osd_nearfull_ratio von 0,67 oder geringer.

Schwellwerte in Ceph einstellen

Mit folgenden Befehlen können die Schwellwerte angepasst werden[2]:

  • mon_osd_nearfull_ratio:
root@pve0:~# ceph osd set-nearfull-ratio .67
  • mons_osd_backfillfull_ratio:
root@pve0:~# ceph osd set-backfillfull-ratio .9
  • mon_osd_full_ratio:
root@pve0:~# ceph osd set-full-ratio .95

Einzelnachweise

  1. Minimale OSDs in PVE Ceph-Clustern (pve.proxmox.com, 16.12.2025)
  2. No free drive space (docs.ceph.com, 16.12.2025)


Autor: Stefan Bohn

Stefan Bohn ist seit 2020 bei der Thomas-Krenn.AG beschäftigt. Ursprünglich als Berater für IT-Lösungen im PreSales beheimatet, wechselte er 2022 zum Product Management. Dort widmet er sich dem Wissenstransfer und treibt dabei auch das Thomas-Krenn Wiki voran.

Das könnte Sie auch interessieren

Ceph Recovery Stop bei Node-Ausfall
Ceph: Behebung des password is required command=nvme Fehlers