13 poin oleh xguru 2023-09-22 | 4 komentar | Bagikan ke WhatsApp
  • 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

 
ntpd3300 2023-09-22

Berbeda dengan judulnya, alasan mengapa ini ditulis dengan Rust justru tidak dijelaskan.

 
botplaysdice 2023-09-23

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 :-)

 
blueprajna 2023-09-22

Sepertinya isi artikel aslinya bukan membahas alasan ditulis dengan Rust, melainkan kenapa memilih NFS alih-alih FUSE.

 
xguru 2023-09-22

Ah, kalau dipikir-pikir memang tidak ada penjelasan selain bahwa ini cepat karena pakai Rust. Saya merangkumnya tanpa banyak berpikir.