Je sais que certains systèmes de fichiers se présentent via Fuse et je me posais des questions sur le pour et le contre de cette approche.
Réponse
Je « ne suis pas sûr si vous voulez dire des systèmes de fichiers réels, sur disque ou tout autre système de fichiers. Je » nai jamais vu un système de fichiers normal utiliser FUSE, même si je suppose » est possible; le principal avantage de FUSE est quil vous permet de présenter quelque chose aux applications (ou à lutilisateur) qui ressemble à un système de fichiers, mais qui nappelle en réalité que des fonctions dans votre application lorsque lutilisateur 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 pseudo /proc
-filesystem vient deux; FUSE est un moyen pour les applications de suivre facilement ce modèle
Par exemple, voici « une capture décran dun système de fichiers FUSE (très dépourvu de caractéristiques) qui donne accès aux données du site SE:
Naturellement, aucun de ces fichiers nexiste réellement; quand ls
a demandé la liste des fichiers dans le répertoire FUSE a appelé une fonction de mon programme qui a fait une requête API à ce site pour charger des informations sur lutilisateur 73 (moi); cat
tentative de lecture depuis display_name
et website_url
appelé dautres fonctions qui ont renvoyé les données mises en cache depuis mémoire, sans rien qui existe réellement sur le disque
Commentaires
- Il existe des implémentations FUSE de FAT , NTFS , iso9660 , ext2 et plus .
- Vous trouverez des systèmes de fichiers robustes implémentés dans fuse: LessFS, GlusterFS, MooseFS . Le GFS de Google ' (et non POSIX) fonctionne également dans lespace utilisateur.
- Où avez-vous trouvé cette application?!?!
- @George Je lai écrit quand je jouais avec lAPI SO. Il nutilise ' aucune route à lexception de / users, donc vous ' voyez en gros toutes les fonctionnalités implémentées dans cette capture décran; cétait juste pour voir à quel point ce serait difficile
- @George Je lai mis sur github
Réponse
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 dans le noyau sont mieux adaptés aux principaux systèmes de fichiers 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é de quelque part).
- Ils « sont plus robustes, en ce sens quils ne seront pas » disparaissent à cause dun processus qui plante ou est tué par erreur.
- Ils sont un peu plus rapides.
Les systèmes de fichiers FUSE ont dautres 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 laccès au réseau, pour parcourir les fichiers darchives, pour les supports amovibles, etc. .
- Si un pilote de système de fichiers FUSE plante, il ne paniquera pas votre noyau: vous ne verrez rien de pire que des erreurs dE / S dans les applications qui accédaient au système de fichiers.
- Ils peut être programmé 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 quil ny a pas besoin dintervention de ladministrateur pour les installer et parce quils peuvent être facilement portés entre les OS pris en charge .
- Il ny a aucun problème de licence lié à la liaison statique avec un noyau (cela affecte zfs ).
Réponse
FUSE nest pas vraiment un système de fichiers en soi mais un code qui permet aux systèmes de fichiers dêtre implémentés comme des processus au lieu de modules du noyau.
Lun 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 dexploitation comme OpenSolaris et * BSD http://www.tuxera.com/community/ntfs-3g-download/
Le principal inconvénient est limpact sur les performances par rapport aux pilotes natifs (noyau).