Jeg vet at noen filsystemer presenterer seg gjennom Fuse, og jeg lurte på fordeler og ulemper med denne tilnærmingen.
Svar
Jeg er ikke positiv hvis du mener ekte filsystemer på disken eller noe filsystem. Jeg har aldri sett et vanlig filsystem bruke FUSE, selv om jeg antar det » er mulig; den viktigste fordelen med FUSE er at du kan presentere noe for applikasjoner (eller brukeren) som ser ut som et filsystem, men egentlig bare kaller funksjoner i applikasjonen din når brukeren prøver å gjøre ting som å liste filene i en katalog eller opprett en ny fil. Plan9 er kjent for å prøve å gjøre alt tilgjengelig gjennom filsystemet, og /proc
pseudo -filsystem kommer fra dem; FUSE er en måte for applikasjoner å enkelt følge det mønsteret
For eksempel, her «et skjermbilde av et (veldig funksjonelt) FUSE-filsystem som gir tilgang til SE-nettsteddata:
Naturligvis finnes det ingen av disse filene; når ls
ba om listen over filer i katalogen FUSE kalte en funksjon i programmet mitt som gjorde en API-forespørsel til dette nettstedet for å laste informasjon om bruker 73 (meg); cat
prøver å lese fra display_name
og website_url
kalte flere funksjoner som returnerte hurtigbufrede data fra minne, uten at noe faktisk eksisterer på disken
Kommentarer
- Det er FUSE-implementeringer av FAT , NTFS , iso9660 , ext2 , og mer .
- Du finner tunge filsystemer implementert i sikring: LessFS, GlusterFS, MooseFS . Google ' s GFS (ikke POSIX) kjører også i brukerområdet.
- Hvor fant du den appen?!?!
- @ George Jeg skrev det da jeg rotet med SO API. Det ' t bruker noen ruter unntatt / brukere, så du ' ser i utgangspunktet alle de implementerte funksjonene i det skjermbildet; det var bare å se hvor vanskelig det ville være
- @George Jeg la det på github
Svar
Unix-filsystemer er tradisjonelt implementert i kjernen. FUSE tillater at filsystemer implementeres av et brukerprogram.
Filsystemer i kjernen er bedre egnet for hovedfilsystemer for programmer og data:
- De kan brukes på oppstartsmedier (programmet som implementerer et FUSE-filsystem må lastes inn et sted).
- De er mer robuste, fordi de ikke vil gå bort på grunn av at en prosess krasjer eller blir drept ved en feiltakelse.
- De er noe raskere.
FUSE-filsystemer har andre fordeler, hovedsakelig rundt fleksibiliteten:
- De kan lastes inn og monteres av vanlige brukere, så de er praktiske for filsystemer som brukere pleier å montere av seg selv: for nettverkstilgang, for å gå gjennom arkivfiler, for flyttbare medier osv. .
- Hvis en FUSE-filsystemdriver krasjer, vil den ikke få kjernen din: du vil ikke se noe verre enn I / O-feil i applikasjoner som fikk tilgang til filsystemet.
- De kan programmeres veldig raskt; det er FUSE-bindinger for mange skriptspråk der en nyttig FUSE-filsystemdriver kan skrives i noen få hundre linjer med kode.
- De kan distribueres veldig raskt, både fordi det ikke er behov for administratorintervensjon for å installere dem, og fordi de lett kan porteres mellom OSer som støttes .
- Det er ingen lisensieringsproblemer knyttet til å være statisk knyttet til en kjerne (dette påvirker zfs ).
Svar
FUSE er egentlig ikke et filsystem i seg selv, men kode som gjør at filsystemer kan implementeres som prosesser i stedet for kjernemoduler.
En av de mest nyttige fordelene med FUSE er å tillate GPL-kode å «mikse» med ikke GPL-en. For eksempel Gnu / Linux og ZFS http://zfs-fuse.net/ eller NTFS-3G på mange operativsystemer som OpenSolaris og * BSD http://www.tuxera.com/community/ntfs-3g-download/
Den største ulempen er ytelseseffekten sammenlignet med innfødte (kjernedrivere).