I know some filesystems present themselves through Fuse and I was wondering about the pros and cons to this approach.
I'm not positive if you mean real, on-disk filesystems or any filesystem. I've never seen a normal filesystem use FUSE, although I suppose it's possible; the main benefit of FUSE is it lets you present something to applications (or the user) that looks like a filesystem, but really just calls functions within your application when the user tries to do things like list the files in a directory or create a new file. Plan9 is well known for trying to make everything accessible through the filesystem, and the
For example, here's a screenshot of a (very featureless) FUSE filesystem that gives access to SE site data:
Naturally none of those files actually exist; when
|show 1 more comment|
Unix filesystems are traditionally implemented in the kernel. FUSE allows filesystems to be implemented by a user program.
In-kernel filesystems are better suited for main filesystems for programs and data:
FUSE filesystems have other advantages, mostly revolving around their flexibility:
FUSE isn't really a file system per se but code that allows file systems to be implemented as processes instead of kernel modules.
One of the most useful benefit of FUSE is to allow GPL code to "mix" with non GPL one. For example, Gnu/Linux and ZFS http://zfs-fuse.net/ or NTFS-3G on many OSes like OpenSolaris and *BSD http://www.tuxera.com/community/ntfs-3g-download/
The main drawback is the performance impact compared to native (kernel) drivers.