Wie DAOS maximale Leistung aus NVMe- und SCM-Speicher herauspresst
Wenn ein Standard-Dateisystem unter Millionen kleiner, zufälliger I/O-Operationen ins Stocken gerät, suchen Entwickler typischerweise nach Workarounds. Die bekannte Geschichte: Moderne NVMe-Laufwerke arbeiten mit atemberaubenden Geschwindigkeiten, aber der Standard-Linux-Kernel-Stack frisst viel Zeit für Locks und Kontextwechsel.

Linux-Foundation-Spezialisten entwickeln DAOS (Distributed Asynchronous Object Storage). Dies ist ein verteiltes Objektspeichersystem mit Open-Source-Code in C. Es wurde speziell für nichtflüchtige Speicher (NVM), Storage-Class-Memory-Module und NVMe-Laufwerke entwickelt.
Was ist die Idee
Traditionelle Speicher versuchen, das alte POSIX-Modell auf schnellen Speicher zu pressen. Das erzeugt Engpässe. DAOS verfolgt einen anderen Ansatz: Das Projekt verzichtet vollständig auf den traditionellen Kernel-I/O-Stack.
Statt vertrauter Dateien und Ordner bietet das System eine Key-Value-Struktur mit asynchroner transaktionaler I/O. Datenströme blockieren sich beim Schreiben nicht gegenseitig, und der Hardware-Zugriff erfolgt direkt über die SPDK- und PMDK-Bibliotheken.
Welche Funktionen das Projekt bietet
Die Entwickler haben mehrere Kernfähigkeiten in die Architektur für die Arbeit mit großen Datenmengen eingebaut.
- Asynchrone, nicht-blockierende Transaktionen für parallele Schreibvorgänge
- End-to-End-Datenintegritätsprüfung vom Client zum Speicher
- Automatische Wiederherstellung bei Ausfall einzelner Nodes
- Elastische Cluster-Skalierung ohne Serviceunterbrechung
Ein interessanter Punkt betrifft die Schnittstellen. Im Gegensatz zu engstirnigen KV-Stores bietet DAOS praktische Client-Wrapper. Du kannst damit über ein natives Python-Dictionary arbeiten, dich mit Spark verbinden, es durch TensorFlow-IO leiten oder HDF5- und MPI-IO-Bibliotheken nutzen, die für wissenschaftliche Software traditionell sind. Für die Kompatibilität mit Legacy-Software gibt es eine Parallel-Dateisystem-Emulation.
Was steckt unter der Haube und welche Nuancen gibt es
Der Code ist in C geschrieben, und das Repository existiert seit 2016. Das Projekt hat etwa tausend Sterne auf GitHub gesammelt, aber erwarte keine einfache Bereitstellung. Dies ist kein niedliches CLI-Tool, das du mit einem einzigen Befehl installierst.
Für den vollständigen DAOS-Betrieb ist spezialisierte Hardware mit NVMe-Unterstützung und vorzugsweise nichtflüchtigem Speicher (SCM) erforderlich. Du wirst das Konzept nicht mit einem Budget von ein paar billigen Cloud-Servern evaluieren können. Die Einrichtung der Control Plane und der Client-Bibliotheken erfordert ein solides Verständnis von Netzwerk-Stacks und Infrastruktur.
Fehlerprotokolle und Dokumentation sind detailliert, aber umfangreich. Wenn beim Build etwas schiefgeht, musst du dich durch Logs wühlen oder Hilfe im Community-Slack und in Foren suchen.
Für wen lohnt es sich, es auszuprobieren
Das Projekt wurde nicht für alltägliche Websites oder kleine PostgreSQL-Datenbanken erstellt. Seine Nische ist Infrastruktur mit kolossalen Durchsatzanforderungen.
- Teams, die riesige neuronale Netze auf TensorFlow trainieren, wobei das Laden von Datensätzen zum Flaschenhals geworden ist.
- Daten-Ingenieure, die mit verteilter Analytik auf Hadoop und Spark arbeiten.
- Wissenschaftliche Labore und HPC-Cluster, bei denen Standard-Lustre oder GPFS nicht mehr mithalten.
- Entwickler von hochbelasteten Systemen, die ihren eigenen Speicher auf rohen NVMe-Festplatten erstellen.
Fazit
DAOS ist ein hervorragendes Beispiel dafür, wie sich Software-Architektur an neue Hardware anpasst. Das Projekt ist komplex, engstirnig und anspruchsvoll in der Infrastruktur, aber in seinem Bereich löst es ein echtes Problem des System-Overheads. Wenn du Speicher für Machine-Learning- oder Big-Data-Analytics-Aufgaben aufbaust, lohnt es sich definitiv, einen Blick in die Dokumentation zu werfen.
Ähnliche Projekte