Precipice.tech Logo precipice.tech
Start / Blog / Ceph oder ZFS
Deep Dive · Storage-Ökonomie

Ceph ist grandios. Nur selten wirtschaftlich

Scale-out-Storage verlangt eine Mindestgröße, bevor er überhaupt funktioniert. Wer sie unterschreitet, kauft Redundanzmechanik für drei Racks und betreibt damit einen Backup-Server. Eine Rechnung mit offengelegten Annahmen, plus die Architektur, die stattdessen trägt.

Autor Jan Uka Stand Ceph 19 (Squid), OpenZFS 2.3 Lesezeit ~14 min Level Entscheider / Architekt
01

Die These: Du zahlst für Skalierung, die du nie abrufst

In der IT wird oft blind der Enterprise-Standard gekauft, weil die Entscheidung auf dem Papier sicher wirkt. Niemand wurde je dafür kritisiert, Ceph vorgeschlagen zu haben. Aber Budgets schützt man nicht mit Buzzwords, sondern mit Ressourcenplanung, die zum tatsächlichen Zuschnitt passt.

Ceph ist ein hervorragendes System. Es skaliert über Racks und Standorte, es heilt sich selbst, es kennt keine Forklift-Upgrades, und mit Erasure Coding senkt es die Speicherkosten gegenüber klassischer Replikation deutlich. Es lässt sich hyperkonvergent auf vorhandenen GPU-Nodes mitfahren, und das Netzwerk profitiert davon, dass Clients Anfragen direkt an den zuständigen Node stellen statt über einen zentralen Kopf zu laufen.

Genau diese Mechanismen haben aber eine Eintrittsschwelle. Sie sind nicht optional dazuschaltbar, sie sind die Architektur. Wer ein Projekt darauf zwingt, das die Skalierung nie braucht, kauft die vollständige Mechanik und ruft davon nichts ab. Die Kosten für Hardware, Strom und vor allem für die fortlaufende Administration laufen trotzdem weiter.

Worum es hier nicht geht Dies ist kein Argument gegen Ceph. Es ist ein Argument gegen Ceph unterhalb seiner Mindestgröße. Ab Abschnitt 07 steht, wo die Grenze verläuft und wann die Entscheidung eindeutig zu Ceph kippt.
02

Die Node-Schwelle: was Ceph strukturell verlangt

Ceph verteilt Daten nicht über Platten, sondern über Fehlerdomänen. Im Standard-CRUSH-Ruleset ist diese Domäne der Host. Das ist die entscheidende Zahl, denn daraus folgt direkt, wie viele komplette Server du kaufen musst, bevor das System überhaupt seinen Zweck erfüllt.

Dazu kommt das Monitor-Quorum: MONs entscheiden per Mehrheit über den Cluster-Zustand. Zwei MONs sind schlechter als einer, weil der Ausfall eines einzelnen das Quorum bereits zerstört. Produktiv sind es deshalb immer mindestens drei.

Abb. 1 · Mindest-Hardware pro Verfahren bei 150 TB Nutzkapazität (Modus oben umschalten)

Die Rechnung für Erasure Coding ist unerbittlich: Ein Profil mit k Daten- und m Paritäts-Chunks verlangt mindestens k+m Fehlerdomänen, damit jeder Chunk auf einem eigenen Host liegt. Für einen sinnvollen Betrieb willst du mindestens eine Domäne mehr, sonst kann der Cluster nach einem Host-Ausfall nicht rekonstruieren, sondern nur noch ausliefern.

VerfahrenChunksHosts minimalFür RecoveryNutzbarHost-Ausfälle
replicated size=33 Kopien3433 %1
k=2, m=133467 %1
k=4, m=266767 %2
k=8, m=311111273 %3

Damit ist der oft gehörte Satz „mit Erasure Coding wird Ceph günstig" für kleine Umgebungen entwertet. Die guten Effizienzwerte beginnen bei sechs Hosts. Wer bei drei Nodes bleibt, hat entweder 33 % Nutzkapazität durch dreifache Replikation oder ein k=2,m=1-Profil, das exakt einen Host-Ausfall verträgt und beim Rebuild den halben Cluster durchs Netz zieht.

ceph
# Profil anlegen. Ohne genug Hosts bleiben die PGs dauerhaft in incomplete.
ceph osd erasure-code-profile set ec42 k=4 m=2 crush-failure-domain=host

# Gegenprobe vor dem Kauf: reichen die Fehlerdomänen ueberhaupt?
ceph osd tree
ceph osd erasure-code-profile get ec42
Häufiger Denkfehler OSDs sind keine Fehlerdomänen. Sechs OSDs auf zwei Hosts erfüllen ein k=4,m=2-Profil nur, wenn du die Failure Domain auf osd herunterdrehst. Dann überlebt der Pool den Ausfall einer einzelnen Platte, aber nicht den eines Servers. Genau dafür hat man Ceph nicht gekauft.
03

Die versteckten Posten

Die Node-Anzahl ist der sichtbare Teil. Teuer wird Ceph an drei Stellen, die in der ersten Kalkulation selten auftauchen.

Netzwerk

Ceph repliziert im Hintergrund. Jeder Write mit size=3 erzeugt zwei zusätzliche Übertragungen, jeder Host-Ausfall löst ein Recovery aus, das so schnell läuft, wie das Netz es zulässt. Empfohlen sind getrennte Public- und Cluster-Netze, praktisch bedeutet das 25 GbE aufwärts und redundante Switches. Bei drei Nodes finanzierst du damit eine Switch-Infrastruktur, deren einziger Zweck es ist, Kopien zwischen drei Gehäusen zu schieben, die im selben Rack stehen.

RAM

BlueStore reserviert per Default rund 4 GiB pro OSD (osd_memory_target). Ein Node mit zwölf Platten bindet also allein für die OSDs etwa 48 GiB, bevor MON, MGR und im CephFS-Fall die MDS dazukommen. Auf einem dedizierten Storage-Node ist das eingeplant. Auf einem hyperkonvergenten GPU-Node konkurriert es mit genau dem RAM, für den du die Maschine gekauft hast.

Hyperkonvergenz auf GPU-Nodes Technisch funktioniert es. Wirtschaftlich verschiebst du damit CPU-Zyklen und RAM von Trainings- und Inferenz-Workloads zu Replikationsverkehr. Ein Recovery nach Node-Ausfall trifft dann ausgerechnet die Maschinen, die gerade rechnen sollen. Wer GPU-Stunden bezahlt, will diese Kopplung nicht.

Administration

Das ist der Posten, der die Rechnung entscheidet, und der einzige, der nach der Beschaffung immer weiterläuft. Ceph braucht Kompetenz im Haus: PG-Autoscaling verstehen, CRUSH-Maps lesen, Upgrades in der richtigen Reihenfolge fahren, Near-Full-Zustände abfangen, Recovery-Throttling gegen Client-Latenz abwägen. Nichts davon ist exotisch, aber alles davon ist Aufwand, der bei einem einzelnen ZFS-Pool schlicht nicht existiert.

04

Die Rechnung an einem konkreten Zuschnitt

Nehmen wir einen realistischen Fall aus dem Mittelstand: 150 TB nutzbar, als Backup-Ziel und Scratch-Layer für einen lokalen GPU-Cluster. Kein Multi-Rack-Ausbau geplant, kein S3-Angebot an Dritte, keine mandantenfähige Plattform.

Ceph, 3 Nodesreplicated size=3
Hardware
Strom
Administration
ZFS + Replikatraidz2 + special vdev
Hardware
Admin
Hardware Netzwerk Strom, 5 Jahre Administration, 5 Jahre
Faktor über fünf Jahre: rund 2,2×. Der größte Einzelposten ist nicht die Hardware, sondern die laufende Administration.
Abb. 2 · Modellrechnung über fünf Jahre, Annahmen unten offengelegt
PositionCeph, 3 NodesZFS, 1 Node + Replikat
Rohkapazität nötig~450 TB (size=3)~2 × 190 TB (raidz2)
Server3 × Storage-Node1 × dicht bestückt, 1 × Replikationsziel
Netzwerk2 × 25 GbE Switch, redundantvorhandenes 10 GbE
Leistungsaufnahme~1.350 W~600 W
Administration~6 h/Monat~1,5 h/Monat
Annahmen der Modellrechnung 20-TB-Enterprise-HDDs, Strompreis 0,25 €/kWh im Dauerbetrieb, interner Administrationssatz 120 €/h, Betrachtungszeitraum 60 Monate, keine Support-Subscriptions auf beiden Seiten. Die Zahlen sind ein Modell, kein Angebot. Setz deine eigenen Werte ein: das Verhältnis bleibt stabil, solange der Administrationsposten realistisch angesetzt wird.

Wichtig ist die Struktur, nicht die Nachkommastelle. Selbst wenn man die Hardware-Seite großzügig zugunsten von Ceph rechnet, bleibt der Administrationsblock. Er ist der Grund, warum sich ein Scale-out-System auf einem Zuschnitt, der nie skaliert, nicht amortisiert.

05

Die ZFS-Antwort: ein dichter Server statt drei halbleere

Für stark fokussierte Umgebungen bauen wir extrem dichte Architekturen auf einzelnen Servern. Die Datenmasse tragen hochkapazitäre HDDs im RAIDZ2, die Zugriffsmuster fängt eine NVMe-Schicht ab. Der entscheidende Baustein ist das Special vdev: Es nimmt Metadaten und alle Blöcke unterhalb einer definierten Schwelle auf.

zfs
# 2 x raidz2 aus 20-TB-HDDs, dazu ein gespiegeltes Special vdev auf NVMe
zpool create tank \
  raidz2 /dev/disk/by-id/ata-HDD_{01..06} \
  raidz2 /dev/disk/by-id/ata-HDD_{07..12} \
  special mirror /dev/disk/by-id/nvme-NVME_01 /dev/disk/by-id/nvme-NVME_02

# Metadaten plus alles unter 32K landen auf Flash
zfs set special_small_blocks=32K tank/backup

Damit verschiebt sich das Lastprofil grundlegend. Verzeichnis-Traversierungen, rsync-Scans und die vielen kleinen Zugriffe interner Datenbanken treffen nicht mehr die Platten, sondern NVMe. Aus den 120 bis 200 IOPS, die ein RAIDZ-vdev physikalisch liefert, werden zehntausende IOPS bei Flash-Latenz, ohne dass die Kapazität teurer wird.

Dazu kommt der Schreibpfad. ZFS sammelt Writes im RAM zu Transaction Groups und schreibt sie gebündelt als große, sequenzielle Blöcke auf die vdevs. Viele kleine, verstreute Schreibzugriffe werden so zu wenigen großen. In Kombination mit dem Special vdev, das die Metadaten-Updates komplett abfängt, sinkt die mechanische Belastung der HDDs deutlich, und das verlängert ihre Lebensdauer spürbar.

Präzisierung, weil es oft verkürzt wird Der ARC ist ein Lese-Cache. Was die Platten vor Schreiblast schützt, ist die TXG-Aggregation plus das Special vdev, nicht der ARC. Sync-Writes, etwa von Datenbanken oder NFS, brauchen zusätzlich ein SLOG auf NVMe mit Power-Loss-Protection. Die Details dazu stehen im ZFS Deep Dive.

Der wirtschaftliche Effekt: Ein einzelnes Gehäuse liefert die Kapazität, die im Ceph-Entwurf drei Gehäuse gebraucht hätten, plus eine IOPS-Charakteristik, die für Backup-Ziele und GPU-Scratch mehr als ausreicht. Das Geld, das nicht in Redundanzmechanik fließt, steht für Rechenleistung zur Verfügung.

06

Der ehrliche Einwand: das ist ein Single Point of Failure

Ja. Ein einzelner Server ist eine einzelne Fehlerdomäne, und wer das verschweigt, verkauft genauso unsauber wie derjenige, der pauschal Ceph anbietet. Die Frage ist nicht, ob ein SPOF existiert, sondern ob die geforderte Wiederanlaufzeit ihn erlaubt.

AnforderungAntwort ohne CephRealistische RTO
Datenverlust vermeidenzfs send auf ein zweites System, inkrementellRPO = Snapshot-Intervall
Betrieb nach Hardware-DefektKaltreserve mit identischem Controller, Pool-ImportStunden
Betrieb ohne UnterbrechungHA-Paar mit Shared JBOD und FailoverMinuten
Unterbrechungsfrei plus Multi-Rackhier gehört Ceph hinSekunden

Für ein Backup-Ziel ist eine RTO von Stunden fast immer akzeptabel, denn das System ist per Definition die zweite Kopie. Für GPU-Scratch ebenfalls, weil die Daten reproduzierbar sind. Genau in diesen Fällen kauft man mit Ceph eine Verfügbarkeitsklasse, die niemand angefordert hat, und bezahlt sie fünf Jahre lang.

Umgekehrt gilt: Wenn die Anforderung tatsächlich unterbrechungsfreier Betrieb über mehrere Fehlerdomänen ist, dann ist ein einzelner ZFS-Server die falsche Antwort. Dann ist die Diskussion beendet, und die Node-Anzahl aus Abschnitt 02 ist schlicht der Eintrittspreis.

07

Wo die Grenze wirklich liegt

Die Entscheidung lässt sich auf wenige Fragen reduzieren. Sobald zwei davon klar auf Ceph zeigen, ist Ceph richtig, und zwar ohne Wenn und Aber.

FrageZeigt auf ZFSZeigt auf Ceph
Wächst die Umgebung über ein Rack hinaus?nein, ein Standortja, mehrere Racks oder Räume
Wie viele Storage-Hosts sind finanziert?1 bis 26 und mehr
Ist Ausfallzeit in Stunden tolerierbar?janein, Minuten oder weniger
Wird ein S3-Endpunkt gebraucht?nein oder per MinIO davorja, nativ über RGW
Mehrere Mandanten mit eigenen Pools?neinja
Ist Ceph-Kompetenz im Haus?nein, oder eine Personja, im Team verankert
Wächst die Kapazität unvorhersehbar?planbarlaufend, in kleinen Schritten

Die letzte Zeile ist die, die am häufigsten unterschätzt wird. Ceph erlaubt es, einzelne OSDs und Nodes im laufenden Betrieb hinzuzufügen, ohne den Pool anzufassen. ZFS verlangt, dass man beim vdev-Layout vorher nachdenkt. Wer echtes, unvorhersehbares Wachstum hat, kauft mit Ceph nicht Redundanz, sondern Planungsfreiheit, und die ist ihr Geld wert.

08

Blueprint für den 150-TB-Fall

Konkret, damit die Diskussion nicht abstrakt bleibt. Das ist die Konfiguration, die wir für Backup-Ziel plus GPU-Scratch in dieser Größenordnung bauen.

KomponenteAuslegungZweck
Daten-vdevs2 × raidz2, je 6 × 20 TBKapazität, zwei Plattenausfälle pro vdev
Special vdev2 × 3,84 TB NVMe, MirrorMetadaten und Blöcke < 32K
SLOG2 × NVMe mit PLP, Mirrornur bei Sync-Last, etwa NFS oder DB
RAM256 GBARC für Lesecache und DDT-freien Betrieb
HBAIT-Mode, kein RAID-ControllerZFS sieht jede Platte einzeln
Replikatzweites System, zfs send stündlichzweite Fehlerdomäne, RPO 1 h
Netzwerk2 × 10 GbE, LACPreicht für Backup-Fenster und Scratch
zfs
# Belegung des Special vdev im Blick behalten. Laeuft es voll,
# spillen neue Metadaten zurueck auf die HDDs und der Effekt ist weg.
zpool list -v tank

# Inkrementelle Replikation auf das zweite System
zfs snapshot tank/backup@$(date +%Y%m%dT%H%M)
zfs send -I @vorher @jetzt tank/backup | ssh replikat zfs recv -F tank/backup

Die Reihenfolge der Investition ist dabei fast immer dieselbe: erst die Kapazität sauber auslegen, dann das Special vdev, dann RAM, und ein SLOG nur, wenn eine echte Sync-Last nachgewiesen ist. Wer stattdessen mit der Frage „Ceph oder nicht" beginnt, hat die Reihenfolge bereits umgedreht.

Zum Mitnehmen Die Architektur folgt der Anforderung, nicht dem Herstellernamen. Skaliert die Umgebung über Racks, ist Ceph richtig und jeden Euro wert. Skaliert sie das nicht, ist ein dichter ZFS-Server bei gleicher Nutzkapazität die deutlich wirtschaftlichere Antwort, und das freigewordene Budget landet dort, wo es Wert schafft: in Rechenleistung.
Nächster Schritt

Erst rechnen, dann kaufen

Wir konzipieren und bauen schlüsselfertige GPU-Cluster und Speichersysteme nach wirtschaftlicher und technischer Realität. Wenn du wissen willst, auf welcher Seite der Grenze dein Projekt liegt, rechnen wir das gemeinsam durch, bevor Hardware bestellt wird.