Das Unternehmen XTX Markets hat den Quellcode des Dateisystems TernFS veröffentlicht, das für die Erstellung eines verteilten Speichers konzipiert wurde, der mehrere geografisch getrennte Rechenzentren abdeckt und in der Lage ist, bis zu Dutzende Exabyte an Daten, Billionen von Dateien und Hunderte von Milliarden von Verzeichnissen zu speichern, auf die Millionen von Kunden gleichzeitig zugreifen können. Der Projektcode ist in C++ und Go geschrieben und wird unter der GPLv2-Lizenz verbreitet. Die Protokollspezifikationen und die Client-Bibliotheken werden unter der Apache 2.0-Lizenz bereitgestellt.
Das Dateisystem ist optimiert für Lasten, die typischerweise bei maschinellen Lernsystemen auftreten – es handelt sich um das Schreiben und Lesen von Dateien, die nach ihrer Erstellung nicht mehr verändert werden und mehr als mehrere Megabyte Daten enthalten. Das Dateisystem ist nicht für die häufige Erstellung neuer Verzeichnisse und den ständigen Transfer von Dateien zwischen Verzeichnissen ausgelegt. Es gibt Funktionen zur Wiederherstellung versehentlich gelöschter Dateien oder Verzeichnisse sowie zur Einrichtung von Richtlinien für die vollständige und unwiderrufliche Löschung. Der Inhalt des Dateisystems kann zwischen mehreren Rechenzentren in verschiedenen Regionen repliziert werden. Die Speicherorte können verschiedene Speichertypen umfassen (auf der Basis von Festplatten und Flash-Speicher).
Eine der Anforderungen bei der Planung war die Vermeidung von Einzelpunkten des Ausfalls und die Gewährleistung einer hohen Zuverlässigkeit des Speichers – Notstromausfälle dürfen nicht zu Schäden am Dateisystem führen, und Dateien dürfen nicht teilweise geschrieben werden (es sind nur vollständig geschriebene Dateien lesbar). Das System ist unempfindlich gegenüber dem Ausfall einzelner Speichergeräte, der Knoten mit Metadaten und der Speicherknoten. Wartungsarbeiten am Speicher können durchgeführt werden, ohne den Betrieb zu unterbrechen.
Die Implementierung des TernFS-basierten Speichers bei XTX Markets begann im Sommer 2023 nach anderthalb Jahren Entwicklung des Dateisystems. Mitte 2024 wurden alle maschinellen Lernsysteme von XTX Markets auf TernFS umgestellt. Derzeit besteht der Speicher aus über 30.000 Festplatten und 10.000 Flash-Speichern, die in drei Rechenzentren untergebracht sind. Das gesamte Speichervolumen wird auf 500 Petabyte geschätzt, und die Spitzenleistung beträgt mehrere Petabyte pro Sekunde. Der Speicher wird in einem Cluster verwendet, das mehr als 100.000 Rechenknoten umfasst. In den zwei Jahren des Betriebs gab es keine Vorfälle, die zu Datenverlust führten.
Zu den Einschränkungen von TernFS gehören: Aufgenommene Dateien können nicht geändert werden; geringe Effizienz bei der Verarbeitung von Dateien kleiner als 2 MB; geringe Leistung bei der Erstellung und Löschung von Verzeichnissen; keine Aufteilung der Zugriffsrechte.
Die Komponenten, die den TernFS-Speichercluster bilden:
- Metadatenknoten, die für die Verwaltung der Informationen über die Verzeichnisstruktur und die Dateiattribute verantwortlich sind.
- Koordinierungsknoten (CDC - Cross-Directory Coordinator), die Transaktionen durchführen, die verschiedene Verzeichnisse betreffen.
- Speicherdienste, die die Speicherung von Dateiinhalten gewährleisten.
- Ein Register, das Informationen über alle anderen Dienste enthält und deren Betrieb überwacht.
- Kundenservices für den Zugriff der Benutzer auf die FFS:
- ternweb — Zugriff auf den Speicher über die Web-API.
- terncli — Befehlszeilen-Schnittstelle.
- ternfs.ko — Modulkernel für Linux, der es ermöglicht, den Speicher als lokale FFS zu mounten.
- ternfuse — Implementierung eines Clients zur Arbeit mit der FFS, die das FUSE-System verwendet.
- terns3 — Implementierung der Amazon S3 API.
- Hintergrundprozesse:
- GC — Garbage Collector, der abgelaufene Snapshots (gelöschte, aber nicht bereinigte Dateien) freigibt und Blöcke für unwiderruflich gelöschte Dateien bereinigt.
- scrubber — Erkennung von Datenverschlechterung und Wiederherstellung.
- migrator — Ausschluss defekter Laufwerke aus dem Speicher.

Quelle: opennet.ru
