System plików w przestrzeni użytkownika — Filesystem in Userspace

System plików w przestrzeni użytkownika
Wersja stabilna
3.10.4 / 9 czerwca 2021 ; 2 miesiące temu ( 9 czerwca 2021 )
Magazyn Edytuj to na Wikidata
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 .com /libfuse /libfuse

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 lufisw 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

Diagram przedstawiający sposób działania FUSE: Żądanie z przestrzeni użytkownika do listy plików (ls -l /tmp/fuse) jest przekierowywane przez jądro przez VFS do FUSE. FUSE następnie wykonuje zarejestrowany program obsługi (./hello) i przekazuje mu żądanie (ls -l /tmp/fuse). Program obsługi zwraca odpowiedź do FUSE, która jest następnie przekierowywana do programu w przestrzeni użytkownika, który pierwotnie wysłał żądanie.

Aby zaimplementować nowy system plików, libfusenależ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.

Odmontowywanie systemu plików opartego na FUSE za pomocą fusermountpolecenia

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.

Systemy plików warstw

Systemy plików FUSE mogą tworzyć widok bazowego systemu plików, w pewien sposób przekształcając pliki.

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ż

Bibliografia

Linki zewnętrzne