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.
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
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
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.
- Classic Forth – as close to no file system as you can get
- Digital’s RT-11 – very simple and “flat” file system
- Boston University’s RAX Library – for “timesharing”