Linux mount 与 fstab 的正确使用方式

9次阅读

mount是临时挂载,重启即失效;fstab是开机自动挂载配置,需将UUID、正确文件系统类型、挂载点及安全选项(如noatime,uid,gid)写入并用mount -a验证。

Linux mount 与 fstab 的正确使用方式

mount 是临时挂载,fstab 是开机自动挂载

你执行 mount /dev/sdb1 /mnt/usb,设备就挂上了——但只要重启,它就消失。而 /etc/fstab 是系统启动时读取的“挂载清单”,只有写进这里,设备才会每次开机自动就位。

关键区别在于生命周期:mount 是运行时操作,fstab 是声明式配置。两者不是替代关系,而是协作关系——你常先用 mount 测试挂载是否成功,再把参数抄进 fstab。

  • 手动挂载失败?先检查设备是否存在:lsblkblkid
  • fstab 配错导致无法开机?别慌,进 recovery 模式用 mount -o remount,rw / 重新挂载根分区再编辑
  • 修改 fstab 前务必备份:sudo cp /etc/fstab /etc/fstab.bak

fstab 第一字段必须用 UUID,别碰 /dev/sdX

设备路径如 /dev/sda1 在多硬盘、热插拔或内核加载顺序变化时极易错位——今天是 sda1,明天可能变 sdb1。UUID 才是真正稳定的设备身份证。

查 UUID 很简单:sudo blkid,输出里找你要的分区,复制那一长串 UUID="..."。fstab 中就写成:UUID=1234abcd-5678-ef90-1234-567890abcdef

  • NTFS 分区推荐用 ntfs3linux 5.15+ 内置)而非 ntfs-3g,性能更好、无需额外安装
  • vfat/U 盘记得加 uid=1000,gid=1000,umask=022,否则普通用户看不到文件或无法写入
  • 挂载点目录(第二字段)必须提前创建,且不能是其他文件系统的挂载点

mount -a 是 fstab 的“试运行”命令

改完 fstab 后别直接重启,先跑一遍 sudo mount -a。它会按 fstab 逐行尝试挂载,出错立刻报错(比如设备不存在、类型写错、目录没建),方便当场修正。

常见错误信息直译:

  • mount: /mnt/data: wrong fs typeType 字段填错了,比如把 ntfs 写成 ntfs-3g(新内核应写 ntfs3
  • mount: /mnt/data: failed to setup loop device → 挂载点目录不存在,或权限不对(需 root 可写)
  • 无报错但没挂上?检查第六字段 fsck 是否为 0(NTFS/vfat 必须是 0,否则 mount -a 会跳过)

挂载选项 defaults 不万能,ro/rw 和 noatime 得手动加

defaults 看似省事,实际等价于 rw,suid,dev,exec,auto,nouser,async——对 U 盘或 NTFS 盘来说,exec 允许执行程序可能有安全风险,suid 更是多余甚至危险。

更稳妥的组合:

  • U 盘/移动硬盘noatime,uid=1000,gid=1000,umask=002(禁访问时间更新 + 普通用户可读写)
  • 只读光盘或备份盘:ro,noatime(防止误写 + 提升性能)
  • SSD 上的 ext4 分区:noatime,discard(减少写入 + 支持 TRIM)

注意:errors=remount-ro机械硬盘很有用,万一文件系统出错,自动切只读保数据;但 SSD 或只读设备上没必要加。

最易被忽略的一点:fstab 里任何一行末尾多一个空格、少一个制表符、注释没用 # 开头,都可能导致整行失效甚至系统卡在启动界面。写完务必用 sudo findmnt --verify(若支持)或至少 sudo mount -a 验证。

text=ZqhQzanResources