Apa manfaat dan kerugian menggunakan sistem file FuseFS?

19

Saya tahu beberapa filesystem hadir melalui Fuse dan saya bertanya-tanya tentang pro dan kontra untuk pendekatan ini.

geoffc
sumber

Jawaban:

17

Saya tidak positif jika yang Anda maksud adalah nyata, sistem file pada disk atau sistem file apa pun. Saya belum pernah melihat filesystem normal menggunakan FUSE, meskipun saya kira itu mungkin; manfaat utama dari FUSE adalah memungkinkan Anda menghadirkan sesuatu ke aplikasi (atau pengguna) yang terlihat seperti sistem file, tetapi sebenarnya hanya memanggil fungsi-fungsi dalam aplikasi Anda ketika pengguna mencoba melakukan hal-hal seperti daftar file dalam direktori atau membuat yang baru mengajukan. Plan9 terkenal karena mencoba membuat segala sesuatu dapat diakses melalui sistem file, dan /procpseudo-filesystem berasal dari mereka; FUSE adalah cara bagi aplikasi untuk dengan mudah mengikuti pola itu

Sebagai contoh, berikut adalah screenshot dari filesystem FUSE (sangat tanpa fitur) yang memberikan akses ke data situs SE:

Cuplikan layar filesystem FUSE beraksi

Secara alami tidak ada satu pun dari file-file itu yang benar-benar ada; ketika lsditanya daftar file dalam direktori FUSE disebut fungsi dalam program saya yang melakukan permintaan API ke situs ini untuk memuat informasi tentang pengguna 73 (saya); catmencoba membaca dari display_namedan website_urlmemanggil lebih banyak fungsi yang mengembalikan data yang di-cache dari memori, tanpa sesuatu yang benar-benar ada pada disk

Michael Mrozek
sumber
3
Ada implementasi FUSE dari FAT , NTFS , iso9660 , ext2 , dan banyak lagi .
Gilles 'SO- stop being evil'
2
Anda akan menemukan filesystem tugas berat diimplementasikan dalam sekering: LessFS, GlusterFS, MooseFS. GFS Google (bukan POSIX) juga berjalan di userspace.
Tobu
Di mana Anda menemukan aplikasi itu?!?!
Nathan Osman
4
@ George saya menulisnya ketika saya mengacaukan SO API. Itu tidak menggunakan rute apa pun kecuali / pengguna, jadi pada dasarnya Anda melihat semua fitur yang diterapkan dalam tangkapan layar itu; hanya untuk melihat betapa sulitnya
Michael Mrozek
5
@ George saya letakkan di github
Michael Mrozek
19

Sistem file Unix secara tradisional diimplementasikan dalam kernel. FUSE memungkinkan sistem file diimplementasikan oleh program pengguna.

Sistem file in-kernel lebih cocok untuk sistem file utama untuk program dan data:

  • Mereka dapat digunakan pada media boot (program yang menerapkan sistem file FUSE harus dimuat dari suatu tempat).
  • Mereka lebih kuat, karena mereka tidak akan pergi karena proses crash atau terbunuh karena kesalahan.
  • Mereka agak lebih cepat.

Filesystem FUSE memiliki kelebihan lain, sebagian besar berkisar pada fleksibilitasnya:

  • Mereka dapat dimuat dan dipasang oleh pengguna biasa, sehingga mereka nyaman untuk sistem file yang cenderung dipasang oleh pengguna sendiri: untuk akses jaringan, untuk pergi melalui file arsip, untuk media yang dapat dilepas, dll.
  • Jika driver sistem file FUSE crash, itu tidak akan panik kernel Anda: Anda akan melihat tidak ada yang lebih buruk daripada kesalahan I / O dalam aplikasi yang mengakses sistem file.
  • Mereka dapat diprogram dengan sangat cepat; ada binding FUSE untuk banyak bahasa scripting di mana driver filesystem FUSE yang berguna dapat ditulis dalam beberapa ratus baris kode.
  • Mereka dapat digunakan dengan sangat cepat, baik karena tidak perlu intervensi administrator untuk menginstalnya dan karena mereka dapat dengan mudah diangkut antara OS yang didukung .
  • Tidak ada masalah lisensi yang terkait dengan yang terhubung secara statis dengan kernel (ini mempengaruhi zfs ).
Gilles 'SANGAT berhenti menjadi jahat'
sumber
7

FUSE sebenarnya bukan sistem file, tetapi kode yang memungkinkan sistem file untuk diimplementasikan sebagai proses alih-alih modul kernel.

Salah satu manfaat FUSE yang paling berguna adalah mengizinkan kode GPL untuk "bercampur" dengan yang bukan GPL. Sebagai contoh, Gnu / Linux dan ZFS http://zfs-fuse.net/ atau NTFS-3G pada banyak OS seperti OpenSolaris dan * BSD http://www.tuxera.com/community/ntfs-3g-download/

Kelemahan utama adalah dampak kinerja dibandingkan dengan driver asli (kernel).

Jlliagre
sumber