Notes on File Systems

This is a collection of notes intended to introduce the fundamentals of file systems. This section summarizes the challenges of using hard drives and the general objectives of file systems. Subsections introduce simple file systems that are for the most part obsolete today.

Storage Challenges and File System Objectives

Three Challenges

When faced with a large expanse of storage space, whether solid state on a USB stick or on a hard drive, one has three problems:

How to store distinct groups of data in a unified manner – these are usually called files

How to find files – this usually leads to directories, or folders as they are called in graphical interfaces

How to manage the free space on the hard drive – avoid losing space to fragmentation or errors

Five Objectives

Over the decades, different file systems have produced different solutions to these problems. Usually the differences can be traced back to the following, sometimes mutually exclusive, objectives:

Easy to implement

FAST, FAST, FAST

Direct access versus sequential access of data in files

Support for hard drives of a particular maximum size

Robustness

As hard drives have grown in capacity, file systems have grown in complexity. Still, the systems’ weird features usually trace their origins back to the problems being solved or the particular objectives being pursued.

If we look back into ancient history, when semi-trailor-sized behemoths were being out-evolved by refrigerator-sized creatures in university computer labs, we find many comprehensible file systems.