Sean Collins

sean [at] seanmcollins [dot] com

GPG Key ID: 0xf60f564978913931

sean [at] coreitpro [dot] com

GPG Key ID: 0xA1D7E590

profile for Sean at Stack Overflow, Q&A for professional and enthusiast programmers

What Is FUSE?

From the FUSE project's website:

With FUSE it is possible to implement a fully functional filesystem in a userspace program.

That definition is very technical. What is userspace and why is it so important? What is a filesystem? What is so special about a filesystem that is in userspace?

By learning about userspace and the kernel, the answers will become quite clear. Most operating systems are designed have two different modes: userspace and the kernel. It’s similar to how you can have a regular user account and then you can have a administrator account. The idea is the same, separate out privileged operations from unprivileged operations. The kernel has access to the underlying hardware and focuses on running the machine, while the userland consists of programs and utilities that users will run.

Filesystems express how data is organized, written, and read from physical devices, which means that they require hardware access and will run in the kernel space.

At least, that was until FUSE came along.

FUSE allows filesystems to reside in the userland along with applications, which allows filesystems to be more abstract than blocks on a hard drive or other physical devices.

You could have a FUSE driver that connects to Wikipedia and organizes all the articles into files and directories and mounts it on your desktop. You can use the FTPFS driver to mount your remote server and edit files directly, instead of having to upload them every time you make a change. The FTPFS driver provides the reading and writing to remote systems abstraction and will handle sending the data to the remote system, saving you time and aggravation.

With FUSE, filesystems become more flexible (by not being tied to physical devices) and can be used to organize data in new and exciting ways.

blog comments powered by Disqus