Linux目录挂载与卸载:mount/umount实战指南

2026-09-04 13:06:42 6 次阅读

Linux 的目录挂载,本质上是把一个文件系统接入当前系统的目录树。磁盘分区、U 盘、移动硬盘、网络文件系统以及虚拟文件系统,都可能需要通过挂载才能正常访问。掌握 mountumount 的使用方法,不仅能完成日常磁盘管理,也有助于排查服务器存储、权限和文件系统相关问题。

一、什么是 Linux 挂载

Linux 采用统一的目录树结构,用户通常通过 / 作为根目录访问所有文件。独立磁盘分区并不会天然出现在某个目录下,需要通过挂载操作将文件系统连接到指定目录。

例如,一块磁盘分区为 /dev/sdb1,可以挂载到 /data

Bash
sudo mount /dev/sdb1 /data

执行后,访问 /data 实际上就是访问 /dev/sdb1 文件系统中的内容。

需要特别注意,挂载目录通常必须提前创建:

Bash
sudo mkdir -p /data
sudo mount /dev/sdb1 /data

如果 /data 原本已经存在文件,挂载之后这些文件不会消失,但会被挂载文件系统的内容暂时遮挡。卸载文件系统后,原来的文件又会重新出现。

二、mount 命令的基本语法

mount 最常见的语法如下:

Bash
mount [选项] 设备 挂载点

例如:

Bash
sudo mount /dev/sdb1 /mnt/data

其中:

  • /dev/sdb1 是需要挂载的设备或文件系统;

  • /mnt/data 是挂载点;

  • sudo 用于获取挂载所需的管理员权限。

如果文件系统类型需要明确指定,可以使用 -t

Bash
sudo mount -t ext4 /dev/sdb1 /mnt/data

常见文件系统包括:

ext4
xfs
btrfs
vfat
ntfs
nfs
tmpfs

多数情况下,Linux 可以自动识别文件系统类型,因此不需要手动添加 -t

三、查看当前系统的挂载情况

排查挂载问题时,首先应该确认当前系统到底挂载了哪些文件系统。

直接执行:

Bash
mount

输出内容可能比较多,例如:

/dev/sda2 on / type ext4 (rw,relatime)
/dev/sda1 on /boot type ext4 (rw,relatime)
/dev/sdb1 on /data type xfs (rw,relatime)

如果只想查看磁盘和挂载点之间的关系,更推荐:

Bash
lsblk

或者:

Bash
lsblk -f

lsblk -f 可以同时查看设备、文件系统类型、UUID 和挂载点,对于磁盘管理非常实用。

也可以使用:

Bash
df -h

查看已经挂载文件系统的容量和使用率。

例如:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        50G   21G   27G  44% /
/dev/sdb1       200G   80G  120G  40% /data

其中 Mounted on 就表示对应的挂载目录。

四、查看磁盘分区和文件系统类型

如果不知道应该挂载哪个设备,可以先执行:

Bash
lsblk -f

典型结果:

NAME   FSTYPE FSVER LABEL UUID                                 MOUNTPOINTS
sda
├─sda1 ext4         boot  1111-2222                            /boot
└─sda2 ext4         root  3333-4444                            /
sdb
└─sdb1 xfs                5555-6666                            /data

也可以使用:

Bash
sudo blkid

查看设备的 UUID 和文件系统类型:

/dev/sdb1: UUID="5555-6666" TYPE="xfs"

实际生产环境中,UUID 比 /dev/sdb1 这种设备名称更加稳定,因为设备名称可能由于硬件识别顺序变化而发生改变。

五、创建挂载目录

挂载点就是文件系统接入 Linux 目录树的位置。

例如创建 /data

Bash
sudo mkdir -p /data

也可以按照实际用途创建:

Bash
sudo mkdir -p /mnt/backup
sudo mkdir -p /srv/storage
sudo mkdir -p /opt/app-data

选择挂载点时,需要注意不要随意覆盖正在使用的重要目录。

例如将磁盘挂载到 /var/home 等系统目录之前,必须充分确认当前目录中的数据和系统启动流程,否则可能导致数据无法访问甚至系统启动异常。

六、挂载磁盘分区实战

假设系统识别出新磁盘分区:

/dev/sdb1

首先确认文件系统:

Bash
lsblk -f

假设结果显示:

/dev/sdb1 xfs

创建挂载目录:

Bash
sudo mkdir -p /data

执行挂载:

Bash
sudo mount /dev/sdb1 /data

检查结果:

Bash
df -h /data

或者:

Bash
findmnt /data

如果能够看到 /dev/sdb1/data 的对应关系,就说明挂载已经成功。

七、使用 mount -a 批量挂载

Linux 中经常会通过 /etc/fstab 配置开机自动挂载。

修改 /etc/fstab 后,不建议直接重启验证,而是先执行:

Bash
sudo mount -a

该命令会按照 /etc/fstab 中的配置尝试挂载尚未挂载的文件系统。

如果没有任何错误输出,通常说明配置基本正常。

验证:

Bash
findmnt

或者:

Bash
df -h

这种方式尤其适合服务器配置,可以避免因为 /etc/fstab 写错导致重启后进入紧急模式。

八、使用 UUID 配置自动挂载

假设:

Bash
sudo blkid /dev/sdb1

得到:

/dev/sdb1: UUID="5555-6666" TYPE="xfs"

编辑:

Bash
sudo vim /etc/fstab

增加:

UUID=5555-6666 /data xfs defaults 0 0

字段分别表示:

设备标识     挂载点  文件系统  挂载参数  dump  fsck

保存后执行:

Bash
sudo mount -a

然后:

Bash
df -h /data

确认是否挂载成功。

对于生产服务器,使用 UUID 通常比直接写 /dev/sdb1 更可靠。

九、常见 mount 参数

mount 提供了大量参数,其中比较常用的是以下几类。

1. ro:只读挂载

Bash
sudo mount -o ro /dev/sdb1 /mnt/data

适合查看数据而不希望修改文件系统的场景。

2. rw:读写挂载

Bash
sudo mount -o rw /dev/sdb1 /mnt/data

3. defaults:默认参数

Bash
sudo mount -o defaults /dev/sdb1 /data

defaults 通常包含常见的读写、允许执行、自动挂载等默认选项。

4. noexec:禁止执行程序

Bash
sudo mount -o noexec /dev/sdb1 /data

适用于不需要从该文件系统直接执行程序的场景,可以作为额外的安全控制手段。

5. nosuid:忽略 SUID/SGID

Bash
sudo mount -o nosuid /dev/sdb1 /data

6. nodev:不解释设备文件

Bash
sudo mount -o nodev /dev/sdb1 /data

实际使用时,应根据业务需求组合挂载参数,而不是机械套用。

十、挂载 ISO 镜像

Linux 也可以直接挂载 ISO 文件。

例如:

Bash
sudo mkdir -p /mnt/iso
sudo mount -o loop ubuntu.iso /mnt/iso

然后查看:

Bash
ls -lah /mnt/iso

ISO 中的文件就可以通过 /mnt/iso 访问。

使用结束后:

Bash
sudo umount /mnt/iso

对于只需要读取镜像内容的场景,这种方法非常方便。

十一、挂载网络文件系统

Linux 服务器还经常需要挂载 NFS 网络共享。

例如服务器提供:

192.168.1.100:/data

客户端创建目录:

Bash
sudo mkdir -p /mnt/nfs

然后:

Bash
sudo mount -t nfs 192.168.1.100:/data /mnt/nfs

检查:

Bash
df -h /mnt/nfs

如果能够看到远程文件系统,说明 NFS 挂载成功。

实际使用中还需要确保 NFS 客户端软件已经安装,并确认网络、防火墙以及服务端导出配置正常。

十二、umount 命令的基本用法

卸载文件系统使用 umount

Bash
sudo umount /data

也可以直接指定设备:

Bash
sudo umount /dev/sdb1

两种写法通常都可以,使用挂载点卸载更加直观。

卸载成功后,可以执行:

Bash
findmnt /data

如果没有输出对应文件系统,说明已经卸载。

也可以:

Bash
df -h

确认挂载关系已经消失。

十三、为什么 umount 提示 target is busy

这是 Linux 卸载时最常见的问题之一。

例如执行:

Bash
sudo umount /data

出现:

umount: /data: target is busy.

意味着仍有进程正在使用这个文件系统。

最常见的原因是当前终端就在挂载目录中:

Bash
cd /data
sudo umount /data

此时应该先离开:

Bash
cd /
sudo umount /data

如果仍然无法卸载,可以查找占用该目录的进程。

使用:

Bash
sudo lsof +D /data

或者:

Bash
sudo fuser -vm /data

如果数据量较大,lsof +D 可能需要较长时间。排查服务器问题时,fuser 往往更加直接。

十四、处理正在使用挂载点的进程

执行:

Bash
sudo fuser -vm /data

可能看到:

                     USER       PID ACCESS COMMAND
/data:               root      1234 ..c.. bash
                     app       5678 ..f.. python

这说明 bashpython 等进程正在使用 /data

此时应该先正常停止相关业务,再重新执行:

Bash
sudo umount /data

不要一看到 busy 就直接杀进程。对于数据库、日志服务等正在写入磁盘的程序,强行终止可能导致数据损坏或业务异常。

十五、lazy 卸载与强制卸载

Linux 提供了 -l 参数:

Bash
sudo umount -l /data

lazy unmount 会将挂载点从目录树中移除,并在相关引用释放后完成实际卸载。

它适合某些挂载点长期处于 busy 状态的场景,但不应该作为解决所有卸载问题的默认方案。

另一个参数是:

Bash
sudo umount -f /data

强制卸载主要用于特定场景,尤其是某些网络文件系统出现异常时更有意义。

对于本地磁盘,贸然强制卸载可能造成数据一致性风险,因此应该优先定位并处理占用挂载点的进程。

十六、挂载目录和卸载目录时的注意事项

实际操作中,有几个问题非常容易被忽视。

1. 不要在挂载目录中执行卸载

如果当前 Shell 的工作目录是:

/data

先执行:

Bash
cd /

再卸载。

2. 检查是否存在嵌套挂载

例如:

/data
/data/backup

其中 /data/backup 又是独立挂载点,那么直接卸载 /data 可能失败。

可以使用:

Bash
findmnt -R /data

查看整个挂载树。

3. 卸载前确认业务状态

服务器中的数据库、Web 服务、容器和日志服务都可能持续访问某个目录。卸载前最好先停止相关业务。

4. 不要随意修改正在使用的挂载点

特别是 //boot/usr/var/home 等关键目录,操作前必须确认影响范围。

十七、mount 与 findmnt 的配合

现代 Linux 系统中,findmnt 是排查挂载关系非常方便的工具。

查看所有挂载:

Bash
findmnt

查看某个目录:

Bash
findmnt /data

查看某个设备:

Bash
findmnt /dev/sdb1

查看文件系统类型:

Bash
findmnt -t ext4

查看挂载树:

Bash
findmnt -R /data

相比直接阅读 mount 的完整输出,findmnt 更适合针对性查询。

十八、常见挂载问题排查思路

如果执行:

Bash
sudo mount /dev/sdb1 /data

失败,可以按照以下顺序排查。

首先确认设备是否存在:

Bash
lsblk

然后确认文件系统:

Bash
lsblk -f

再检查文件系统是否已经挂载:

Bash
findmnt /dev/sdb1

确认挂载目录:

Bash
ls -ld /data

如果目录不存在:

Bash
sudo mkdir -p /data

如果提示文件系统类型错误,可以尝试:

Bash
sudo blkid /dev/sdb1

确认实际文件系统类型,再使用:

Bash
sudo mount -t xfs /dev/sdb1 /data

如果怀疑文件系统本身存在问题,则应该先停止使用该分区,再根据具体文件系统类型选择对应的检查工具。

十九、mount 与 umount 常用命令汇总

日常 Linux 目录挂载与卸载可以重点掌握以下命令:

Bash
# 查看所有挂载
mount

# 查看磁盘、文件系统和挂载点
lsblk -f

# 查看文件系统 UUID
blkid

# 查看磁盘空间
df -h

# 查看指定挂载点
findmnt /data

# 创建挂载目录
mkdir -p /data

# 挂载磁盘
mount /dev/sdb1 /data

# 指定文件系统类型
mount -t ext4 /dev/sdb1 /data

# 只读挂载
mount -o ro /dev/sdb1 /data

# 按 fstab 配置挂载
mount -a

# 卸载
umount /data

# 查看占用挂载点的进程
fuser -vm /data

# 查看目录对应的进程和文件
lsof +D /data

# 延迟卸载
umount -l /data

掌握这些命令后,已经可以覆盖大多数 Linux 磁盘挂载、目录卸载和基础故障排查需求。

Linux 的 mountumount 看似简单,但真正使用时需要结合 lsblkblkiddffindmntfuser 等工具一起判断。日常操作中建议遵循“先确认设备和文件系统,再挂载;先确认业务和进程,再卸载”的原则。对于服务器环境,则应进一步结合 /etc/fstab、UUID 和挂载参数设计可靠的自动挂载方案,避免因为设备名称变化或错误配置影响系统启动和业务运行。