Otwarty kod rozproszonego systemu plików TernFS

Firma XTX Markets otworzyła kod źródłowy systemu plików TernFS, zaprojektowanego do tworzenia rozproszonego przechowywania, obejmującego kilka geograficznie rozdzielonych centrów danych i mogącego przechowywać do dziesiątek eksabajtów danych, bilionów plików oraz setek miliardów katalogów, z którymi może jednocześnie współpracować miliony klientów. Kod projektu napisany jest w językach C++ i Go i jest udostępniany na licencji GPLv2. Specyfikacje protokołu oraz biblioteki klienckie są dostarczane na licencji Apache 2.0.

FS jest zoptymalizowany pod kątem obciążeń charakterystycznych dla systemów uczenia maszynowego — zapisywania i odczytywania plików, które nie są zmieniane po utworzeniu i zawierają więcej niż kilka megabajtów danych. FS nie jest przystosowana do częstego tworzenia nowych katalogów ani częstego przenoszenia plików między katalogami. Istnieją możliwości zarówno odzyskiwania przypadkowo usuniętych plików lub katalogów, jak i konfigurowania polityk całkowitego, nieodwracalnego usuwania. Zawartość FS może być replikowana pomiędzy wieloma centrami danych w różnych regionach. Węzły przechowywania mogą obejmować różne typy nośników (opartych na dyskach i pamięci flash).

Jednym z wymagań podczas projektowania było wyeliminowanie pojedynczego punktu awarii oraz zapewnienie wysokiej niezawodności przechowywania — awarie zasilania nie powinny prowadzić do uszkodzenia FS, a pliki nie mogą być zapisywane częściowo (do odczytu dostępne są tylko całkowicie zapisane pliki). System jest odporny na awarię poszczególnych nośników, węzłów z metadanymi oraz węzłów przechowywania. Możliwe jest przeprowadzanie konserwacji przechowywania bez zatrzymywania pracy.

Wdrożenie systemu przechowywania opartego na TernFS w firmie XTX Markets rozpoczęło się latem 2023 roku, po półtorej roku prac nad FS. W połowie 2024 roku wszystkie systemy uczenia maszynowego XTX Markets zostały przeniesione na TernFS. Obecnie przechowywanie składa się z ponad 30 tysięcy dysków i 10 tysięcy nośników flash, umieszczonych w trzech centrach danych. Całkowita objętość przechowywanych danych szacowana jest na 500 petabajtów, a szczytowa wydajność to kilka petabajtów na sekundę. System przechowywania jest używany w klastrze, który liczy ponad 100 tysięcy węzłów obliczeniowych. W ciągu dwóch lat eksploatacji nie odnotowano incydentów prowadzących do utraty danych.

Ograniczenia TernFS: zapisane pliki nie mogą być zmieniane; niska wydajność przy pracy z plikami o rozmiarze mniejszym niż 2 MB; niska wydajność operacji tworzenia i usuwania katalogów; brak podziału uprawnień dostępu.

Składniki tworzące klaster przechowywania TernFS:

  • Węzły przechowywania metadanych odpowiedzialne za zarządzanie informacjami o strukturze katalogów i atrybutach plików.
  • Węzły koordynacji pracy (CDC — Cross-Directory Coordinator), wykonujące transakcje obejmujące różne katalogi.
  • Usługi przechowywania, zapewniające przechowywanie zawartości plików.
  • Rejestr, zawierający informacje o wszystkich pozostałych usługach i monitorujący ich działanie.
  • Usługi klienckie do dostępu użytkowników do FS:
    • ternweb — dostęp do przechowywania przez API Web.
    • terncli — interfejs wiersza poleceń.
    • ternfs.ko — moduł dla jądra Linux, umożliwiający montowanie przechowywania jako lokalnego FS.
    • ternfuse — implementacja klienta do pracy z FS, wykorzystująca podsystem FUSE.
    • terns3 — implementacja API Amazon S3.
  • Procesy w tle:
    • GC — zbieracz śmieci, uwalniający przestarzałe migawki (usunięte, ale nie oczyszczone pliki) i oczyszczający bloki dla nieodwracalnie usuniętych plików.
    • scrubber — wykrywanie degradacji danych i przywracanie.
    • migrator — usuwanie z przechowywania uszkodzonych dysków.

Otwarty kod rozproszonego systemu plików TernFS


Źródło: opennet.ru
Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster