// HEISE ONLINE — HARDWARE & GADGET
Ceph in Rust: Neuer Code, alter Cluster
Ceph schrittweise auf Rust umstellen: Croits neuer NVMe-OSD läuft neben klassischen OSDs. Die Komponenten stehen jetzt als Preview bereit.
Der Ceph-Spezialist Croit hat erste Komponenten des Projekts ceph-rust jetzt als Public Preview veröffentlicht. Ein neuer Speicherdienst und zwei Client-Bibliotheken in Rust sollen NVMe-Speicher besser ausnutzen und mit bestehenden Ceph-Clustern kompatibel sein.
Die Vorschau steht seit dem 9. November 2026 zum Testen bereit, wie Croit in einem Blogbeitrag zum FlashStore OSD erklärt. Für produktive Daten sieht Croit die Komponenten natürlich noch nicht vor. Laut dem GitHub-Repository von ceph-rust plant das Unternehmen die allgemeine Verfügbarkeit für das erste Quartal 2027.
Im Mittelpunkt steht der FlashStore OSD. Er ersetzt den Object Storage Daemon ceph-osd samt dessen Speicher-Backend BlueStore durch eine Rust-Implementierung mit eigenem Objektspeicher. Laut Croit entstand die Rust-Implementierung von Grund auf neu. Als Grundlage dienten eigene Spezifikationen des Ceph-Netzwerkprotokolls und des Verhaltens der bisherigen Implementierung. Monitore, Manager und die Ceph-Kommandozeilenwerkzeuge bleiben unverändert. Auch das Ceph-Projekt entwickelt mit Crimson einen neuen OSD für schnelle Speichermedien und Netzwerke.
FlashStore OSD und die Client-Bibliothek librustyrados beherrschen das Netzwerkprotokoll von Ceph 21.2.0 (Umbrella) und 20.2.4 (Tentacle). Neue und klassische OSDs können laut Projektbeschreibung in denselben Pools und Placement Groups laufen. Administratoren sollen damit einzelne OSDs umstellen können, statt den gesamten Cluster auf einmal auszutauschen.
Auf Client-Seite ersetzt librustyrados die Bibliothek librados für den Zugriff auf den RADOS-Objektspeicher. Sie bietet eine C-Schnittstelle, eine kompatible C++-ABI auf x86_64 und eine native Rust-API. Für RBD-Blockgeräte gibt es librustyrbd. Diese Bibliothek stellt die C-API von librbd aus Ceph 21.2.0 bereit. Croit hat sie gegen Cluster beider unterstützten Ceph-Versionen getestet.
FlashStore verteilt die Arbeit auf jeweils einen Thread pro CPU-Kern. Häufig durchlaufene Verarbeitungspfade (Hot Paths) kommen laut Croit ohne Locks aus, beim Speicherpfad setzt das System auf Zero-Copy und vermeidet so zusätzliche Datenkopien im Arbeitsspeicher. Das soll den CPU-Aufwand pro I/O verringern. Standardmäßig nutzt das Projekt Kernel-TCP über io_uring. Optional steht RDMA über RoCEv2 zwischen den Rust-Clients und FlashStore OSDs bereit.
Der OSD bestätigt Schreibvorgänge erst, wenn die Daten dauerhaft auf dem NVMe-Speicher liegen. Voraussetzung sind NVMe-Laufwerke mit Stromausfallschutz (Power-Loss Protection, PLP) und einem Sektorformat von 4 KiB. FlashStore verwendet vollständige NVMe-Namespaces, keine Partitionen oder Dateisysteme. Als Betriebssystem benötigt es Linux ab Version 5.14 mit aktiviertem io_uring.
Croit liefert eigene Benchmarks gleich mit: In den 18 aufgeführten Client-Testfällen erreichen die Rust-Bibliotheken mindestens die Leistung der ursprünglichen Bibliotheken librados beziehungsweise librbd. Bei RBD-Schreibzugriffen mit 4 MiB großen Blöcken nennt Croit 17,9 statt 8,5 GByte/s – etwa das 2,1-Fache. Natürlich lässt sich das nicht auf sämtliche Ceph-Workloads übertragen.
Separat vergleicht Croit die OMAP-Verarbeitung von FlashStore mit BlueStore auf derselben Hardware. OMAP speichert Schlüssel-Wert-Paare an RADOS-Objekten, etwa für Metadaten und Bucket-Indizes. Für einen einzelnen OSD meldet Croit einen um 23 Prozent höheren geometrischen Mittelwert über alle OMAP-Messungen, für einen Cluster mit 30 OSDs einen um 22 Prozent höheren. Beide Messungen liefen auf einem EPYC-Cluster mit fünf Hosts.