tags : Filesystems
Intro
- Traditionally filesystems were created as kernel drivers/modules. And as we said..the kernel runs in ring 0 with full access.
- Fuse is a kernel layer that allows the kernel to use filesystem implementions written in userpace. In other words, allows the kernel to redirect filesystem calls to a userspace (ring 3) implementation.
- You can write your whole filesystem as userspace application, register it with the kernel and if a program tries to open a file from your filesystem the kernel asks your implementation to do it.
Pro
- We gain security and make creating filesystems a lot easier.
Con
- Speed. But if making a network file system, we cannot care less, right?
- Fuse filesystems can do much less than filesystems that are kernel modules.
- You cannot do stuff like send commands over the SATA bus to communicate with the HDD directly. FS which are kernel modules are capable of this.
Resources
- https://www.reddit.com/r/linux4noobs/comments/7fm0hi/eli5_what_is_fuse/
- Debugging a FUSE deadlock in the Linux kernel | Hacker News
- Random Fun Fuse FS(s)
- https://github.com/koding/awesome-fuse-fs
- https://github.com/ImJasonH/ghfs
- https://github.com/yarrick/pingfs/
- Database as Filesystem - YouTube
- https://github.com/ChrisRx/dungeonfs
- https://github.com/ufrisk/MemProcFS
- https://en.wikipedia.org/wiki/WikipediaFS
- https://github.com/rasguanabana/ytfs
- https://github.com/oniony/TMSU
- https://github.com/unbit/spockfs
- https://github.com/ianpreston/redditfs
- https://github.com/hausdorff/snapchat-fs
- GitMounter: A FUSE filesystem for Git repositories | Hacker News
- Extra FS tools