Virksomheden XTX Markets har åbnet kildekoden til filsystemet TernFS, som er designet til at skabe et distribueret lager, der dækker flere geografisk adskilte datacentre og kan opbevare op til titusinder af eksabytters data, billioner af filer og hundreder af milliarder af kataloger, som millioner af kunder kan interagere med samtidig. Projektets kode er skrevet i sprog som C++ og Go og distribueres under GPLv2-licensen. Protokolspecifikationer og klientbiblioteker leveres under Apache 2.0-licensen.
Filsystemet er optimeret til belastninger typisk for maskinlæringssystemer — skrivning og læsning af filer, der ikke ændres efter oprettelse og indeholder mere end flere megabytes data. Filsystemet er ikke beregnet til hyppig oprettelse af nye kataloger eller hyppig flytning af filer mellem kataloger. Der er funktioner til både genskabelse af utilsigtet slettede filer eller kataloger samt til at konfigurere politikker for permanent sletning. Indholdet af filsystmet kan replikeres mellem flere datacentre i forskellige regioner. Lagringsnoder kan inkludere forskellige typer lagringsmedier (baseret på HDD og flash).
Et af kravene i designet var fraværet af et enkelt fejlniveau og sikringen af høj pålidelighed i lagringen — strømafbrydelser må ikke føre til beskadigelse af filsystmet, og filer må ikke blive delvist skrevet (kun fuldt skrevne filer er tilgængelige til læsning). Systemet er modstandsdygtigt over for fejl fra individuelle lagringsmedier, metadata-noder og lagringsnoder. Vedligeholdelse af lagringssystemet kan udføres uden at stoppe driften.
Implementeringen af lagersystemet baseret på TernFS i XTX Markets begyndte sommeren 2023, efter halvandet år med udvikling af filsystmet. I midten af 2024 blev alle XTX Markets' maskinlæringssystemer overført til TernFS. I øjeblikket består lagersystemet af over 30.000 diske og 10.000 flash-lagringsenheder placeret i tre datacentre. Den samlede mængde opbevarede data vurderes til 500 petabyte, og den maksimale ydeevne er flere petabyte pr. sekund. Lagersystemet anvendes i et klynge med mere end 100.000 beregningsnoder. Der har ikke været nogen hændelser, der har ført til datatab i de to år, systemet har været i drift.
Bland begrænsningerne i TernFS: kan de gemte filer ikke ændres; lav effektivitet ved håndtering af filer mindre end 2 MB; lav ydeevne ved oprettelse og sletning af mapper; mangel på adgangsrettighedsopdeling.
Komponenter, der danner TernFS lagerklynge:
- Metadata lagringsnoder, der ansvarer for at styre information om mappestruktur og filattributter.
- Koordineringsnoder (CDC — Cross-Directory Coordinator), der udfører transaktioner, der strækker sig over forskellige mapper.
- Lagringstjenester, der sikrer opbevaring af filindhold.
- Register, der indeholder oplysninger om alle andre tjenester og overvåger deres drift.
- Klienttjenester til brugeres adgang til filsystemet:
- ternweb — adgang til lageret via Web API.
- terncli — kommandolinjegrænseflade.
- ternfs.ko — modul til Linux-kernen, der muliggør montering af lageret for at fungere som et lokalt filsystem.
- ternfuse — implementering af klient til at arbejde med filsystemet ved hjælp af FUSE subsystemet.
- terns3 — implementering af Amazon S3 API.
- Baggrundsprocesser:
- GC — affaldsindsamler, der frigør forældede snapshots (slettede men ikke rengjorte filer) og rydder blokke for uigenkaldeligt slettede filer.
- scrubber — påvisning af datadegradering og genopretning.
- migrator — udelukkelse af fejlslagne diske fra lageret.

Kilde: opennet.ru
