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:

Screenshot del filesystem FUSE in azione

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).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *