Jakie są zalety i wady korzystania z systemów plików FuseFS?

19

Wiem, że niektóre systemy plików prezentują się za pośrednictwem Fuse i zastanawiałem się nad zaletami i wadami tego podejścia.

geoffc
źródło

Odpowiedzi:

17

Nie jestem pewien, czy masz na myśli prawdziwe systemy plików na dysku lub dowolny system plików. Nigdy nie widziałem, aby normalny system plików korzystał z FUSE, chociaż przypuszczam, że jest to możliwe; główną zaletą FUSE jest to, że pozwala prezentować aplikacjom (lub użytkownikowi) coś, co wygląda jak system plików, ale tak naprawdę wywołuje funkcje w aplikacji, gdy użytkownik próbuje wykonać takie czynności, jak lista plików w katalogu lub utworzenie nowego plik. Plan9 jest dobrze znany z tego, że próbuje udostępnić wszystko poprzez system plików, a /procpseudo-system pochodzi z nich; BEZPIECZNIK to sposób, w jaki aplikacje mogą łatwo podążać za tym wzorem

Na przykład, oto zrzut ekranu (bardzo pozbawionego funkcji) systemu plików FUSE, który zapewnia dostęp do danych witryny SE:

Zrzut ekranu systemu plików FUSE w akcji

Oczywiście żaden z tych plików nie istnieje; kiedy lspoprosił o listę plików w katalogu o nazwie bezpiecznik funkcją w moim programie, który zrobił żądanie API do tej strony do informacji o obciążeniu 73 użytkownik (me); catpróba odczytu display_namei website_urlwywołanie większej liczby funkcji, które zwróciły buforowane dane z pamięci, bez niczego faktycznie istniejącego na dysku

Michał Mrożek
źródło
3
Istnieją implementacje FUSE FAT , NTFS , iso9660 , ext2 i innych .
Gilles 'SO - przestań być zły'
2
Znajdziesz systemy plików o dużej wytrzymałości zaimplementowane w bezpieczniku: LessFS, GlusterFS, MooseFS. Google GFS (nie POSIX) działa również w przestrzeni użytkownika.
Tobu
Gdzie znalazłeś tę aplikację?!?!
Nathan Osman
4
@George Napisałem to, gdy zadzierałem z SO API. Nie korzysta z żadnych tras oprócz / users, więc zasadniczo widzisz wszystkie zaimplementowane funkcje na tym zrzucie ekranu; tylko po to, aby przekonać się, jakie to będzie trudne
Michael Mrozek
5
@George Umieściłem go na githubie
Michael Mrozek
19

Systemy plików Unix są tradycyjnie implementowane w jądrze. FUSE pozwala na implementację systemów plików przez program użytkownika.

Wewnętrzne systemy plików są lepiej dostosowane do głównych systemów plików programów i danych:

  • Można ich używać na nośniku startowym (program implementujący system plików FUSE musi skądś zostać załadowany).
  • Są bardziej wytrzymałe, ponieważ nie odejdą z powodu awarii procesu lub zabicia przez pomyłkę.
  • Są nieco szybsi.

Systemy plików FUSE mają inne zalety, głównie związane z ich elastycznością:

  • Mogą być ładowane i montowane przez zwykłych użytkowników, dzięki czemu są wygodne dla systemów plików, które użytkownicy montują samodzielnie: w celu uzyskania dostępu do sieci, przeglądania plików archiwalnych, nośników wymiennych itp.
  • Jeśli sterownik systemu plików FUSE ulegnie awarii, nie spowoduje paniki w jądrze: nie zobaczysz nic gorszego niż błędy we / wy w aplikacjach, które uzyskiwały dostęp do systemu plików.
  • Można je programować bardzo szybko; istnieją powiązania FUSE dla wielu języków skryptowych, w których użyteczny sterownik systemu plików FUSE można zapisać w kilkuset wierszach kodu.
  • Można je wdrożyć bardzo szybko, zarówno dlatego, że nie ma potrzeby interwencji administratora, aby je zainstalować, a także dlatego, że można je łatwo przenosić między obsługiwanymi systemami operacyjnymi .
  • Nie ma żadnych problemów licencyjnych związanych ze statycznym łączeniem z jądrem (dotyczy to ZFS ).
Gilles „SO- przestań być zły”
źródło
7

FUSE nie jest tak naprawdę systemem plików jako takim, ale kodem, który pozwala na implementację systemów plików jako procesów zamiast modułów jądra.

Jedną z najbardziej przydatnych zalet FUSE jest umożliwienie „mieszania” kodu GPL z kodem innym niż GPL. Na przykład Gnu / Linux i ZFS http://zfs-fuse.net/ lub NTFS-3G w wielu systemach operacyjnych, takich jak OpenSolaris i * BSD http://www.tuxera.com/community/ntfs-3g-download/

Główną wadą jest wpływ na wydajność w porównaniu do sterowników natywnych (jądra).

jlliagre
źródło