I had always assumed that the directories and files that we browse with nautilus were structured directly in btrfs. Recently in the past couple of years I had noticed some discussion around fuse and wondered how that fit in. Today as I read some about fuse at the kernel website. I came away with the impression that fuse under the auspices of systemd is what creates the structure for directories and files at least for user space.
Can someone please recommend where I can read something that will give me an overview of the various software entities, their hierarchy (if any) and and what they do to create and maintain the directories and files that users see in nautilus? I would also like to learn if system space is handled differently.
Thanks in advance for your help on this.
Have a Great Day!
File system structure is really simple to understand.
Everything is a file.
A directory is a file that contains information about the files within that directory, thus its structure is specific to its usage, but it is still a file to the system.
The nuts and bolts that the user never sees may be different, such as the file system formatting, but the user side is the same regardless of the file system type used.
The underlying formatting of the file system, whether its type is btrfs, ext4, lvm, xfs, or something else, does not change how the OS sees and accesses the actual data within that file system.
Fuse is at a much lower level than userspace (closer to the kernel) so the ones concerned with its details are the developers (mainly kernel developers) and not the users. Are you really that interested in the detail at that level? If so then I suggest studying programming at the kernel and kernel module level. Otherwise it is an abstract that does what is needed and its details can be treated as a black box.
The source for the kernel and all things linux are FOSS so you can obtain the source and read it to understand the concepts.
Mostly file systems are implemented as kernel modules, but with FUSE you can create file systems implemented in user space. For example, before the exfat file system became available as a kernel module, you would need to use FUSE to access exfat file systems.
With FUSE you can also access for example a zip file as if it were a normal file system, which means that each file in the zip file looks like a regular file. You can also mount a ssh server as a file system and each file on the ssh server shouws up as normal files in your local system. The memory of some camaras is accessed using a FUSE file system, and the same with Android devices.
For a start you can go to http://fuse.sf.net.
Scroll down and you will see the README file, which, as the name sugests, you should read.