Quali sono i vantaggi e gli svantaggi dell'utilizzo dei filesystem FuseFS?


19

So che alcuni filesystem si presentano attraverso Fuse e mi chiedevo quali fossero i pro e i contro di questo approccio.

Risposte:


17

Non sono positivo se intendi veri filesystem su disco o qualsiasi filesystem. Non ho mai visto un normale filesystem usare FUSE, anche se suppongo sia possibile; il principale vantaggio di FUSE è che ti consente di presentare qualcosa alle applicazioni (o all'utente) che assomiglia a un filesystem, ma chiama semplicemente funzioni all'interno dell'applicazione quando l'utente cerca di fare cose come elencare i file in una directory o creare un nuovo file. Plan9 è ben noto per aver cercato di rendere tutto accessibile attraverso il filesystem e lo /procpseudo-filesystem proviene da essi; FUSE è un modo per le applicazioni di seguire facilmente quel modello

Ad esempio, ecco uno screenshot di un file system FUSE (molto preciso) che consente di accedere ai dati del sito SE:

Schermata del filesystem FUSE in azione

Naturalmente nessuno di questi file esiste realmente; quando è stato lschiesto l'elenco dei file nella directory FUSE ha chiamato una funzione nel mio programma che ha fatto una richiesta API a questo sito per caricare informazioni sull'utente 73 (me); catcercando di leggere display_namee website_urlchiamare più funzioni che hanno restituito i dati memorizzati nella cache, senza nulla effettivamente esistente sul disco


3
Esistono implementazioni FUSE di FAT , NTFS , iso9660 , ext2 e altre .
Gilles 'SO- smetti di essere malvagio' il

2
Troverai filesystem pesanti implementati in miccia: LessFS, GlusterFS, MooseFS. GFS di Google (non POSIX) funziona anche nello spazio utenti.
Tobu,

Dove hai trovato quell'app?!?!
Nathan Osman,

4
@George l'ho scritto quando stavo scherzando con l'API SO. Non utilizza alcun percorso tranne / utenti, quindi sostanzialmente vedrai tutte le funzionalità implementate in quello screenshot; era solo per vedere quanto sarebbe stato difficile
Michael Mrozek

5
@George, l'ho messo su github
Michael Mrozek

19

I filesystem Unix sono tradizionalmente implementati nel kernel. FUSE consente ai filesystem di essere implementati da un programma utente.

I filesystem nel kernel sono più adatti ai filesystem principali per programmi e dati:

  • Possono essere utilizzati sul supporto di avvio (il programma che implementa un filesystem FUSE deve essere caricato da qualche parte).
  • Sono più robusti, nel senso che non andranno via a causa di un processo che si interrompe o viene ucciso per errore.
  • Sono un po 'più veloci.

I filesystem FUSE presentano altri vantaggi, principalmente basati sulla loro flessibilità:

  • Possono essere caricati e montati da utenti normali, quindi sono convenienti per i file system che gli utenti tendono a montare da soli: per l'accesso alla rete, per passare attraverso i file di archivio, per i supporti rimovibili, ecc.
  • Se un driver del filesystem FUSE si arresta in modo anomalo, non farà prendere il panico dal kernel: non vedrai nulla di peggio degli errori I / O nelle applicazioni che accedono al filesystem.
  • Possono essere programmati molto rapidamente; ci sono collegamenti FUSE per molti linguaggi di scripting in cui un utile driver di file system FUSE può essere scritto in poche centinaia di righe di codice.
  • Possono essere implementati molto rapidamente, sia perché non è necessario l'intervento dell'amministratore per installarli, sia perché possono essere trasferiti facilmente tra i sistemi operativi supportati .
  • Non ci sono problemi di licenza legati al collegamento statico con un kernel (questo riguarda zfs ).

7

FUSE non è in realtà un file system in sé, ma un codice che consente di implementare i file system come processi anziché moduli del kernel.

Uno dei vantaggi più utili di FUSE è consentire al codice GPL di "mescolarsi" con uno non GPL. Ad esempio, Gnu / Linux e ZFS http://zfs-fuse.net/ o NTFS-3G su molti sistemi operativi come OpenSolaris e * BSD http://www.tuxera.com/community/ntfs-3g-download/

Lo svantaggio principale è l'impatto sulle prestazioni rispetto ai driver nativi (kernel).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.