Torvalds: User-Space File-Systems, Toys, Misguided People
Yesterday I mentioned what Anton Altaparmakov of Tuxera had recently said about their NTFS kernel driver being the fastest Linux file-system, which erupted into a large debate in our forums. Within that mailing list thread was also another interesting comment by Linus Torvalds. "Userspace filesystem? The problem is right there. Always has been. People who think that userspace filesystems are realistic for anything but toys are just misguided."
Torvalds additionally added, "fuse works fine if the thing being exported is some random low-use interface to a fundamentally slow device. But for something like your root filesystem? Nope. Not going to happen. So Andrew, I think that arguing that something _can_ be done with fuse, and thus _should_ be done with fuse is just ridiculous. That's like saying you should do a microkernel - it may sound nice on paper, but it's a damn stupid idea for people who care more about some idea than they care about reality."
Jeff Darcy of CloudFS, noticed the comments by Linus and has blogged a dissenting opinion. CloudFS is related to GlusterFS, which is FUSE-based and Jeff also cites PVFS2 as being another "good" user-space file-system. Linus hadn't elaborated on his distaste for user-space file-systems, but it's likely due to the associated overhead in placing a file-system in user-space rather than the Linux kernel and the performance penalties that can be potentially caused.
Jeff does admit though that a lot of user-space file-systems really are just toys. "FUSE has definitely made it easier to write filesystems, and a lot of tyros have made toys with it, but it’s also possible for serious people to make serious filesystems with it. Remember, a lot of people once thought Linux and the machines it ran on were toys. Many still are, even literally. I always thought that broadening the community and encouraging experimentation were supposed to be good things, without which Linux itself wouldn’t have succeeded. Apparently I’m misguided."
Some of the other well known FUSE-based file-systems include ZFS and NTFS implementations, but there's more than three dozen other user-space file-systems too, as shown on this FUSE SourceForge Wiki page. Proponents of FUSE like it for making these user-space file-systems more portable between operating systems, its simpler API, and simple enablement. FUSE is supported under Linux, FreeBSD/NetBSD, OpenSolaris, and Mac OS X.