Linux 文件系统是一套管理数据存储与读取的规则和结构,它决定了:
数据如何被组织(文件、目录)
数据存在磁盘的哪个位置
如何高效地访问和修改数据
类比理解:
想象一个图书馆——如果没有分类、编号、书架标签,找一本书将极其困难。
文件系统就是这个“图书管理系统”,让计算机能快速找到你需要的任何文件。
在 Linux 中,一切皆文件(包括设备、进程、网络接口),因此文件系统是整个操作系统的核心基础。
Linux 文件系统由三个关键层组成,协同工作:
Logical File System
作用:为应用程序提供统一接口(如 open()、read()、write())
用户视角:你看到的 /home/user/file.txt 就来自这一层
特点:屏蔽底层细节,让程序无需关心数据实际如何存储
VFS, Virtual File System
作用:抽象层,支持多种物理文件系统(ext4、XFS、NTFS 等)共存
核心功能:
统一调用接口
自动识别不同分区的文件系统类型
实现“挂载”(mount)机制
意义:无论你用 ext4 还是 XFS,ls /mnt/data 的用法完全一样
Physical File System
作用:直接操作磁盘块,管理实际数据存储
职责:
分配磁盘空间
管理 inode 和数据块
处理日志
与硬件驱动交互
代表:ext4、XFS、btrfs 等具体实现
总结:应用程序 → 逻辑层 → VFS → 物理文件系统 → 磁盘
作用:防止系统崩溃导致文件系统损坏
原理:先将“即将做的操作”写入日志,再执行到磁盘,最后标记完成
三种模式:
大多数现代文件系统(如 ext4、XFS)默认使用 Ordered 模式
每个文件 / 目录都有唯一 inode 号
存储元数据(不包含文件名!)
文件名只存在于其所在目录的“目录项”中
查看 inode:ls -i filename
有趣现象:硬链接(hard link)共享同一个 inode,因此删除原文件不影响硬链接
自动保存文件历史版本(如每小时备份一次)
注意:ext4/XFS 不支持,需用 btrfs、ZFS 或外部工具(如 rsnapshot)
关键能力对比:
压缩:btrfs、bcachefs 支持;ext4/XFS 不支持(需用 f2fs 或 ZFS)
校验和:btrfs 全面支持;ext4 仅元数据部分支持
在线扩容:ext4、XFS、btrfs 均支持
加密:ext4(实验性)、bcachefs(原生)
尽管 btrfs 和 XFS 功能更强大,但 ext4 依然是大多数发行版(如 Ubuntu、Debian)的默认文件系统,原因如下:
极度稳定:经过 15+ 年生产环境验证
向后兼容:可直接从 ext2/ext3 升级
恢复工具成熟:fsck 可靠,数据救援方案完善
性能均衡:日常使用足够快,无明显短板
社区支持广:文档、教程、问题解决方案丰富
btrfs 警告:虽然功能先进,但在某些场景(如数据库负载)仍可能有稳定性风险,不建议新手在重要系统上使用
# 查看所有挂载点及类型
df -T
# 查看根分区详细信息
lsblk -f
# 查看特定分区的文件系统
sudo file -s /dev/sda1
# 查看内核支持的文件系统
cat /proc/filesystems