Linux 支持许多文件系统实现,它们的磁盘格式、网络协议、一致性模型、功能和运维工具各不相同。合适的选择取决于发行版支持、工作负载、恢复要求、存储拓扑和管理员经验。
文件系统 · 第 2 课
文件系统类型
了解 Linux VFS 如何通过统一接口呈现本地、网络和虚拟文件系统。
虚拟文件系统层
内核的虚拟文件系统层(Virtual Filesystem,VFS)提供打开、读取、写入、重命名和权限检查等通用操作。各文件系统实现再把这些操作连接到自己的数据结构和后端存储。
因此,一个进程可以通过统一的路径名和文件描述符模型访问 ext4、XFS、NFS、tmpfs 和 procfs。这并不会让所有文件系统的功能或行为完全一致;大小写敏感性、锁定、权限、重命名保证、扩展属性和错误处理都可能不同。
Linux VFS 的主要作用是什么?
日志与崩溃一致性
日志文件系统会把选定的更新记录到日志中,以便在崩溃后重放或丢弃未完成的事务。日志的主要用途,是比完整扫描更快地恢复文件系统结构的一致性。
它并不保证最新的应用数据一定保留下来、多文件应用事务一定有效,或存储硬件确实完成了所有已确认写入。文件系统提供不同的数据模式和顺序保证,而应用程序必须采用适当的刷新和原子更新方式。日志不是备份,无法防止删除、恶意软件或设备故障。
文件系统日志主要帮助在崩溃后恢复什么?
常见本地文件系统
- ext4 是成熟的日志文件系统,得到 Linux 发行版和恢复工具的广泛支持。
- XFS 是可扩展的日志文件系统,常用于大型文件系统和并行 I/O 工作负载。
- Btrfs 是写时复制文件系统,提供校验和、子卷、快照和集成式多设备功能。
各项功能必须结合运维环境理解。Btrfs 快照最初与源数据共享存储;如果仍位于同一块可能故障的设备上,它并不是独立备份。XFS 和 ext4 的扩容、缩容、修复和调优能力也不同。选择或更改根文件系统前,应确认已安装内核、启动环境和恢复工具对它的支持。
为什么同一设备上的 Btrfs 快照不是完整备份?
互操作、网络与虚拟文件系统
Linux 可以挂载 FAT 变体、exFAT 和 NTFS 等互操作格式,但它们的 Unix 所有权、权限、链接和文件名语义各不相同。Linux 如何呈现这些格式缺少的功能,取决于挂载选项和驱动程序实现。
NFS 和 SMB 等网络文件系统依赖服务器和网络协议,并拥有各自的缓存与身份规则。tmpfs、procfs 和 sysfs 等虚拟文件系统不使用普通的持久磁盘格式:tmpfs 在内存后端页面中保存易失数据,procfs 和 sysfs 则公开内核接口。
哪个描述最符合 procfs?
发现活动类型
使用以下命令显示已挂载文件系统的类型:
$ findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS
其他视图包括:用 df -T 查看已挂载空间统计,用 lsblk -f 查看块设备和检测到的文件系统签名,以及用 /proc/filesystems 查看运行中内核支持或已知的类型。这些视图回答的是不同问题;未挂载的文件系统不会出现在普通的已挂载文件系统列表中。
本课所示的哪个命令会直接列出挂载目标、来源、类型和选项?
可以在管理 Linux 分区和文件系统实验的可丢弃存储上比较不同类型、挂载选项和发现视图。
课程已完成
你已完成 文件系统类型
现在,你可以比较不同文件系统类别,而不会假定它们具有完全相同的语义。
理解 VFS 如何为不同实现提供通用操作。
把日志视为崩溃一致性支持,而不是备份。
根据支持的操作和工作负载比较 ext4、XFS 与 Btrfs。
区分本地磁盘、网络、互操作和虚拟文件系统。
使用挂载工具和块设备工具回答不同的清单问题。