fstab 决定开机挂什么
/etc/fstab 是开机挂载的声明文件,六个字段依次是设备、挂载点、文件系统类型、挂载选项、dump 标记与 fsck 顺序。内核之外,systemd 会把它翻译成挂载单元并在启动时执行,所以写错一行不只是挂不上盘,可能直接让系统掉进紧急模式。用 UUID 代替裸设备名、改完先演练,是两条最基本的自保措施。
基本信息
| 文件位置 | /etc/fstab |
|---|---|
| 字段顺序 | 设备 挂载点 类型 选项 dump pass |
| 推荐写法 | UUID=xxxx 替代 /dev/sdX(换盘或加盘后设备名可能变化) |
| 常用选项 | defaults、noatime、nofail、x-systemd.automount |
| 演练命令 | mount -a(只挂 fstab 里未挂载的条目) |
| 权限要求 | root;修改前建议备份原文件 |
典型使用场景
- 新增数据盘后配置开机自动挂载
- 把裸设备名改为 UUID,避免磁盘顺序变化导致挂错盘
- 数据盘加 nofail,防止单盘故障阻止系统启动
- 网络存储(NFS)配置自动挂载并允许启动时不可达
- 迁移后核对挂载点与选项是否与原系统一致
配置与演练
配置与演练
cp /etc/fstab /etc/fstab.bak.$(date +%F) # 改前备份,出问题能立刻还原
blkid /dev/vg0/data # 取到 UUID 与文件系统类型
echo 'UUID=xxxx-xxxx /data xfs defaults,noatime,nofail 0 0' >> /etc/fstab
findmnt --verify --verbose # 官方提供的 fstab 校验工具,先看有没有语法问题
mount -a && df -h /data # 演练挂载并确认结果
systemctl daemon-reload # 需要让 systemd 重新读取单元时执行临时挂载与排错
临时挂载与排错
mkdir -p /data # 挂载点目录必须先存在
mount -o ro /dev/vg0/data /mnt/tmp # 只读方式验证设备本身可挂载
systemctl list-units --type=mount --all | head # 查看 systemd 生成的挂载单元
journalctl -b -u local-fs.target | tail # 开机挂载失败时看这里的日志
umount /data && mount /data # 改选项后重新挂载验证字段逐列读法
| 字段 | 含义 | 写法与注意 |
|---|---|---|
| 设备 | 分区、UUID 或网络路径 | 优先 UUID;NFS 写 server:/path |
| 挂载点 | 目录,必须已存在 | 路径含空格需转义,避免用非常规路径 |
| 类型 | xfs、ext4、nfs 等 | 写错会报 unknown filesystem type |
| 选项 | defaults、noatime、nofail 等 | 数据盘建议加 nofail,系统盘不要加 |
| dump | 备份标记,现代系统基本为 0 | 保持 0,非 0 且无 dump 服务无意义 |
| pass | fsck 顺序,根分区一般 1,其余 2 | 非根分区写 0 表示开机不检查 |
fstab 写错会让系统进入紧急模式并要求输入 root 口令:改动前备份、改完用 findmnt --verify 与 mount -a 验证,并在本地控制台可及的维护窗口操作。
NFS 条目建议加 nofail 与 _netdev,让挂载依赖网络就绪;否则网络服务尚未起来时就尝试挂载,启动日志里会出现一连串超时。