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 Exabytes an Daten, Billionen von Dateien und Hunderten von Milliarden von Verzeichnissen zu speichern, mit denen Millionen von Kunden gleichzeitig interagieren können. Der Code des Projekts ist in C++ und Go geschrieben und wird unter der GPLv2-Lizenz verteilt. Die Protokollspezifikationen und die Clientbibliotheken werden unter der Apache 2.0-Lizenz bereitgestellt.
Das Dateisystem ist fĂŒr die Arbeitslasten optimiert, die fĂŒr maschinelles Lernen typisch sind â das Schreiben und Lesen von Dateien, die nach der Erstellung nicht mehr verĂ€ndert werden und mehrere Megabyte an Daten enthalten. Das Dateisystem ist nicht fĂŒr hĂ€ufige Erstellung neuer Verzeichnisse oder hĂ€ufige Verschiebung von Dateien zwischen Verzeichnissen ausgelegt. Es gibt Funktionen sowohl zur Wiederherstellung versehentlich gelöschter Dateien oder Verzeichnisse als auch zur Konfiguration von Richtlinien fĂŒr die vollstĂ€ndige, unwiderrufliche Löschung. Der Inhalt des Dateisystems kann zwischen mehreren Rechenzentren in verschiedenen Regionen repliziert werden. Die Speicherknoten können verschiedene Arten von Speicher (auf der Basis von Festplatten und Flash-Speicher) umfassen.
Eine der Anforderungen bei der Gestaltung war das Fehlen eines Single Points of Failure und die GewĂ€hrleistung einer hohen ZuverlĂ€ssigkeit der Speicherung â StromausfĂ€lle dĂŒrfen nicht zu BeschĂ€digungen des Dateisystems fĂŒhren, und Dateien dĂŒrfen nicht teilweise geschrieben werden (es sind nur vollstĂ€ndig geschriebene Dateien zum Lesen verfĂŒgbar). Das System ist gegenĂŒber dem Ausfall einzelner SpeichergerĂ€te, Metadatenknoten und Speicherknoten robust. Die Wartung des Speichers kann durchgefĂŒhrt werden, ohne den Betrieb zu unterbrechen.
Die Implementierung des Speichers auf Basis von TernFS bei XTX Markets begann im Sommer 2023, nach anderthalb Jahren Entwicklung des FS. Mitte 2024 wurden alle Systeme des maschinellen Lernens von XTX Markets auf TernFS umgestellt. Derzeit umfasst der Speicher mehr als 30.000 Festplatten und 10.000 Flash-Laufwerke, 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: Geschriebene Dateien können nicht verĂ€ndert werden; geringe Effizienz bei Dateien mit einer GröĂe von weniger als 2 MB; niedrige Leistung bei der Erstellung und Löschung von Verzeichnissen; fehlende Trennung der Zugriffsrechte.
Komponenten, die das TernFS-Speichercluster bilden:
- Metadatenknoten, die fĂŒr die Verwaltung der Informationen ĂŒber die Verzeichnisstruktur und die Dateiattribute verantwortlich sind.
- Koordinierungsnoden (CDC â Cross-Directory Coordinator), die Transaktionen ĂŒber verschiedene Verzeichnisse ausfĂŒhren.
- Speicherdienste, die die Speicherung des Inhalts von Dateien gewÀhrleisten.
- Ein Register, das Informationen ĂŒber alle anderen Dienste enthĂ€lt und deren Betrieb ĂŒberwacht.
- Kundenservices fĂŒr den Zugriff der Benutzer auf das FS:
- ternweb â Zugriff auf den Speicher ĂŒber die Web-API.
- terncli â Befehlszeilenschnittstelle.
- ternfs.ko â Modul fĂŒr den Linux-Kernel, das es ermöglicht, den Speicher als lokale FS zu mounten.
- ternfuse â Implementierung eines Clients fĂŒr die Arbeit mit dem FS, der das FUSE-Subsystem 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 unverzĂŒglich zu löschende Dateien bereinigt.
- scrubber â Erkennung von Datenverschlechterung und Wiederherstellung.
- migrator â Ausschluss fehlerhafter Festplatten aus dem Speicher.

Quelle: opennet.ru
