/etc/fstab 即文件系统表,用于声明文件系统、交换区域、绑定挂载、网络来源和其他可由系统工具挂载或激活的附加关系。条目可以参与启动流程,但 noauto 等选项、自动挂载集成和服务管理器策略会影响它们何时或是否生效。
文件系统 · 第 7 课
/etc/fstab
学习如何在 `/etc/fstab` 中定义持久的文件系统和交换空间附加关系,并安全验证配置。
六个字段
传统条目包含六个由空白分隔的字段:
UUID=130b882f-7d79-436d-a096-1e594c92bb76 /data ext4 defaults,nosuid,nodev 0 2
- 来源:设备路径、
UUID=、LABEL=、网络来源或其他受支持的说明。 - 目标:挂载点;对于交换空间等合适用途,可以是
none。 - 类型:文件系统类型、
swap、none或受支持的自动类型。 - 选项:由挂载辅助程序和集成层解释的逗号分隔列表。
- Dump 字段:历史上用于控制
dump备份工具;0通常表示不参与。 - Pass 字段:在适用时控制启动期间的
fsck顺序;0表示不通过此机制自动检查。
字段内部的空白必须使用 fstab 语法转义,例如用 \040 表示空格。字段外的 # 表示注释开始。
普通 /etc/fstab 条目包含多少个字段?
稳定的来源标识符
对于本地文件系统,文件系统 UUID 通常比 /dev/sdX 枚举更稳定:
$ lsblk -f
$ sudo blkid
只有确认标识符属于预期文件系统后,才能使用 UUID=...。重新格式化会创建新 UUID,块级克隆则可能复制原有 UUID。PARTUUID= 标识的是分区表条目,语义与之不同。
来源字段中的 UUID=... 通常标识什么?
挂载选项与检查字段
defaults 会展开为实现定义的一组传统选项,并不一定是每个挂载最安全的策略。应根据信任程度和工作负载添加选项,例如只读访问,或限制设备节点和 setuid 行为。网络及可移动文件系统可能需要超时、依赖或容错策略,以免启动意外停滞。
对于 fsck 支持的文件系统,根文件系统传统上使用 pass 1,其他受检查的本地文件系统使用 2。不同文件系统的惯例可能不同,例如某些类型不使用通用的启动期 fsck,因此应遵循已安装文件系统和发行版的文档,而不要机械地填写 2。
第六个字段为 0 时请求什么?
在保留恢复路径的前提下编辑
无效的根目录、启动目录或必要网络条目可能中断启动。编辑前:
- 确认已有当前备份,并具备控制台或救援访问方式。
- 在保留权限的情况下复制现有文件。
- 核实来源身份,并创建预期挂载点。
- 每次只进行一项限定范围的更改。
- 重启前先验证和测试。
不要把凭据直接写进所有用户可读的 fstab 条目。应使用相关挂载辅助程序提供的受保护凭据机制。
为什么更改关键 fstab 条目前应确认救援访问方式?
验证但不预设成功
在支持的系统上,先进行静态检查:
$ sudo findmnt --verify --verbose
然后在受控条件下测试特定新条目,用 findmnt 确认;如果只是临时测试,再卸载它。mount -a 会尝试许多符合条件的条目,可能连接网络或附加非预期来源;它也会跳过已挂载和 noauto 条目,因此既不是无害的语法检查器,也不是完整证明。
在基于 systemd 的系统上,编辑 fstab 后应重新加载管理器配置,使生成的挂载单元得到刷新,再按照本地文档验证依赖和启动行为。
为什么单独使用 mount -a 不能完整验证 fstab?
请在管理 Linux 分区和文件系统实验具备安全恢复条件的辅助存储上练习。
课程已完成
你已完成 /etc/fstab
现在,你可以阅读并验证持久的文件系统表条目。
解析来源、目标、类型、选项、dump 和 pass 字段。
选择经过核实且身份语义符合预期的标识符。
根据实际文件系统选择挂载和检查策略。
保留救援访问方式,并进行单项限定更改。
结合静态验证、定向挂载和启动策略检查。