System plików w przestrzeni użytkownika — Filesystem in Userspace
Wersja stabilna | 3.10.4 / 9 czerwca 2021
|
---|---|
Magazyn | |
Napisane w | C |
System operacyjny | Unix , uniksopodobny |
Rodzaj | Sterownik systemu plików |
Licencja | GPL dla części jądra Linux, LGPL dla Libfuse, uproszczone BSD na FreeBSD, licencja ISC na OpenBSD; zastrzeżony dla macOS |
Stronie internetowej | github |
Fuse ( FUSE ) to interfejs oprogramowania dla systemów Unix i Uniksopodobny komputerowych systemów operacyjnych , pozwala się jego nieuprzywilejowanych użytkowników tworzyć własne systemy plików bez edycji jądra kod. Osiąga się to poprzez uruchamianie kodu systemu plików w przestrzeni użytkownika, podczas gdy moduł FUSE zapewnia jedynie „pomost” do rzeczywistych interfejsów jądra.
FUSE jest dostępny dla systemów Linux , FreeBSD , OpenBSD , NetBSD ( w postaci zaciągniętych ), OpenSolaris , Minix 3 , macOS i Windows .
FUSE jest wolnym oprogramowaniem pierwotnie wydanym na warunkach GNU General Public License i GNU Lesser General Public License .
Historia
System FUSE był pierwotnie częścią AVFS ( A Virtual Filesystem ), implementacji systemu plików, na którą duży wpływ miała koncepcja translatora GNU Hurd . Zastąpił Linux Userland Filesystem i dostarczył interfejs translacyjny używający lufis
w libfuse1.
FUSE został pierwotnie wydany na warunkach GNU General Public License i GNU Lesser General Public License , później również ponownie zaimplementowany jako część podstawowego systemu FreeBSD i wydany na warunkach uproszczonej licencji BSD . ISC -licensed ponowne wdrożenie przez Sylvestre Gallon została wydana w marcu 2013 roku i włączona do OpenBSD w czerwcu 2013 r.
FUSE zostało włączone do głównego drzewa jądra Linuksa w wersji jądra 2.6.14.
Przestrzeń użytkownika FUSE, biblioteka libfuse , generalnie podążała za tempem rozwoju jądra Linuksa, zachowując jednocześnie kompatybilność z potomkami BSD. Jest to możliwe, ponieważ jądro FUSE zgłasza własne „poziomy funkcji” lub wersje. Wyjątkiem jest fork FUSE dla macOS, OSXFUSE, który ma zbyt wiele różnic, aby udostępniać bibliotekę. Przerwa w historii libfuse to libfuse3, która zawiera kilka niekompatybilnych ulepszeń w interfejsie i wydajności, w porównaniu do starszej libfuse2 teraz w trybie konserwacji.
Ponieważ protokół jądra-użytkownika FUSE jest wersjonowany i publiczny, programista może wybrać inny fragment kodu zamiast libfuse i nadal komunikować się z funkcjami jądra FUSE. Z drugiej strony, libfuse i jego liczne porty zapewniają przenośny interfejs wysokiego poziomu, który może być zaimplementowany w systemie bez funkcji „FUSE”.
Działanie i użytkowanie
Aby zaimplementować nowy system plików, libfuse
należy napisać program obsługi dołączony do dostarczonej biblioteki. Głównym celem tego programu jest określenie, w jaki sposób system plików ma odpowiadać na żądania odczytu/zapisu/statu. Program służy również do montowania nowego systemu plików. W momencie montowania systemu plików procedura obsługi jest rejestrowana w jądrze. Jeśli użytkownik wysyła teraz żądania odczytu/zapisu/statystyki dla tego nowo zamontowanego systemu plików, jądro przekazuje te żądania we/wy do programu obsługi, a następnie wysyła odpowiedź programu obsługi z powrotem do użytkownika.
FUSE jest szczególnie przydatny do pisania wirtualnych systemów plików . W przeciwieństwie do tradycyjnych systemów plików, które zasadniczo pracują z danymi w pamięci masowej, wirtualne systemy plików w rzeczywistości same nie przechowują danych. Działają jako widok lub tłumaczenie istniejącego systemu plików lub urządzenia pamięci masowej.
W zasadzie każdy zasób dostępny dla implementacji FUSE można wyeksportować jako system plików.
Aplikacje
Systemy plików na dysku
Konwencjonalne systemy plików na dysku można zaimplementować w przestrzeni użytkownika za pomocą FUSE, np. ze względu na kompatybilność lub licencje.
- Linear Tape File System : Umożliwia dostęp do plików przechowywanych na taśmie magnetycznej w podobny sposób jak na dysku lub wymiennych dyskach flash.
- NTFS-3G i Captive NTFS , umożliwiające dostęp do systemów plików NTFS .
Systemy plików warstw
Systemy plików FUSE mogą tworzyć widok bazowego systemu plików, w pewien sposób przekształcając pliki.
- EncFS : Szyfrowany wirtualny system plików
- FuseCompress, gzipfs, Fuse-ZIP, CompFUSEd: skompresowane wirtualne systemy plików
- Archiwizowane systemy plików również mogą wykonywać to zadanie
Archiwizacja i kopie zapasowe systemów plików
Systemy plików FUSE mogą ujawniać zawartość archiwów lub zestawów kopii zapasowych bez konieczności ich wcześniejszego wyodrębniania.
- Archivemount
- Borg (oprogramowanie do tworzenia kopii zapasowych) : Deduplikujący program do tworzenia kopii zapasowych, który umożliwia montowanie archiwów kopii zapasowych jako systemów plików FUSE.
- Restic : Darmowe, szybkie, wydajne i bezpieczne oprogramowanie do tworzenia kopii zapasowych wykorzystuje FUSE, aby móc przeglądać wszystkie migawki kopii zapasowych jako zwykły system plików
- SPFS System plików dla Spectrum Protect, zaprojektowany do montowania przestrzeni plików serwera backupu w dowolnym miejscu na serwerze i korzystania z funkcji serwera backupu (szyfrowanie, deduplikacja, kompresja, filtrowanie itp.). To jest system plików WORM.
Klienci zdalnego/rozproszonego systemu plików
- CernVM-FS : Rozproszony system dystrybucji oprogramowania tylko do odczytu, zaimplementowany jako system plików POSIX w przestrzeni użytkownika (FUSE) przy użyciu transportu HTTP, aby dostarczać oprogramowanie w szybki i niezawodny sposób na skalę globalną.
- CloudStore (dawniej system plików Kosmos): Montując przez FUSE, istniejące narzędzia Linuksa mogą wchodzić w interakcje z CloudStore
- ExpanDrive : komercyjny system plików implementujący SFTP/FTP/S3/Swift przy użyciu FUSE
- FTPFS
- GlusterFS : Klastrowy rozproszony system plików mający możliwość skalowania do kilku petabajtów.
- goofys : system plików FUSE, który umożliwia dostęp do pamięci masowej Amazon S3/Microsoft Azure z naciskiem na wydajność.
- IPFS : Rozproszony system plików peer-to-peer, który stara się połączyć wszystkie urządzenia komputerowe z tym samym systemem plików.
- JuiceFS : Rozproszony system plików POSIX zbudowany na bazie Redis i S3.
- KBFS : Rozproszony system plików z szyfrowaniem end-to-end i globalną przestrzenią nazw opartą na usłudze Keybase.io , która używa FUSE do tworzenia kryptograficznie bezpiecznych montowań plików.
- System plików Luster Cluster użyje FUSE, aby umożliwić jego działanie w przestrzeni użytkownika, dzięki czemu możliwy jest port FreeBSD. Jednak port ZFS- Linux Luster będzie uruchamiał DMU (jednostka zarządzania danymi) ZFS w przestrzeni użytkownika.
- MinFS : MinFS to sterownik bezpiecznika dla serwera obiektowej pamięci masowej zgodnego z Amazon S3. MinFS umożliwia zamontowanie zdalnego zasobnika (z magazynu obiektów zgodnego z S3), tak jakby był katalogiem lokalnym.
- MooseFS : Rozproszony, odporny na awarie system plików typu open source dostępny w każdym systemie operacyjnym z implementacją FUSE (Linux, FreeBSD, NetBSD, OpenSolaris, OS X), zdolny do przechowywania petabajtów danych rozłożonych na kilka serwerów widocznych jako jeden zasób.
- ObjectiveFS : Rozproszony system plików z zapleczem magazynu obiektów (Amazon S3, Google Cloud Storage lub magazyn obiektów zgodny z S3) przy użyciu FUSE
- s3fs : Daje możliwość zamontowania zasobnika S3 tak, jakby był to lokalny system plików.
- Sector File System : Sector to rozproszony system plików przeznaczony dla dużej liczby komputerów. Sector używa FUSE, aby zapewnić możliwy do zamontowania interfejs lokalnego systemu plików.
- SSHFS : Zapewnia dostęp do zdalnego systemu plików przez SSH .
- Transmit : Komercyjny klient FTP, który dodaje również możliwość montowania serwerów WebDAV, SFTP, FTP i Amazon S3 jako dysków w Finderze za pośrednictwem MacFUSE.
- WebDrive : komercyjny system plików implementujący WebDAV , SFTP, FTP, FTPS i Amazon S3
- WikipediaFS : przeglądaj i edytuj artykuły Wikipedii tak, jakby były prawdziwymi plikami
- Wuala : był wieloplatformowym, w pełni zintegrowanym rozproszonym systemem plików opartym na Javie. Korzystanie z FUSE, MacFUSE i CBFS Connect odpowiednio do integracji systemu plików, oprócz aplikacji opartej na języku Java dostępnej z dowolnej przeglądarki internetowej obsługującej język Java (usługa wycofana w 2015 r.).
- IndexFS : Zdalny system plików agregujący pliki z przezroczystym dostępem CURL do plików rozproszonych.
Inne
- GVfs : wirtualny system plików dla pulpitu GNOME
- rvault : Bezpieczny i uwierzytelniony magazyn sekretów i małych dokumentów wykorzystujący szyfrowanie kopert z uwierzytelnianiem za pomocą hasła jednorazowego (OTP). Używa FUSE do ujawnienia skarbca jako systemu plików.
Zobacz też
- PUFFS , podobny framework z kompatybilnością FUSE
- 9P (protokół)
- Instalowalny system plików
- Dokan Library FUSE Zgodność z systemem Windows
- Przewidywany system plików Windows (ProjFS)
Bibliografia
Linki zewnętrzne
- Oficjalna strona internetowa
- Stwórz własny system plików z FUSE autorstwa Sumit Singh
- Lista systemów plików FUSE
- Dokumentacja/filesystems/fuse.txt dokumentacja w drzewie źródeł Linuksa
- WinFSP , system podobny do FUSE dla Windows (warstwa kompatybilności FUSE jest dostarczana dla Cygwin)
- Crossmeta FUSE , Port FUSE do Windows (oprogramowanie komercyjne)