On the surface your operating system’s file system might just look like a big pile of folders, but surely there is more to it than that. Read on as we investigate what lies beneath the surface of the file system.
Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.
SuperUser reader P_Q is curious about file systems, he writes:
I have used Windows since childhood, and when I hear the phrase “Windows files system” I think of directories (folders) within directories, a folder called SYSTEM, a folder called PROGRAM FILES, etc. Is this what the system is? Just the layout of the folders?
And then I recently started using Linux, and my reference book says in the Linux filesystem everything starts at root and branches off from there. How is that really different from Windows? I mean, it seems the Linux system and the Windows system are just two ways of setting up a directory tree. Is this what file system means?
Is this simple take on the file system the most accurate way of describing it? Let’s dig a little deeper.
SuperUser contributor Tom Wijsman offers an insightful look at the structure of file systems both within Windows and Linux operating systems. He writes:
Just the layout of the folders?
Sounds too good to be true…
Let’s take the FAT32 file system as an example. I can install Windows XP on it, but I can also use it on a memory card. On a memory card, you don’t have those folders that you sum up.
So… Don’t confuse the directory layout of a family of operating systems with a file system.
Is this what a file system means?
No… It refers to the underlying bits and bytes that make your directory structure work.
The underlying bits and bytes? Show me FAT32!
Let’s look at what FAT32 looks like, it has:
- Some header sectors in the beginning, like Volume ID and Reserved Sectors
- Two File Allocation Tables, allowing us to figure out where our files are.
- Clusters containing all our directory and file data.
- Some very small unused space that we can’t use.
A FAT table consists of a lot of entries that look like this, allowing us to determine where the directory or file is stored in the clusters space, as well as some attributes and size.
A directory entry would point to a list of directory/file entries…
In the clusters space, we can now travel our clusters to find the data we need. A cluster essentially contains data and information where the next fragments are
Do other file systems differ? Show me NTFS!
I’m going to show you an image so you can notice the differences, the rest is homework for the reader: More information can be found on this blog archive or Google.
The main idea is that NTFS is a huge improvement over FAT32 that is more robust/efficient. Having a better idea of (un)used space by using a bitmap to further help against fragmentation. And so on…
What about the file systems on Linux? Show me ext2/3!
The idea is that ext2/ext3 use super blocks and inodes; this allows for soft and hardlinks, directories that are files, files with multiple names and so on. The main gist is abstracting away to allow the file system to be capable of doing more meta-ish stuff…
For more reading on file systems, make sure to check out the following How-To Geek articles:
- HTG Explains: The Linux Directory Structure Explained
- HTG Explains: Which Linux File System Should You Choose?
- What File System Should I Use for My USB Drive?
Have something to add to the explanation? Sound off in the the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.