Wiem, że niektóre systemy plików prezentują się przez Fuse i zastanawiałem się nad zaletami i wadami tego podejścia.
Odpowiedź
Nie jestem pewien, czy masz na myśli prawdziwe, dyskowe systemy plików lub jakikolwiek inny system plików. Nigdy nie widziałem normalnego systemu plików używającego FUSE, chociaż przypuszczam, że tak. s to możliwe; główną zaletą FUSE jest to, że umożliwia prezentowanie aplikacji (lub użytkownikowi) czegoś, co wygląda jak system plików, ale tak naprawdę wywołuje funkcje w aplikacji, gdy użytkownik próbuje zrobić takie rzeczy, jak wyświetlenie plików w katalogu lub utwórz nowy plik. Plan9 jest dobrze znany z tego, że próbuje udostępnić wszystko przez system plików, a pseudo /proc
-filesystem pochodzi z nich; FUSE jest sposobem na łatwe podążanie za tym wzorcem przez aplikacje
Na przykład tutaj „zrzut ekranu (bardzo pozbawionego cech) systemu plików FUSE, który daje dostęp do danych serwisu SE:
Oczywiście żaden z tych plików w rzeczywistości nie istnieje; gdy ls
poprosił o listę plików w katalogu FUSE wywołał funkcję w moim programie, która wysłała żądanie API do tej witryny, aby załadować informacje o użytkowniku 73 (ja); cat
próba odczytu z display_name
i website_url
wywołało więcej funkcji, które zwróciły dane z pamięci podręcznej pamięć, bez niczego faktycznie istniejącego na dysku
Komentarze
- Istnieją implementacje FUSE FAT , NTFS , iso9660 , ext2 i więcej .
- Znajdziesz ciężkie systemy plików zaimplementowane w fuse: LessFS, GlusterFS, MooseFS . GFS Google ' (nie POSIX) również działa w przestrzeni użytkownika.
- Gdzie znalazłeś tę aplikację?!?!
- @George Napisałem to, kiedy majstrowałem przy SO API. Nie ' nie używa żadnych tras z wyjątkiem / users, więc ' zasadniczo widzisz wszystkie zaimplementowane funkcje na tym zrzucie ekranu; tylko po to, żeby zobaczyć, jakie to będzie trudne
- @George Umieściłem to na github
Odpowiedź
Uniksowe systemy plików są tradycyjnie implementowane w jądrze. FUSE umożliwia wdrażanie systemów plików przez program użytkownika.
Systemy plików w jądrze są lepiej dostosowane do głównych systemów plików programów i danych:
- Mogą być używane na nośniku startowym (program implementujący system plików FUSE musi być skądś załadowany).
- Są bardziej niezawodne, ponieważ nie znikają z powodu awarii lub omyłkowego zabicia procesu.
- Są nieco szybsze.
Systemy plików FUSE mają inne zalety, głównie obracając się wokół ich elastyczności:
- Mogą być ładowane i montowane przez zwykłych użytkowników, więc są wygodne dla systemów plików, które użytkownicy mają tendencję do samodzielnego montowania: dla dostępu do sieci, dla przeglądania plików archiwów, dla nośników wymiennych itp. .
- Jeśli sterownik systemu plików FUSE ulegnie awarii, nie panikuje jądra: nie zobaczysz nic gorszego niż błędy wejścia / wyjścia w aplikacjach, które uzyskiwały dostęp do systemu plików.
- można bardzo szybko zaprogramować; istnieją wią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.
- Mogą być wdrażane bardzo szybko, zarówno dlatego, że nie ma potrzeby interwencji administratora, aby je zainstalować, jak i dlatego, że można je łatwo przenosić między obsługiwanymi systemami operacyjnymi .
- Nie ma problemów licencyjnych związanych z statycznym połączeniem z jądrem (dotyczy to zfs ).
Odpowiedz
FUSE nie jest w rzeczywistości systemem plików, ale kodem, który pozwala na implementację systemów plików jako procesów zamiast modułów jądra.
Jedną z najbardziej użytecznych zalet FUSE jest umożliwienie „mieszania” kodu GPL z kodem spoza 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 ze sterownikami natywnymi (jądro).