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:
- File Allocation Table (FAT)
- NTFS
- ext4
- JFS
- BFS
- HFS
- ReiserFS
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.