L’azienda XTX Markets ha aperto il codice sorgente del file system TernFS, progettato per creare uno storage distribuito che copre diversi data center territorialmente separati e capace di memorizzare fino a decine di exabyte di dati, trilioni di file e centinaia di miliardi di cataloghi, con i quali possono interagire simultaneamente milioni di clienti. Il codice del progetto è scritto nei linguaggi C++ e Go e distribuito sotto licenza GPLv2. Le specifiche del protocollo e le librerie client sono fornite sotto licenza Apache 2.0.
Il file system è ottimizzato per carichi tipici dei sistemi di machine learning: scrittura e lettura di file non modificabili dopo la creazione e contenenti più di alcuni megabyte di dati. Non è progettato per la creazione frequente di nuovi cataloghi o per il frequente spostamento di file tra cataloghi. Sono presenti funzionalità sia per il recupero di file o cataloghi eliminati accidentalmente, sia per configurare politiche di eliminazione permanente e irreversibile. Il contenuto del file system può essere replicato tra più data center in diverse regioni. I nodi di storage possono includere vari tipi di supporti (basati su dischi e memoria flash).
Uno dei requisiti nella progettazione era l'assenza di un singolo punto di guasto e la garanzia di elevata affidabilità dello storage: le interruzioni di alimentazione non devono causare danni al file system, e i file non possono essere scritti parzialmente (solo i file completamente scritti sono disponibili per la lettura). Il sistema è resiliente al guasto di singoli supporti, nodi con metadati e nodi di storage. È possibile effettuare manutenzione dello storage senza fermare il funzionamento.
L'implementazione dello storage basato su TernFS in XTX Markets è iniziata nell'estate del 2023, dopo un anno e mezzo di sviluppo del file system. A metà del 2024, tutti i sistemi di machine learning di XTX Markets sono stati trasferiti su TernFS. Attualmente, lo storage comprende oltre 30.000 dischi e 10.000 supporti Flash, situati in tre data center. Il volume totale dei dati memorizzati è stimato in 500 petabyte, mentre le prestazioni di picco raggiungono diversi petabyte al secondo. Lo storage è utilizzato in un cluster che conta oltre 100.000 nodi di calcolo. Non si sono verificati incidenti che abbiano portato alla perdita di dati in due anni di utilizzo.
Tra i limiti di TernFS: i file registrati non possono essere modificati; bassa efficienza nel lavoro con file inferiori a 2 MB; bassa produttività nelle operazioni di creazione e eliminazione di directory; assenza di separazione dei diritti di accesso.
I componenti che formano il cluster di archiviazione TernFS:
- Nodi di archiviazione dei metadati, responsabili della gestione delle informazioni sulla struttura delle directory e degli attributi dei file.
- Nodi di coordinamento (CDC - Cross-Directory Coordinator), che eseguono transazioni che coinvolgono diverse directory.
- Servizi di archiviazione, che garantiscono la conservazione dei contenuti dei file.
- Registro che contiene informazioni su tutti gli altri servizi e monitora il loro funzionamento.
- Servizi client per l'accesso degli utenti al FS:
- ternweb — accesso all'archiviazione tramite API Web.
- terncli — interfaccia della riga di comando.
- ternfs.ko — modulo per il kernel Linux, che consente di montare l'archiviazione per lavorare come con un FS locale.
- ternfuse — implementazione di un client per lavorare con il FS, che utilizza il sottosistema FUSE.
- terns3 — implementazione dell'API Amazon S3.
- Processi in background:
- GC — garbage collector, che libera snapshot scaduti (file eliminati ma non puliti) e pulisce i blocchi per file eliminati in modo irreversibile.
- scrubber — rilevamento della degradazione dei dati e recupero.
- migrator — esclusione dai repository di dischi guasti.

Fonte: opennet.ru
