Quels sont les avantages et les inconvénients de l'utilisation des systèmes de fichiers FuseFS?

19

Je sais que certains systèmes de fichiers se présentent via Fuse et je me posais des questions sur les avantages et les inconvénients de cette approche.

geoffc
la source

Réponses:

17

Je ne suis pas sûr si vous voulez dire de vrais systèmes de fichiers sur disque ou tout système de fichiers. Je n'ai jamais vu un système de fichiers normal utiliser FUSE, bien que je suppose que c'est possible; le principal avantage de FUSE est qu'il vous permet de présenter quelque chose à des applications (ou à l'utilisateur) qui ressemble à un système de fichiers, mais appelle simplement des fonctions dans votre application lorsque l'utilisateur essaie de faire des choses comme lister les fichiers dans un répertoire ou créer un nouveau fichier. Plan9 est bien connu pour essayer de rendre tout accessible via le système de fichiers, et le /procpseudo-système de fichiers vient d'eux; FUSE est un moyen pour les applications de suivre facilement ce modèle

Par exemple, voici une capture d'écran d'un système de fichiers FUSE (très dépourvu de fonctionnalités) qui donne accès aux données du site SE:

Capture d'écran du système de fichiers FUSE en action

Naturellement, aucun de ces fichiers n'existe réellement; lorsqu'on lslui a demandé la liste des fichiers dans le répertoire FUSE a appelé une fonction dans mon programme qui a fait une requête API sur ce site pour charger des informations sur l'utilisateur 73 (moi); catessayer de lire display_nameet d' website_urlappeler plus de fonctions qui ont renvoyé les données en cache de la mémoire, sans que rien n'existe réellement sur le disque

Michael Mrozek
la source
3
Il existe des implémentations FUSE de FAT , NTFS , iso9660 , ext2 et plus encore .
Gilles 'SO- arrête d'être méchant'
2
Vous trouverez des systèmes de fichiers lourds implémentés en fusible: LessFS, GlusterFS, MooseFS. Le GFS de Google (pas POSIX) fonctionne également dans l'espace utilisateur.
Tobu
Où avez-vous trouvé cette application?!?!
Nathan Osman
4
@George Je l'ai écrit quand je jouais avec l'API SO. Il n'utilise aucune route sauf / users, donc vous voyez essentiellement toutes les fonctionnalités implémentées dans cette capture d'écran; c'était juste pour voir à quel point ce serait difficile
Michael Mrozek
5
@George Je l'ai mis sur github
Michael Mrozek
19

Les systèmes de fichiers Unix sont traditionnellement implémentés dans le noyau. FUSE permet aux systèmes de fichiers d'être implémentés par un programme utilisateur.

Les systèmes de fichiers intégrés au noyau sont mieux adaptés aux systèmes de fichiers principaux pour les programmes et les données:

  • Ils peuvent être utilisés sur un support de démarrage (le programme implémentant un système de fichiers FUSE doit être chargé quelque part).
  • Ils sont plus robustes, dans la mesure où ils ne disparaîtront pas en raison d'un plantage du processus ou d'être tué par erreur.
  • Ils sont un peu plus rapides.

Les systèmes de fichiers FUSE présentent d'autres avantages, principalement liés à leur flexibilité:

  • Ils peuvent être chargés et montés par des utilisateurs ordinaires, ils sont donc pratiques pour les systèmes de fichiers que les utilisateurs ont tendance à monter eux-mêmes: pour l'accès au réseau, pour parcourir les fichiers d'archives, pour les supports amovibles, etc.
  • Si un pilote de système de fichiers FUSE tombe en panne, cela ne paniquera pas votre noyau: vous ne verrez rien de pire que des erreurs d'E / S dans les applications qui accédaient au système de fichiers.
  • Ils peuvent être programmés très rapidement; il existe des liaisons FUSE pour de nombreux langages de script où un pilote de système de fichiers FUSE utile peut être écrit en quelques centaines de lignes de code.
  • Ils peuvent être déployés très rapidement, à la fois parce qu'il n'y a pas besoin d'intervention de l'administrateur pour les installer et parce qu'ils peuvent être facilement portés entre les systèmes d'exploitation pris en charge .
  • Il n'y a aucun problème de licence lié à la liaison statique avec un noyau (cela affecte zfs ).
Gilles 'SO- arrête d'être méchant'
la source
7

FUSE n'est pas vraiment un système de fichiers en soi mais un code qui permet aux systèmes de fichiers d'être implémentés en tant que processus au lieu de modules du noyau.

L'un des avantages les plus utiles de FUSE est de permettre au code GPL de se «mélanger» avec un code non GPL. Par exemple, Gnu / Linux et ZFS http://zfs-fuse.net/ ou NTFS-3G sur de nombreux systèmes d'exploitation comme OpenSolaris et * BSD http://www.tuxera.com/community/ntfs-3g-download/

Le principal inconvénient est l'impact sur les performances par rapport aux pilotes natifs (noyau).

jlliagre
la source