- FUSE memungkinkan penulisan driver filesystem tanpa memerlukan modul kernel
- Digunakan oleh berbagai klien filesystem seperti NTFS, SFTP, dan S3
- Bahkan bisa membuat sesuatu yang bukan filesystem sungguhan seperti WikipediaFS
- Namun, FUSE kurang nyaman untuk dikembangkan
- Harus memilih antara 2 API: Low-Level dan High-Level
- Ada 2 versi API yang tidak kompatibel: libfuse2 dan libfuse3
- API terus berubah sedikit demi sedikit (
FUSE_USE_VERSION)
- Di Mac dan Windows bukan native, jadi harus memasang driver pihak ketiga seperti MacFuse dan WinFuse
- Kami (XetHub) ingin memudahkan akses ke berbagai versi dataset gambar dari laptop pribadi tanpa perlu memakai perintah S3
- Dari pertanyaan "bisakah kita membuat user-space filesystem yang benar-benar lintas platform?" kami sampai pada NFSv3
NFS
- NFSv3 adalah protokol network filesystem berusia 20 tahun yang sangat sederhana dan umum, sehingga sudah diimplementasikan secara bawaan di hampir semua sistem operasi
- Prinsip desain yang indah dan sederhana
- Server sepenuhnya stateless
- Server NFS itu sederhana, klien NFS yang pintar
- Aturan konsistensi cache yang sederhana (server tidak mendefinisikan kebijakan cache; klien bebas mengaturnya sesuai kebutuhan)
- Klien NFS tahu bahwa ia sedang berkomunikasi melintasi jaringan
- Dalam praktiknya performanya sangat baik
- Singkatnya, dengan memakai localhost NFS alih-alih FUSE untuk mengimplementasikan user-mode filesystem, performa dan ketahanan (resiliency) bisa diperoleh dengan lebih mudah
- Cukup implementasikan protokol server sekali, lalu bisa langsung memanfaatkan caching yang sudah ada serta fitur-fitur yang telah diperkuat selama 20 tahun
Cara XetHub menggunakan NFS
- Mengembangkan implementasi filesystem user-mode native lintas platform
- Bisa me-mount dataset berukuran besar ke mesin pengguna tanpa driver kernel
- Misalnya me-mount model Llama 2 berukuran 660GB, atau menganalisis file Parquet besar dengan kueri DuckDB
- Mendukung Linux, Mac, dan Windows Pro ke atas (Windows Home tidak didukung)
- nfsserve, server NFS yang diimplementasikan dengan Rust, dibuka di GitHub
- Performa baca sudah cukup baik, dan penulisan juga berfungsi, tetapi masih perlu optimasi
4 komentar
Berbeda dengan judulnya, alasan mengapa ini ditulis dengan Rust justru tidak dijelaskan.
Fokus tulisan aslinya adalah alasan kami mengembangkan server NFS sendiri...... tetapi sepertinya mereka tidak ingin melewatkan kata kunci populer seperti Rust, jadi itu dipakai di judulnya :-)
Sepertinya isi artikel aslinya bukan membahas alasan ditulis dengan Rust, melainkan kenapa memilih NFS alih-alih FUSE.
Ah, kalau dipikir-pikir memang tidak ada penjelasan selain bahwa ini cepat karena pakai Rust. Saya merangkumnya tanpa banyak berpikir.