Reading — step 1 of 5
Read
~1 min readCrash Safety & Modern FS
Modern File Systems
Beyond the toy:
ext4:
- Linux's most common. Mature, fast, journaled.
- Extents, dir_index, online resize.
- 1 EiB max FS, 16 TiB max file.
- 30+ years of bug fixes.
xfs:
- B-trees for everything. High performance.
- Excellent for large files + many.
- No shrink (only grow).
- Default in RHEL since 7.
btrfs:
- COW, snapshots, RAID 0/1/5/6/10.
- Subvolumes (nested file systems).
- Compression, deduplication.
- Stable for most use; some RAID modes still experimental.
ZFS:
- Originally Solaris (now OpenZFS). Mature.
- Pools (zpool) abstract over devices.
- COW, snapshots, send/receive (incremental backup).
- End-to-end checksums (silent corruption detection).
- ARC (cache) integrated; no double-buffering with kernel.
- ZFS on Linux via OpenZFS project.
APFS (macOS, iOS):
- COW, snapshots, encryption-by-default.
- Optimized for SSDs.
- Fast cloning (clone files = COW reference).
F2FS (Flash-friendly FS):
- Designed for SSD/eMMC characteristics.
- Sequential writes (avoid random in flash).
- Cleaner-friendly: garbage collection of obsolete blocks.
FAT/exFAT:
- Simple. No journaling. Universal compatibility.
- Used in USB drives, SD cards, BIOS-mode boot partitions.
NTFS:
- Windows. Transactional. ACLs.
- Read-only support in Linux is mature; write iffy until ntfs3 (2021).
Network FS:
- NFS (RFC 1813, 5661): standard UNIX network FS.
- SMB/CIFS: Windows network FS.
- 9P: Plan 9; used by some VMs.
- FUSE: user-space FS framework. Implement FS in user space.
Distributed FS:
- CephFS, GlusterFS: scale-out.
- HDFS: Hadoop. Optimized for large block sequential.
- GCS/S3: object stores. Not really FS but increasingly used as one.
Choosing:
- General Linux server: ext4 or xfs.
- Large data + snapshots: btrfs or ZFS.
- macOS: APFS (default).
- Windows: NTFS.
- USB drive: exFAT.
- Embedded SSD: F2FS.
Discussion
Ask a question, share an insight, or help someone who’s stuck.
Sign in to post a comment or reply.
Loading…