- FUSE cho phép viết trình điều khiển hệ thống tệp mà không cần mô-đun kernel
- Được nhiều client hệ thống tệp khác nhau như NTFS, SFTP, S3 sử dụng
- Cũng có thể tạo ra những thứ không phải hệ thống tệp thực sự như WikipediaFS
- Nhưng FUSE lại bất tiện khi phát triển
- Phải chọn giữa 2 API: Low-Level và High-Level
- 2 phiên bản API không tương thích: libfuse2 và libfuse3
- Các API liên tục thay đổi đôi chút (FUSE_USE_VERSION)
- Trên Mac và Windows không phải native, nên phải cài driver bên thứ ba như MacFuse, WinFuse
- Chúng tôi (XetHub) muốn giúp người dùng truy cập thuận tiện nhiều phiên bản khác nhau của bộ dữ liệu hình ảnh ngay trên laptop cá nhân mà không cần dùng lệnh S3
- Từ câu hỏi "Liệu có thể tạo ra một hệ thống tệp userspace thật sự đa nền tảng không?", chúng tôi đi đến NFSv3
NFS
- NFSv3 là một giao thức hệ thống tệp mạng đã 20 năm tuổi, rất đơn giản và phổ biến nên hầu như mọi hệ điều hành đều triển khai sẵn theo mặc định
- Các nguyên tắc thiết kế đẹp và đơn giản
- Máy chủ hoàn toàn stateless
- Máy chủ NFS thì “ngốc”, còn client NFS thì “thông minh”
- Quy tắc nhất quán bộ nhớ đệm đơn giản (máy chủ không định nghĩa chính sách cache; client tự quyết theo nhu cầu)
- Client NFS biết rõ rằng mình đang giao tiếp qua mạng
- Trên thực tế có hiệu năng rất tốt
- Tóm lại, dùng NFS trên localhost thay vì FUSE để triển khai hệ thống tệp ở chế độ người dùng giúp đạt hiệu năng và độ bền bỉ (resiliency) dễ hơn
- Chỉ cần triển khai giao thức máy chủ một lần là có thể tận dụng ngay cơ chế cache sẵn có và các tính năng đã được tôi luyện suốt 20 năm
Cách XetHub sử dụng NFS
- Phát triển một triển khai hệ thống tệp userspace native, đa nền tảng
- Có thể mount các bộ dữ liệu lớn lên máy người dùng mà không cần driver kernel
- Ví dụ mount mô hình Llama 2 dung lượng 660GB, hoặc phân tích các tệp Parquet lớn bằng truy vấn DuckDB
- Hỗ trợ Linux, Mac và Windows Pro trở lên (Windows Home không hoạt động)
- nfsserve, máy chủ NFS viết bằng Rust, đã được công khai trên GitHub
- Hiệu năng đọc khá tốt, còn ghi thì đã hoạt động nhưng vẫn cần tối ưu thêm
4 bình luận
Khác với tiêu đề, bài viết lại không hề nói vì sao họ viết nó bằng Rust.
Trọng tâm của bài gốc là lý do họ tự phát triển máy chủ NFS của riêng mình... nhưng có lẽ vì không thể bỏ qua từ khóa phổ biến như Rust nên đã đưa nó vào tiêu đề :-)
Có vẻ như bài gốc không nói về lý do viết bằng Rust, mà là nội dung vì sao họ chọn NFS thay vì FUSE.
À nhỉ, giờ nghĩ lại thì ngoài chuyện chỉ nói là nhanh vì dùng Rust ra thì chẳng có gì khác. Tôi đã tóm tắt mà không suy nghĩ gì.