跳转到内容

mount & umount

mount 和 umount 是 Linux 系统中用于挂载和卸载文件系统的核心工具。挂载是将存储设备(如硬盘分区、U 盘、光盘、网络共享等)连接到文件树中某个目录(挂载点)的过程,只有经过挂载,用户才能通过该目录访问设备中的数据。

  • 未挂载的设备无法直接访问,仅作为块设备文件存在于 /dev 目录下(如 /dev/sda1)
  • 挂载点必须是一个已存在的空目录(若目录非空,挂载后原有内容会被临时隐藏,卸载后恢复)

mount(挂载)

Terminal window
mount [选项] [设备名] [挂载点]
  • 设备名:要挂载的存储设备(如 /dev/sda1)或网络资源(如 //192.168.1.100/share),可以是设备路径、UUID 或 LABEL
  • 挂载点:文件系统中的目录(如 /mnt/usb)
  • 若仅执行 mount 命令(不带参数),将显示当前所有已挂载的文件系统信息

umount(卸载)

Terminal window
umount [选项] <挂载点或设备名>
  • 卸载时,既可以指定挂载点,也可以指定设备名

UUID(Universally Unique Identifier,通用唯一标识符)是一种由算法生成的 128 位数字,用于在全球范围内唯一标识信息。

在 Linux 系统中,UUID 常被用来标识硬盘分区等存储设备,其核心作用是提供一个持久且唯一的标识符,避免因设备名(如 /dev/sda1)变动导致的问题。设备名是动态分配的,可能因新增/移除设备、系统重启后检测顺序变化或更换接口而改变,而 UUID 是固定在文件系统中的唯一标识,不会随之变动。

(1) 唯一性

由规范定义的算法生成(如基于时间、硬件地址、随机数等),理论上在全球范围内不重复。

(2) 持久性

对于存储设备,UUID 会被写入文件系统的元数据中,除非主动修改,否则不会随系统重启、设备插拔、接口更换而改变。

(3) 格式固定

通常以 8-4-4-4-12 的 32 个十六进制字符表示(共 5 段,用连字符分隔),例如:

5f96e73a-8c93-469a-b51b-7435e1f99e9d

(1) 使用 blkid 工具(最常用)

blkid 可以输出存储设备的详细信息,包括设备路径、UUID、文件系统类型、卷标等(需要 root 权限):

Terminal window
# 查看所有设备的信息
sudo blkid
# 查看指定设备的信息
sudo blkid /dev/sdb1

(2) 使用 lsblk -f 工具

lsblk -f 以树状结构输出块设备信息(一般不需要 root 权限):

Terminal window
lsblk -f

输出示例:

Terminal window
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 c3d4e2a0-58d3-4b8d-83d5-84c6ff1d7e92 /
├─sda2 swap E4A2-1B3D [SWAP]
sdb
└─sdb1 vfat USB_DISK F8A1-2B3C /mnt/usb

(3) 查看 /dev/disk/by-uuid/

Linux 系统会在 /dev/disk/by-uuid/ 目录下创建 UUID 到设备文件的符号链接:

Terminal window
ls -l /dev/disk/by-uuid/
选项 说明
-t <文件系统类型> 指定要挂载的文件系统类型,若不指定,系统会自动检测
-o <挂载选项> 设置挂载参数(多个参数用逗号分隔),常见参数见下
-a 挂载 /etc/fstab 文件中所有未挂载的文件系统
-r 等价于 -o ro,只读挂载
-w 等价于 -o rw,读写挂载(默认)
-l 显示已挂载的文件系统,并附加卷标(Label)信息

常见 -o 挂载选项:

选项 说明
ro 只读挂载
rw 读写挂载(默认)
loop 挂载镜像文件(如 ISO)
noatime 不更新文件访问时间(提升性能)
remount 用新的挂载选项重新挂载已挂载的文件系统
defaults 使用默认参数(rw, suid, dev, exec, auto, nouser, async)

常见文件系统类型:

类型 说明
ext4 Linux 常见文件系统
vfat FAT32(兼容 U 盘/Windows)
ntfs Windows NTFS 分区
iso9660 光盘/ISO 镜像
nfs 网络文件系统(Unix/Linux 常用)
cifs Windows 共享文件系统(Samba)
选项 说明
-l 懒卸载(lazy unmount):立即解除关联,延迟到所有进程不再使用后真正卸载
-f 强制卸载:即使文件系统处于忙碌状态也强制卸载(可能导致数据丢失,谨慎使用)
-r 若卸载失败,尝试以只读方式重新挂载文件系统(用于故障恢复)

/etc/fstab 用于定义系统启动时自动挂载的文件系统,每次系统启动时 mount -a 会自动执行,挂载该文件中配置的设备。配置格式如下:

设备路径或UUID 挂载点 文件系统类型 挂载选项 备份标志 自检顺序
  • 挂载选项:和 -o 中挂载选项一致
  • 备份标志(0/1):dump 命令是否备份该文件系统(0 = 不备份)
  • 自检顺序(0/1/2):fsck 命令检查顺序(0 = 不检查,1 = 优先检查,2 = 次优先)

配置示例:

Terminal window
# 使用设备路径
/dev/sda1 /mnt/data ext4 defaults 0 2
# 使用 UUID
UUID=1234-ABCD /mnt/data ext4 defaults 0 2

1. 查看已挂载的文件系统

Terminal window
mount # 显示所有已挂载的文件系统
mount -l # 显示并附加卷标信息

2. 挂载存储设备

假设要将 /dev/sdb1(U 盘分区)挂载到 /mnt/usb:

Terminal window
# 先创建挂载点(若不存在)
sudo mkdir -p /mnt/usb
# 挂载(自动检测文件系统类型)
sudo mount /dev/sdb1 /mnt/usb
# 若已知是 FAT32 格式(如 U 盘),可指定类型
sudo mount -t vfat /dev/sdb1 /mnt/usb

3. 只读挂载存储设备

Terminal window
sudo mount -o ro /dev/sdb1 /mnt/usb

4. 挂载 ISO 镜像文件

Terminal window
sudo mount -o loop /home/user/image.iso /mnt/iso

5. 重新挂载已挂载的文件系统(修改参数)

假设 /mnt/data 当前为读写挂载,修改为只读挂载:

Terminal window
sudo mount -o remount,ro /mnt/data

1. 通过挂载点卸载

Terminal window
sudo umount /mnt/usb

2. 通过设备名卸载

Terminal window
# 卸载 /dev/sdb1 设备
sudo umount /dev/sdb1
# 卸载指定 UUID 的设备
sudo umount UUID=1234-ABCD

3. 处理“设备忙”问题

当提示 umount: /mnt/usb: target is busy 时(表示有程序正在使用该设备):

  • 先关闭使用该设备的程序,再重试卸载
  • 若无法关闭程序,可使用懒卸载:sudo umount -l /mnt/usb