3.3 File systems
A file system is a standard of using storage resources, such as those on a hard disk drive, a floppy disk, a
CD/DVD media or a jump drive. Different file systems use storage resources differently, and they are generally
incompatible.
Popular file systems include the following:
- FAT16 (File Allocation Table 16-bit) is one of the oldest file systems that is still in use. It was originally used
by Microsoft/PC DOS (disk operating system). FAT16 can address up to 2GB (two giga bytes) or 4GB. A
major drawback of FAT16 is that it is very wasteful when used on a high capacity device, especially when there
are many smaller files.
- FAT32 (File Allocation Table 32-bit) is a successor of FAT16. it can address up to 2TB (2 tera bytes) using
a small sector size of 512 bytes. A small sector size makes the file system less wasteful. Although FAT32 has
a respectable capacity, it still has some major disadvantages. For example, a FAT32 file system is prone to
fragmentation, and it also loses data when a computer is shut down unexpectedly. Furthermore, a FAT32 file
system also lacks many capabilities of a modern file system.
- NTFS (NT file system) is a file system that was derived for Microsoft Windows NT operating systems. In theory,
NTFS is capable of addressing a huge amount of storage. However, in practice, most versions of Windows limit
the actual capacity to a small fraction. Besides a larger capacity, NTFS is also superior to FAT32 in many
other ways. For example, NTFS supports links to files, access control and many other features of a modern
file system. Some of these features make NTFS more reliable, some of these features make NTFS more secure.
Note that it is still necessary to defragment NTFS manually.
- ISO 9660 (Internation Standard Organization standard 9660) is a specialized file system that was originally
intended for putting files on a CD or DVD medium. A CD or DVD only has one physical track, which makes
it very different from a hard disk drive or a floppy disk. An entire ISO 9660 file system can be considered a
single file. This is why the image of a CD or DVD is called the “iso” file.
- Ext2/3 (extension 2/3) are file systems that trace their roots back to an academic Unix-like operating system,
Minix. While the capacity of Ext2 is no more than 32TB, it is far more space efficient than FAT32 and less
prone to fragmentation problems (no more than 5% without manual intervention). Ext3 is a successor of Ext2.
Amongst the new features is journaling. This features make Ext3 less likely to corrupt when a computer
experiences a power fail. Ext2/3 is the default file system for Linux systems.
- XFS is a file system that was created by Silicon Graphics Incorporated (SGI). It is ported to a number of
operating systems, including Linux. XFS has the same theoretic capacity as NTFS, but it also has additional
features and capabilities intended for high reliability and high performance systems. XFS is often used by Linux
servers.
Needless to say, the file system layer is above device drivers, and in many cases above protocol stacks. Interesting
examples of file systems on top of stacks include any file system on a USB mass storage device, or networked file
systems.
A networked file system, as the name implies, permits files to be accessed remotely. This represents an interesting
example of layering, as a networked file system is typically built on top of the TCP/IP protocol stack, as opposed to a hard
disk controller device driver.
In Windows, SMB (Server Message Block) is the most common type of networked file system. It is also called Windows
share or CIFS (Common Internet File System). While the early versions of SMB was hardly secure and only intended for
LAN (local area network) uses, the current version is considerably more secure.
Many non-Windows OSes support SMB. MacOS X and Linux, for example, have modules to act as SMB clients or servers
(or both at the same time). This makes SMB a fairly universal networked file system.
Unix-like operating systems, however, mostly natively support NFS (Network File System), which was invented by Sun
Microsystem. NFS differs from SMB in several ways. Most notably, NFS preserves user identities across a server and a client.
This makes NFS very suitable for servers that have multiple users.