Tvrtka XTX Markets otvorila je izvorni kod datotečnog sustava TernFS, dizajniranog za stvaranje distribuirane pohrane koja pokriva nekoliko teritoriijalno odvojenih podatkovnih centara i sposoban je pohranjivati do desetaka eksabajta podataka, trilijuna datoteka i stotina milijardi katalogâ, s kojima mogu istovremeno raditi milijuni klijenata. Kod projekta napisan je na jezicima C++ i Go i distribuira se pod GPLv2 licencom. Specifikacije protokola i klijentske biblioteke isporučuju se pod Apache 2.0 licencom.
FS je optimiziran za opterećenja svojstvena sustavima strojnog učenja — zapisivanje i čitanje datoteka koje se ne mijenjaju nakon stvaranja i koje sadrže više od nekoliko megabajta podataka. FS nije namijenjen za čestu izradu novih katalogâ i često premještanje datoteka između katalogâ. Postoje mogućnosti za oporavak slučajno izbrisanih datoteka ili katalogâ, kao i za postavljanje politika potpunog nepovratnog brisanja. Sadržaj FS može se replicirati između nekoliko podatkovnih centara u različitim regijama. Čvorovi pohrane mogu uključivati različite vrste uređaja za pohranu (na temelju diskova i flash memorije).
Jedan od zahtjeva pri projektiranju bio je izostanak jedinstvene točke neuspjeha i osiguranje visoke pouzdanosti pohrane — iznenadni prekidi napajanja ne smiju dovesti do oštećenja FS-a, a datoteke ne mogu biti djelomično zapisane (za čitanje su dostupne samo potpuno zapisane datoteke). Sustav je otporan na kvarove pojedinih uređaja za pohranu, čvorova s metapodacima i čvorova pohrane. Održavanje pohrane može se provoditi bez zaustavljanja rada.
Implementacija pohrane temeljenog na TernFS u tvrtki XTX Markets započela je u ljeto 2023. godine, nakon godinu i pol dana razvoja FS-a. Sredinom 2024. godine svi sustavi strojnog učenja XTX Markets premješteni su na TernFS. Trenutno pohrana sadrži više od 30 tisuća diskova i 10 tisuća Flash uređaja, smještenih u tri podatkovna centra. Ukupni volumen pohranjenih podataka procjenjuje se na 500 petabajta, a vršna izvedba doseže nekoliko petabajta u sekundi. Pohrana se koristi u klasteru koji se sastoji od više od 100 tisuća računalnih čvorova. Tijekom dvije godine uporabe nije bilo incidenata koji bi doveli do gubitka podataka.
Među ograničenjima TernFS: zapisane datoteke se ne mogu mijenjati; niska učinkovitost rada s datotekama manjim od 2 MB; niska izvedba operacija stvaranja i brisanja direktorija; nedostatak podjele prava pristupa.
Komponente koje čine klaster pohrane TernFS:
- Čvorovi pohrane metapodataka, zaduženi za upravljanje informacijama o strukturi direktorija i atributima datoteka.
- Čvorovi koordinacije rada (CDC — Cross-Directory Coordinator), koji izvršavaju transakcije koje obuhvaćaju različite direktorije.
- Službe pohrane koje osiguravaju pohranu sadržaja datoteka.
- Registar koji sadrži informacije o svim ostalim uslugama i provodi nadzor nad njihovim radom.
- Klijentske usluge za pristup korisnika FS-u:
- ternweb — pristup pohrani putem Web API-ja.
- terncli — sučelje naredbenog retka.
- ternfs.ko — modul za Linux kernel koji omogućuje montiranje pohrane za rad kao s lokalnim FS-om.
- ternfuse — implementacija klijenta za rad s FS-om, koja koristi FUSE podsustav.
- terns3 — implementacija Amazon S3 API-ja.
- Pozadinski procesi:
- GC — sakupljač smeća koji oslobađa istečene snimke (izbrisane, ali ne očišćene datoteke) i čisti blokove za nepovratno izbrisane datoteke.
- scrubber — otkrivanje degradacije podataka i oporavak.
- migrator — isključenje neispravnih diskova iz pohrane.

Izvor: opennet.ru
