Operating System Design/File Sys

From Wikibooks, the open-content textbooks collection

Jump to: navigation, search

A file system is a way of organizing information on a physical drive or by another means (e.g. ramfs) for permanent 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 ext2/3 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 and B-trees)
  • large files support - some file systems have 2-4G limit for this. While switching to 64-bits addressing solves the problem.
  • fragmentation - NTFS quickly becomes fragmented
  • fault tolerance - compare e2fsck runs on dirty ext2 vs logging facilities of ext3 or ReiserFS
  • scalability - some file systems have limits on their sizes
  • use of encryption/compression
  • charsets support - for example FAT does not allow to use some symbols in file names while NTFS does.
  • long file names - for example ext2/3 - 255 chars max FAT16 - 8+3 chars max

(incomplete)

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.