Operating System Design/File Sys

A file system is a way of organizing information on a physical drive or other media (e.g, RAM) for access. In general, file systems can be divided into several groups:

  • Local file systems ‒ ext2/3, FAT32, NTFS
  • Distributed file systems ‒ NFS, AFS
  • Parrallel or cluster file systems ‒ GFS, PVFS, Lustre

Some current file systems:

NTFS and FAT are used under Windows, while ext4 and ReiserFS tend to be used by Linux.

A file system may be described by a set of characteristics:

  • Ability to work with huge number of files/directories in a directory (e.g ReiserFS).
  • Large files support ‒ some file systems have 2-4G limit for this. Switching to 64-bits addressing solves the problem.
  • Fragmentation ‒ NTFS quickly becomes fragmented, while ext4 doesn't.
  • Fault tolerance ‒ compare e2fsck runs on dirty ext2 vs logging facilities of ext3 or ReiserFS.
  • Scalability ‒ some file systems have limits on their disk sizes.
  • Use of encryption/compression
  • Charsets support ‒ for example, FAT does not allow use of some symbols in file names, while NTFS does.
  • Long file names ‒ for ext4, 256 chars; FAT16 8+3 chars max

This section discusses the key components to a file system and common problems that an operating system must deal with. It concludes with a discussion about some of the more popular file systems in use today.