Operating System Design/File Sys
From Wikibooks, the open-content textbooks collection
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:
- JFS
- HFS
- File Allocation Table (FAT)
- NTFS
- ext2
- BFS
- ext3
- ReiserFS
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.