mount 是什么
Linux 把全部存储组织成一棵以 / 为根的目录树,mount 的作用就是把某个文件系统接到树上的某个目录。挂载点上的原有内容不会消失,只是被新文件系统临时遮蔽,卸载后重新可见。可挂载的对象不限于块设备,还包括网络共享(NFS、CIFS)、镜像文件(loop 设备)、以及 /proc、/sys 这类伪文件系统。线上调整挂载参数用 -o remount,可以在服务不中断的前提下改成只读或加上 noatime。
基本信息
| 适用平台 | Linux(util-linux 的 mount);macOS/BSD 的语法与选项差异较大 |
|---|---|
| 命令语法 | mount [-t 类型] [-o 选项] 设备 挂载点;只执行 mount 不带参数则列出当前挂载 |
| 常用挂载选项 | ro 只读、rw 读写、noatime 不更新访问时间、nosuid 忽略 setuid 位、nodev 不解释设备文件、noexec 禁止执行、nofail 挂载失败不阻塞启动、_netdev 标记为网络设备 |
| 查看与验证 | findmnt 按树形或指定挂载点查看、lsblk -f 看设备与文件系统、mount -a 按 fstab 全量挂载并验证语法 |
| 权限要求 | 挂载与卸载需要 root(或 CAP_SYS_ADMIN);普通用户挂载移动盘通常由 udisks 之类的服务代理完成 |
| 相关文件 | /etc/fstab 声明开机挂载;/proc/self/mounts 是内核的实时挂载表,现代系统里 /etc/mtab 通常是指向它的符号链接 |
典型使用场景
- 新盘上线:分区格式化后挂载到业务目录,写进 fstab 完成持久化
- 在线调整参数:remount 加 noatime 减少元数据写入,或临时改成 ro 冻结数据后再做备份
- 救援与取证:以 -o ro 只读挂载受损文件系统,避免写入破坏现场
- 镜像与安装介质:-o loop 把 ISO 或磁盘镜像当作目录访问
- 网络存储接入:挂载 NFS、CIFS 共享给应用使用,配合 _netdev 与 nofail 控制启动行为
- 排查占用:findmnt 确认挂载点与参数,用 lsof、fuser 找出占用导致卸载失败的原因
常用示例
常用示例
mount /dev/sdb1 /data # 基本挂载
mount -o ro /dev/sdb1 /mnt/rescue # 只读挂载做救援
mount -o remount,noatime / # 在线调整参数
lsblk -f /dev/sdb1 # 先确认设备与文件系统类型
mount -t nfs 10.0.0.5:/export /mnt/nfs # 挂 NFS 共享
mount -o loop /root/disk.img /mnt/img # 挂载镜像文件
mount -a # 按 fstab 校验并补齐挂载
findmnt /data # 查看某个挂载点的详情
findmnt --verify --verbose # 校验 fstab 是否有语法问题常用挂载选项
| 选项 | 作用 | 适用场景 |
|---|---|---|
| ro / rw | 只读或读写挂载 | 数据救援、加挂只读备份盘 |
| noatime | 不更新文件的访问时间 | 减少元数据写入,对高频读取的目录收益明显 |
| nosuid / nodev / noexec | 忽略 setuid 位、不解释设备文件、禁止执行程序 | 挂载外部与用户可写介质时的加固组合 |
| nofail | 设备不存在时不让启动失败 | 可插拔盘与备份盘用,避免开不了机 |
| _netdev | 标记为网络设备,等网络就绪后再挂载 | NFS、CIFS 必加,否则开机可能卡住 |
| defaults | 使用内核默认组合(rw、suid、dev、exec、auto、nouser、async) | fstab 里写得最省事又不改变行为 |
fstab 每行六个字段:设备(推荐写 UUID=)、挂载点、文件系统类型、挂载选项、dump 备份标记、fsck 检查顺序。第五第六列写错不会立即报错但功能失效,例如把挂载选项误写到第六列,系统会忽略这行配置。改完一律用 findmnt --verify 与 mount -a 验证,不要留到重启时才发现。
设备名(/dev/sdb1)在插拔顺序变化或云主机热挂盘后可能漂移,fstab 里统一使用 UUID(用 lsblk -f 查看)或文件系统的 LABEL,避免重启后挂错盘甚至挂错分区。
卸载失败的典型原因是仍有进程占用:用 fuser -vm 挂载点 或 lsof +D 挂载点 找出占用者,先停掉再卸载。NFS 服务端失联时 umount 可能长时间挂住,可用 umount -f 强制,或 -l 惰性卸载先把目录从树里摘掉、等引用释放后再清理。