4、mount命令基础:mount命令语法、常用选项、查看当前挂载状态、卸载文件系统

说到挂载,我估计不少新手第一反应就是「mount 后面跟个设备路径就完事了」。嗯,确实能挂上,但真要排查启动阶段的依赖错误,光会敲个 mount 可不够。你得把它的脾气摸透。

mount 命令,说白了就是让内核把存储设备上的文件系统「贴」到目录树上的某个位置。这个位置我们叫挂载点。挂载之后,你访问这个目录,实际上就是在访问那块设备上的数据。

4.1 命令语法与常用选项

基本语法长这样:

mount [-t 文件系统类型] [-o 挂载选项] 设备路径 挂载点目录

我个人习惯,写脚本的时候一定会把 -t 和 -o 写全。为什么?因为少写一个选项,系统启动时可能就卡在那了。

常用选项我列个表,你对照着看:

选项 含义 我踩过的坑
-t 指定文件系统类型(ext4、xfs、nfs 等) 不指定时内核会自动检测,但偶尔会猜错
-o rw 以读写方式挂载 默认就是 rw,但某些场景下需要显式指定
-o ro 以只读方式挂载 排查根文件系统损坏时常用
-o loop 挂载镜像文件(如 ISO) 我曾经忘了加这个,折腾了半小时
-o noexec 禁止在该分区执行二进制文件 安全加固时必加,但别用在 /tmp 上
-o nosuid 忽略 suid 和 sgid 位 挂载 U 盘时我建议加上
-o defaults 使用默认选项(rw, suid, dev, exec, auto, nouser, async) 大多数场景够用,但别指望它万能
小技巧: 如果你不确定设备是什么文件系统,先跑 blkid /dev/sdb1 看一眼。我每次排查挂载失败,第一步就是看 blkid 的输出。

4.2 查看当前挂载状态

系统当前挂载了哪些设备?用 mount 不带参数就能看到。但输出内容太多,我一般用 mount | grep 过滤。

举个例子:

mount | grep sda
# 输出类似:
# /dev/sda2 on / type ext4 (rw,relatime)
# /dev/sda1 on /boot type ext4 (rw,relatime)

每一列的含义:设备 -> 挂载点 -> 文件系统类型 -> 挂载选项。

还有两个命令我经常用:

  • df -h —— 看磁盘空间使用情况,顺便确认挂载点
  • findmnt —— 树形结构展示挂载关系,排查依赖时特别好用

我记得有一次排查启动卡住,就是靠 findmnt -D 发现某个挂载点依赖了一个还没就绪的网络设备。嗯,这种问题光看 mount 输出是看不出来的。

4.3 卸载文件系统

卸载用 umount 命令。注意拼写,是 umount 不是 unmount。我见过不少同事敲错了然后一脸懵。

umount /mnt/data
# 或者
umount /dev/sdb1

卸载时最常遇到的错误是 target is busy。为什么会这样?因为有进程正在使用这个挂载点下的文件。

排查方法:

lsof /mnt/data
# 或者
fuser -v /mnt/data

找到占用进程后,kill 掉或者等它结束,再卸载。

警告: 千万别在系统启动脚本里用 umount -l(懒惰卸载)。我曾经图省事这么干过,结果数据写到一半被强制断开,文件系统直接损坏。启动阶段的数据完整性比什么都重要。

4.4 实战:挂载一个 U 盘并排查常见问题

假设你插了一个 U 盘,设备是 /dev/sdc1:

# 1. 先看看设备信息
blkid /dev/sdc1

# 2. 创建挂载点
mkdir -p /mnt/usb

# 3. 挂载
mount -t vfat /dev/sdc1 /mnt/usb -o rw,noexec,nosuid

# 4. 验证
mount | grep sdc1
df -h | grep sdc1

如果挂载失败,常见原因:

  • 文件系统类型不对 —— 用 -t auto 让内核自动检测
  • 设备被占用 —— 检查是否有其他挂载点
  • 文件系统损坏 —— 先跑 fsck /dev/sdc1
核心要点: 启动阶段的挂载,本质上就是按 /etc/fstab 里的配置逐条执行 mount 命令。你理解了 mount 的每个选项,就能读懂 fstab 的每一行。排查依赖错误时,80% 的问题都出在选项写错或设备路径不对上。

4.5 本章知识结构图

mount 命令 命令语法 mount -t 类型 -o 选项 设备路径 挂载点 常用选项 -t -o rw/ro -o loop -o noexec -o nosuid 查看挂载状态 mount / df -h findmnt / blkid 卸载文件系统 umount 挂载点 lsof / fuser 排查占用 常见错误与排查 类型不对 | 设备占用 | 文件系统损坏

这张图把 mount 命令的核心脉络串起来了。你从上往下看:先掌握语法,再熟悉选项,然后学会查看状态和卸载,最后能处理常见错误。启动阶段的挂载依赖排查,本质上就是在这几个环节里来回检查。

我的建议: 找一台测试机,把 U 盘插上,反复练习挂载、卸载、查看状态。遇到报错别慌,用 dmesg | tail 看内核日志,往往能直接告诉你原因。我曾经在客户现场,就是靠 dmesg 发现是 USB 控制器驱动没加载,而不是 mount 命令本身的问题。

可可精品资料库