- FUSE, çekirdek modülüne ihtiyaç duymadan dosya sistemi sürücüsü yazmayı mümkün kılar
- NTFS, SFTP, S3 gibi çeşitli dosya sistemi istemcileri tarafından kullanılır
- WikipediaFS gibi, gerçek bir dosya sistemi olmayan şeyler bile oluşturulabilir
- Ancak FUSE, geliştirme açısından kullanışsızdır
- 2 API arasından seçim gerekir: Low-Level ve High-Level
- Birbiriyle uyumsuz 2 API sürümü vardır: libfuse2 ve libfuse3
- Azar azar sürekli değişen API'ler (FUSE_USE_VERSION)
- Mac ve Windows'ta yerel değildir; MacFuse, WinFuse gibi üçüncü taraf sürücülerin kurulması gerekir
- Biz (XetHub), görüntü veri kümelerinin çeşitli sürümlerine S3 komutları kullanmaya gerek kalmadan kişisel dizüstü bilgisayarlardan rahatça erişilebilmesini istedik
- "Gerçekten çapraz platform bir kullanıcı alanı dosya sistemi oluşturabilir miyiz?" sorusundan yola çıkıp NFSv3'e ulaştık
NFS
- NFSv3, 20 yıllık bir ağ dosya sistemi protokolüdür; çok basit ve yaygın olduğu için neredeyse tüm işletim sistemlerinde varsayılan olarak uygulanır
- Zarif ve basit tasarım ilkeleri
- Sunucu tamamen stateless'tir
- NFS sunucusu basittir, NFS istemcisi ise akıllıdır
- Basit önbellek tutarlılığı kuralları vardır (sunucu önbellek politikasını tanımlamaz; istemci istediği kadarını kendi yönetir)
- NFS istemcisi, ağ üzerinden iletişim kurduğunu bilir
- Pratikte performansı da oldukça iyidir
- Özetle, FUSE yerine localhost NFS kullanarak kullanıcı alanı dosya sistemi uygulamak, performans ve dayanıklılığı elde etmeyi kolaylaştırır
- Sunucu protokolünü yalnızca bir kez uygulamak yeterlidir; ardından mevcut önbellekleme ve 20 yılda olgunlaşmış özelliklerden doğrudan yararlanılabilir
XetHub'da NFS nasıl kullanılıyor
- Yerel çapraz platform bir kullanıcı alanı dosya sistemi uygulaması geliştirildi
- Çekirdek sürücüsü olmadan büyük veri kümeleri kullanıcı makinesine mount edilebiliyor
- Örneğin 660GB'lık Llama 2 modelini mount etmek veya DuckDB sorgularıyla büyük Parquet dosyalarını analiz etmek mümkün
- Linux, Mac ve Windows Pro ve üzeri sürümlerde desteklenir (Windows Home çalışmaz)
- Rust ile yazılmış NFS sunucusu nfsserve GitHub'da açık kaynak olarak yayımlandı
- Okuma performansı oldukça iyi; yazma çalışıyor, ancak hâlâ optimizasyona ihtiyaç var
4 yorum
Başlığın aksine, neden Rust ile yazıldığına dair asıl gerekçe aslında yer almıyor.
Orijinal yazının odağı, kendi NFS sunucularını neden geliştirdikleri... ama galiba Rust gibi popüler bir anahtar kelimeyi de atlamak istemedikleri için başlıkta kullanmışlar :-)
Görünüşe göre asıl mesele, neden Rust ile yazdıkları değil de neden FUSE yerine NFS’yi seçtikleri.
Aa, düşününce sadece Rust olduğu için hızlı olduğundan bahsetmişim, onun dışında bir şey yokmuş. Hiç düşünmeden özetlemişim.