- 3FS adalah sistem file terdistribusi open-source berperforma tinggi yang dikembangkan oleh DeepSeek, mendukung pemrosesan data skala besar dan throughput tinggi
- Berfungsi seperti sistem file biasa, tetapi sebenarnya menyimpan data secara terdistribusi di banyak mesin, dengan lapisan abstraksi sehingga pengguna tidak perlu menyadarinya
- Melalui 4 komponen utama (Meta, Mgmtd, Storage, Client), sistem ini memisahkan pengelolaan metadata, manajemen node, penyimpanan data aktual, dan pemrosesan permintaan pengguna
- Mencapai konsistensi kuat dan toleransi kegagalan melalui algoritme CRAQ, serta meneruskan permintaan tulis dengan aman melalui struktur berantai
- 3FS dibedakan dari sistem file terdistribusi lain dalam hal kelayakan penerapan nyata dan skalabilitas performa
Apa itu 3FS?
- 3FS adalah singkatan dari Fire-Flyer File System, sebuah sistem file terdistribusi yang dirilis oleh DeepSeek
- Dirilis bersamaan dalam pekan rilis open-source DeepSeek
- Terlihat seperti path file biasa, tetapi sebenarnya menyediakan abstraksi atas data yang disimpan secara terdistribusi di banyak mesin
Apa itu sistem file terdistribusi?
- Bagi pengguna, sistem ini terlihat seperti sistem file lokal, tetapi sebenarnya menyimpan data secara tersebar di banyak server
- Contoh: path
/3fs/stage/notes.txt tampak seperti satu file, tetapi sebenarnya disimpan terpisah di beberapa server
- Pengguna dapat memakainya seperti file biasa dengan perintah seperti
mkdir, cat
Mengapa menggunakan sistem file terdistribusi?
- Mendukung data berukuran besar (tingkat petabyte) dan throughput tinggi
- Menjamin keandalan melalui fault tolerance dan redundansi
- Contoh penggunaan nyata:
- Framework pemrosesan paralel seperti HDFS + Spark
- Checkpointing pada pipeline pelatihan ML
- Colossus milik Google
- Haystack, penyimpanan foto milik Meta
- Contoh storage untuk AI: JuiceFS vs CephFS
Komponen 3FS
- Terdiri dari total 4 jenis node utama
Meta
- Mengelola metadata seperti path file, atribut, dan lokasi
- Menangani permintaan klien melalui RPC (
open, stat, close, dll.)
- Informasi metadata disimpan di FoundationDB
Inode menyimpan informasi seperti ukuran file dan pemilik
DirEntry menghubungkan path dan inode (seperti symbolic link, satu file dapat memiliki beberapa path)
Mgmtd
- Bertanggung jawab atas registrasi node dan pemeriksaan status klaster
- Node mendaftarkan dirinya saat boot dan secara berkala mengirim heartbeat
- Berperan sebagai router terpusat, sehingga tidak perlu menjaga koneksi langsung antar-node
- Juga mengelola informasi konfigurasi untuk pembentukan rantai CRAQ
Storage
- Bertanggung jawab atas penyimpanan data aktual
- Mengelola blok disk melalui ChunkEngine berbasis Rust
- Melacak ukuran, offset, checksum, versi, dan sebagainya dari blok disk
- Pengguna tidak berinteraksi langsung dengan blok, melainkan melalui antarmuka yang disediakan
- Informasi metadata disimpan di LevelDB
- Terdapat berbagai worker
AllocateWorker mengalokasikan blok baru
PunchHoleWorker mereklamasi blok yang tidak digunakan
AioReadWorker menangani pembacaan asinkron melalui antrean io_uring
- Saat operasi tulis, data diteruskan ke node berikutnya mengikuti rantai CRAQ
Client
- Menangani permintaan pengguna dan berkomunikasi dengan node lain
- Alur kerja:
- Menanyakan lokasi node ke Mgmtd
- Meminta operasi file ke Meta
- Mentransfer data dengan Storage
Algoritme CRAQ
- Singkatan dari Chain Replication with Apportioned Queries, memberikan konsistensi kuat (linearizability)
- Alur tulis:
- Propagasi tulis berurutan dari Head → Middle → Tail
- Pada tahap tengah, data ditandai sebagai dirty (tidak bisa dibaca)
- Setelah commit di Tail, status clean dipropagasikan mundur
- Alur baca:
- Jika clean, data langsung dikembalikan
- Jika dirty, permintaan dikirim ke tail untuk mengambil data terbaru
CRAQ dari sisi performa
- Kecepatan tulis dibatasi oleh node yang paling lambat
- Untuk data dirty yang sering diakses, permintaan baca dapat menumpuk di tail sehingga berpotensi menimbulkan bottleneck baca
- Contoh: performa dapat menurun pada workload Zipfian
- Pada klaster dengan 5 node, replikasi ke 3 node digunakan untuk meminimalkan kehilangan performa saat terjadi kegagalan
Perbedaan dengan sistem file terdistribusi lain
- Strukturnya serupa, tetapi ada pembeda dalam penerapan nyata dan cara implementasi
- Elemen perbandingan:
- Workload apa yang paling cocok ditangani
- Fleksibilitas pengaturan performa
- Kemudahan deployment
- Skalabilitas throughput
- Pengelolaan latensi dalam batas SLO
- Keandalan
- Elemen teknis detail:
- Penyebab bottleneck dan cara menanganinya
- Ada tidaknya lock
- Struktur data yang digunakan
- Hardware target
- Algoritme toleransi kegagalan atau metode koreksi error yang digunakan
Topik berikutnya dalam seri blog
- Akan memverifikasi klaim DeepSeek melalui analisis performa nyata
- Poin yang akan ditinjau:
- Klaim DeepSeek tentang bottleneck FUSE
- Apakah grafik performa bisa direproduksi
- Analisis situasi penurunan performa
- Faktor bottleneck (CPU, memori, disk, jaringan)
- Workload seperti apa yang memberikan performa unggul
- Analisis perbandingan dengan sistem yang sudah ada
- Perbedaan dengan cara sistem lama menyelesaikan masalah
- Tinjauan kemungkinan perbaikan langsung
Materi tambahan
2 komentar
Ini memang masalah yang sedang kupikirkan, lalu ini ..
Opini Hacker News
S3FS adalah sistem file metadata yang dapat diskalakan, dan dibandingkan dengan berbagai sistem file terdistribusi
Saat mengevaluasi sistem-sistem ini, perlu mempertimbangkan batas teoretis, efisiensi, dan batas praktis
Ada ketertarikan untuk membandingkannya dengan SeaweedFS
Pertanyaan tentang alasan tidak menggunakan CephFS
Pertanyaan tentang perbandingan dengan JuiceFS
Sebagai operator skala kecil dan pengguna homelab, tampaknya tidak akan ada kebutuhan untuk menggunakan sistem file terdistribusi berskala besar
Ini memang pengaturan yang kompleks, tetapi tidak jelas fitur mana yang benar-benar esensial untuk workload deep learning
Pertanyaan tentang seberapa mudah menonaktifkan sistem file terdistribusi DeepSeek
Pertanyaan apakah ini bisa direplikasi dengan drive ZFS yang terdistribusi di beberapa perangkat