So che alcuni filesystem si presentano tramite Fuse e mi chiedevo quali fossero i pro ei contro di questo approccio.
Risposta
Non sono sicuro se intendi filesystem reali su disco o qualsiasi filesystem. Non ho mai visto un filesystem normale usare FUSE, anche se lo suppongo ” è possibile; il vantaggio principale di FUSE è che ti consente di presentare qualcosa alle applicazioni (o allutente) che assomiglia a un filesystem, ma in realtà chiama solo le funzioni allinterno della tua applicazione quando lutente 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 tramite il filesystem e lo pseudo /proc
-filesystem proviene da loro; FUSE è un modo per le applicazioni di seguire facilmente quel modello
Per esempio, qui “uno screenshot di un filesystem FUSE (molto privo di caratteristiche) che dà accesso ai dati del sito SE:
Naturalmente nessuno di questi file esiste realmente; quando ls
ha chiesto lelenco dei file nella directory FUSE ha chiamato una funzione nel mio programma che ha fatto una richiesta API a questo sito per caricare le informazioni sullutente 73 (me); cat
cercando di leggere da display_name
e website_url
ha chiamato più funzioni che hanno restituito i dati memorizzati nella cache da memoria, senza che nulla esista effettivamente su disco
Commenti
- Ci sono implementazioni FUSE di FAT , NTFS , iso9660 , ext2 e altro .
- Troverai filesystem pesanti implementati in fuse: LessFS, GlusterFS, MooseFS . GFS di Google ' (non POSIX) viene eseguito anche nello spazio utente.
- Dove hai trovato lapp?!?!
- @George Lho scritto mentre stavo scherzando con lAPI SO. Non ' utilizza rotte eccetto / users, quindi ' stai praticamente vedendo tutte le funzionalità implementate in quella schermata; era solo per vedere quanto sarebbe stato difficile
- @George lho messo su github
Risposta
I filesystem Unix sono tradizionalmente implementati nel kernel. FUSE consente limplementazione dei filesystem da parte di un programma utente.
I filesystem nel kernel sono più adatti per i filesystem principali per programmi e dati:
- Possono essere usati sul supporto di avvio (il programma che implementa un filesystem FUSE deve essere caricato da qualche parte).
- Sono più robusti, in quanto non lo faranno “t vanno via a causa di un arresto anomalo del processo o di una morte accidentale.
- Sono un po più veloci.
I filesystem FUSE hanno altri vantaggi, principalmente legati alla loro flessibilità:
- Possono essere caricati e montati da utenti ordinari, quindi “sono convenienti per i file system che gli utenti tendono a montare da soli: per laccesso alla rete, per passare attraverso i file di archivio, per i supporti rimovibili, ecc. .
- Se un driver del filesystem FUSE va in crash, non metterà in panico il tuo kernel: non vedrai niente di peggio degli errori di I / O nelle applicazioni che stavano accedendo al filesystem.
- può essere programmato molto rapidamente; ci sono collegamenti FUSE per molti linguaggi di scripting in cui un utile driver del filesystem FUSE può essere scritto in poche centinaia di righe di codice.
- Possono possono essere implementati molto rapidamente, sia perché non è necessario lintervento dellamministratore per installarli, sia perché possono essere facilmente portati tra sistemi operativi supportati .
- Non ci sono problemi di licenza relativi al collegamento statico a un kernel (questo riguarda zfs ).
risposta
FUSE non è realmente un file system in sé, ma un codice che consente di implementare i file system come processi invece che come 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 è limpatto sulle prestazioni rispetto ai driver nativi (kernel).