20 puan yazan GN⁺ 2025-04-18 | 2 yorum | WhatsApp'ta paylaş
  • 3FS, DeepSeek tarafından geliştirilen yüksek performanslı açık kaynaklı bir dağıtık dosya sistemi olup büyük ölçekli veri işleme ve yüksek throughput'u destekler
  • Normal bir dosya sistemi gibi çalışır, ancak gerçekte veriyi birden fazla makineye dağıtarak saklar ve kullanıcının bunu fark etmesini gerektirmeyen bir soyutlama sunar
  • 4 ana bileşen (Meta, Mgmtd, Storage, Client) üzerinden metadata, düğüm yönetimi, gerçek veri depolama ve kullanıcı isteklerinin işlenmesi birbirinden ayrılarak çalıştırılır
  • CRAQ algoritması sayesinde güçlü tutarlılık ve hata toleransı sağlanır; yazma istekleri zincir yapısı boyunca güvenli biçimde yayılır
  • 3FS, diğer dağıtık dosya sistemlerine kıyasla gerçek dünyada uygulanabilirlik ve performans ölçeklenebilirliği açısından ayrışır

3FS nedir?

  • 3FS, Fire-Flyer File System ifadesinin kısaltmasıdır; DeepSeek tarafından yayımlanan bir dağıtık dosya sistemidir
  • DeepSeek'in açık kaynak yayımlama haftasında birlikte duyuruldu
  • Normal bir dosya yolu gibi görünür, ancak gerçekte birden fazla makineye dağılmış veriyi soyutlayarak sunar

Dağıtık dosya sistemi nedir?

  • Kullanıcıya yerel dosya sistemi gibi görünür, ancak gerçekte veriyi birden fazla sunucuda dağıtık olarak depolar
  • Örneğin /3fs/stage/notes.txt yolu tek bir dosya gibi görünür, ama aslında birden fazla sunucuya bölünerek saklanır
  • Kullanıcı mkdir, cat gibi komutlarla bunu normal bir dosya gibi kullanabilir

Neden dağıtık dosya sistemi kullanılır?

  • Büyük hacimli veriyi (petabayt ölçeği) ve yüksek throughput'u destekler
  • Hata toleransı (fault tolerance) ve yedeklilik (redundancy) sayesinde güvenilirlik sağlar
  • Gerçek kullanım örnekleri:
    • HDFS + Spark gibi paralel işleme çerçeveleri
    • ML eğitim pipeline'larında checkpoint alma
    • Google'ın Colossus sistemi
    • Meta'nın fotoğraf depolama sistemi Haystack
    • Yapay zeka için depolama örnekleri: JuiceFS vs CephFS

3FS bileşenleri

  • Toplam 4 ana düğüm türünden oluşur

Meta

  • Dosya yolları, öznitelikler ve konumlar gibi metadata'yı yönetir
  • RPC ile istemci isteklerini işler (open, stat, close vb.)
  • Meta bilgiler FoundationDB içinde saklanır
  • Inode, dosyanın boyutu, sahibi gibi bilgileri saklar
  • DirEntry, yolu inode'a bağlar (sembolik bağlantıya benzer şekilde tek bir dosya için birden fazla yol bulunabilir)

Mgmtd

  • Kümenin düğüm kaydı ve durum denetiminden sorumludur
  • Düğümler açılışta kendilerini kaydeder ve düzenli olarak heartbeat gönderir
  • Merkezi yönlendirici görevi görür; düğümlerin birbirleriyle doğrudan bağlantı sürdürmesi gerekmez
  • CRAQ zinciri yapılandırması için gerekli ayar bilgilerini de yönetir

Storage

  • Gerçek verinin depolanmasından sorumludur
  • Rust tabanlı ChunkEngine ile disk bloklarını yönetir
    • Disk bloklarının boyutu, offset'i, checksum'u ve sürümü gibi bilgileri izler
    • Kullanıcı bloklarla doğrudan etkileşime girmez; bunun yerine bir arayüz sunulur
    • Meta bilgiler LevelDB içinde saklanır
  • Çeşitli worker'lar bulunur
    • AllocateWorker yeni blok tahsis eder
    • PunchHoleWorker kullanılmayan blokları geri kazanır
    • AioReadWorker, io_uring kuyruğu üzerinden asenkron okuma işlemlerini yürütür
  • Yazma sırasında CRAQ zinciri boyunca bir sonraki düğüme iletim yapılır

Client

  • Kullanıcı isteklerini işler ve diğer düğümlerle iletişim kurar
  • İş akışı:
    • Mgmtd'ye düğüm konumunu sorar
    • Meta'ya dosya işlemi isteği gönderir
    • Storage ile veri aktarımı yapar

CRAQ algoritması

  • Chain Replication with Apportioned Queries ifadesinin kısaltmasıdır ve güçlü tutarlılık (linearizability) sağlar
  • Yazma akışı:
    • Yazma yayılımı, Head → Middle → Tail sırasıyla ilerler
    • Ara aşamalarda veri dirty olarak işaretlenir (okunamaz)
    • Tail'de commit tamamlandıktan sonra clean durumu geriye doğru yayılır
  • Okuma akışı:
    • clean ise hemen döndürülür
    • dirty ise en güncel veriyi almak için tail'e istek gönderilir

Performans açısından CRAQ

  • Yazma hızı, en yavaş düğüm tarafından sınırlandırılır
  • Sık erişilen dirty verilerde okuma istekleri tail üzerinde yoğunlaşarak okuma darboğazı oluşturabilir
  • Örneğin Zipfian workload altında performans düşebilir
  • 5 düğümlü bir kümede 3 kopya tutularak arıza durumunda performans kaybı en aza indirilir

Diğer dağıtık dosya sistemlerinden farkları

  • Yapı benzer olsa da gerçek dünyadaki uygulanabilirlik ve uygulama yaklaşımı açısından farklılıklar vardır
  • Karşılaştırma ölçütleri:
    • Hangi workload'larda güçlü olduğu
    • Performans ayarlarında ne kadar esnek olduğu
    • Dağıtım kolaylığı
    • Throughput ölçeklenebilirliği
    • SLO içinde gecikme yönetimi
    • Güvenilirlik
  • Teknik ayrıntılar:
    • Darboğazların nedenleri ve bunların nasıl ele alındığı
    • Lock kullanılıp kullanılmadığı
    • Kullanılan veri yapıları
    • Hedef donanım
    • Kullanılan hata toleransı algoritması veya hata düzeltme yöntemi

Blog serisinin bir sonraki konusu

  • Gerçek performans analiziyle DeepSeek'in iddialarının doğrulanması planlanıyor
  • İncelenecek başlıklar:
    • FUSE darboğazı hakkında DeepSeek'in iddiası
    • Performans grafiklerinin yeniden üretilebilirliği
    • Performans düşüşü yaşanan durumların analizi
    • Darboğaz unsurları (CPU, bellek, disk, ağ)
    • Hangi workload'larda iyi performans verdiği
    • Mevcut sistemlerle karşılaştırmalı analiz
    • Mevcut sistemlerin sorunları çözme biçiminden farkları
    • Doğrudan iyileştirme olasılıklarının incelenmesi

Ek kaynaklar

2 yorum

 
softer 2025-04-19

Benim de düşündüğüm bir sorundu, bunu da ..

 
GN⁺ 2025-04-18
Hacker News görüşü
  • S3FS, çeşitli dağıtık dosya sistemleriyle karşılaştırılan ölçeklenebilir bir metadata dosya sistemi

    • Bunlar arasında Collosus, Tectonic (Meta), ADLSv2 (Microsoft), HopsFS (Hopsworks), PolarFS (Alibaba) yer alıyor
    • S3FS FoundationDB kullanırken, Collosus BigTable, Tectonic bir KV store, HopsFS ise RonDB kullanıyor
    • S3FS'in önemli noktaları, (1) kullanım kolaylığı sağlayan fuse istemcisini desteklemesi ve (2) NVMe depolamayı desteklediği için disk I/O ile sınırlı olmaması
    • HopsFS, katmanlı depolama ekleyerek yakın tarihli verileri NVMe'de, arşiv verilerini ise S3'te tutuyor
  • Bu sistemleri değerlendirirken teorik sınırlar, verimlilik ve pratik kısıtlar dikkate alınmalı

    • Teorik olarak Lustre gibi paralel dağıtık dosya sistemleri sonsuza kadar ölçeklenebilir
    • Verimliliği değerlendirmek için, X TiB diskli düğümlerle ne kadar depolama ve throughput elde edilebildiği hesaplanıyor
    • AWS'de 3FS'i, FSx for Lustre ile karşılaştırıldığında %12-30 daha ucuza işletmek mümkün olabilir
    • İnsanların istediği dağıtım ölçeğinde bu dosya sisteminin gerçekten kurulup kurulamayacağı sorusu hâlâ açık
    • DeepSeek'in istediği özellikleri elde etmek için bu tür sistemleri kendisinin inşa etmesi anlaşılır
    • Archil'de, çoğu kişinin devasa kümeleri yönetmek zorunda kalmadan kullanabileceği daha iyi varsayılan ayarlar bulunması umuluyor
  • SeaweedFS ile karşılaştırma ilgi çekici

    • SeaweedFS, hava durumu verilerini depolamak için kullanılıyor ve yaklaşık 3 PB veri ML eğitimi için kullanılıyor
  • Neden CephFS kullanılmadığına dair bir soru

    • CephFS, gerçek dünya senaryolarında kapsamlı biçimde test edildi ve petabayt ölçeğinde güvenilirliğini kanıtladı
    • Açık kaynaklı bir çözüm; en hızlı NVMe depolama üzerinde çalışabiliyor ve 10 gigabitin üzerindeki interconnect ile çok yüksek IOPS elde edebiliyor
  • JuiceFS ile karşılaştırmaya dair bir soru

    • Kişisel homelab kurulumunda S3 Garage üzerinde JuiceFS çalıştırma planı var
    • Garage yalnızca replikasyonu destekliyor; erasure coding veya sharding desteklemiyor
    • Kurulumu basit göründüğü için tercih ediliyor
  • Küçük ölçekli işletme ve homelab kullanıcısı olarak, büyük ölçekli dağıtık dosya sistemlerini kullanma ihtimali düşük görünüyor

    • Petabayt ölçeğinde verilerle çalışırken yedekleme ve kurtarmanın nasıl yapıldığı merak ediliyor
  • Kurulum karmaşık, ancak derin öğrenme iş yükleri için hangi özelliklerin vazgeçilmez olduğu net değil

    • Gereken özellikler petabayt ölçekli depolama, okuma/yazma paralelliği ve yedeklilik
    • Tutarlılığı sağlamak zor ve burada gerekli görünmüyor
  • DeepSeek'in dağıtık dosya sistemini devre dışı bırakmanın ne kadar kolay olduğuna dair bir soru

    • Örneğin, ABD'deki bir üniversite araştırma için DeepSeek kullanım onayı almış olabilir, ancak verilerin yerel araştırma kümesi dosya sisteminin dışına çıkmaması gerekir
  • Bunun birden fazla cihaza dağıtılmış ZFS sürücüleriyle kopyalanıp kopyalanamayacağına dair bir soru