首页/系统/Linux 运维命令速查//etc/fstab 开机自动挂载配置
磁盘与文件系统51 条

/etc/fstab 开机自动挂载配置

fstab 定义系统启动时如何挂载各文件系统:设备、挂载点、类型、选项、dump、pass 六列;写错轻则报警重则进不了系统。

Linux 运维命令速查系统更新于 2026-10-13

fstab 是什么

/etc/fstab 声明系统启动时如何挂载各个文件系统,每行六个字段:设备标识、挂载点、文件系统类型、挂载选项、dump 备份标记、fsck 检查顺序。在 systemd 系统上,它由 systemd-fstab-generator 在启动早期转换成对应的 mount 单元,因此改完 fstab 需要 daemon-reload 才会被重新读取。这个文件写错的代价很高:轻则某个盘没挂上,重则开机等待超时甚至进入紧急模式。

基本信息

适用平台Linux 全发行版(util-linux 与 systemd 配合解析)
字段格式设备标识 挂载点 类型 选项 dump pass
设备标识写法UUID=... 首选;LABEL=... 次之;/dev/... 设备名不推荐,顺序可能漂移
常用选项defaults、ro、noatime、nosuid、nodev、noexec、nofail、_netdev、x-systemd.device-timeout、x-systemd.automount
验证手段findmnt --verify 语法校验、mount -a 按 fstab 全量挂载并报错、lsblk -f 或 blkid 获取 UUID

典型使用场景

  • 新增数据盘:格式化后写入 fstab,保证重启后自动挂载
  • 挂载网络存储:NFS 与 CIFS 共享写进 fstab,配合 _netdev 与 nofail 控制启动行为
  • 在线调整挂载参数:把 noatime 加入条目,减少元数据写入
  • 非关键设备容错:移动盘、外接备份盘加 nofail,避免设备不在时无法开机
  • 交换分区声明:把 swap 分区或 swap 文件写进 fstab 供开机启用
  • 变更前备份:修改前复制一份带日期的备份,出问题能快速回滚

典型条目

典型条目
UUID=5f3a... /data xfs defaults,noatime 0 2
/dev/vg0/swap none swap sw 0 0
10.0.0.5:/export /mnt/nfs nfs defaults,_netdev,nofail 0 0
//10.0.0.6/share /mnt/smb cifs credentials=/etc/smb.cred,_netdev,nofail 0 0
UUID=abcd... /backup ext4 defaults,nofail,x-systemd.device-timeout=10 0 2

改完必须验证

改完必须验证
cp /etc/fstab /etc/fstab.bak.$(date +%F)
vim /etc/fstab
findmnt --verify -F /etc/fstab   # 语法与可挂载性检查
mount -a                         # 实跑一遍,有错立刻报出来
systemctl daemon-reload          # systemd 系统上让挂载单元重新生成
findmnt /data                    # 确认挂载结果与参数
blkid /dev/sdb1                  # 核对 UUID 是否写对

六字段逐一说明

字段含义注意
设备标识UUID、LABEL 或设备路径优先 UUID,设备名可能漂移
挂载点目录路径,必须已存在目录不存在会挂载失败,需先创建
类型ext4、xfs、nfs、cifs、swap 等写错会报 unknown filesystem type
选项逗号分隔的挂载参数网络存储记得加 _netdev 与 nofail
dump老旧备份工具的标记,现代系统几乎不用一般写 0
passfsck 检查顺序:根分区通常 1,其余数据盘 2,不检查写 0多个 1 会按顺序排队,写错会拖慢启动
nofail 与 _netdev 是两条最实用的防呆设置:nofail 让设备不存在时不阻塞启动,_netdev 让 systemd 等网络就绪后再挂载。外接盘、备份盘与网络存储都应带上它们,避免一台设备的缺席拖垮整机启动。反过来也要清楚 nofail 会让设备故障时的挂载失败被静默忽略,关键数据盘不该加它,否则应用启动后才发现目录是空的。
systemd 还允许在挂载选项里写 x-systemd.* 参数,例如 x-systemd.device-timeout=10 控制等待设备超时,x-systemd.automount 实现访问时才挂载。这些是 systemd 扩展,只在 systemd 发行版上生效,与基础挂载选项写在一起时要注释清楚用途。
修改 fstab 后不验证就重启是最常见的翻车方式,后果往往是开机进入紧急模式并需要控制台介入。规范做法是改前备份、用 findmnt --verify 查语法、用 mount -a 实跑,确认无报错后再安排重启验证,并保留带外访问手段。
排错提示:类型字段写错会报 unknown filesystem type,UUID 写错会报 can't find UUID=,报错文本不同,可以直接定位到出问题的字段。启动时卡在等待某个设备的提示,通常是设备未就绪或根本不存在,用 x-systemd.device-timeout 设置等待上限、用 nofail 让缺失设备不阻塞启动,是最实用的两道保险。
条目定位优先用 UUID 或 LABEL 而不是设备名:设备名会随插拔顺序与虚拟化环境变化,UUID 由文件系统自身记录,稳定得多,内容可用 lsblk -f 直接查到。重建文件系统会生成新的 UUID,届时必须同步更新条目,否则重启即挂载失败。

易错点

  • 改完不跑 findmnt --verify 与 mount -a 验证,重启后进入紧急模式需要控制台救场
  • 挂载选项误写到 dump 或 pass 列,条目不报错但功能静默失效
  • pass 列写错导致 fsck 顺序异常,多个分区写 1 会串行检查并拖慢启动
  • 网络存储不加 _netdev 与 nofail,网络未就绪时挂载失败并可能让启动长时间等待
  • 挂载点目录不存在就直接写 fstab,重启时挂载失败;写入前应先创建目录并确认它未被其他数据占用
  • 把 nofail 当成解决办法:它只让挂载失败不阻塞启动,盘照样没挂上,业务仍会失败,正确做法是修掉根因并配套告警

数据来源与参考

  • man 5 fstab
  • man 8 mount

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌