什么是 mount?
在 Linux/Unix 系统中,一切皆文件,所有的硬件设备,包括硬盘、U盘、光驱等,都必须通过挂载操作才能在文件系统中被访问。

- 挂载:将一个存储设备的文件系统关联到系统的一个目录上,这个目录被称为 挂载点。
- 卸载:解除这种关联,确保在安全移除设备(如拔掉 U 盘)之前,所有对该设备的读写操作都已结束。
mount 就是在你的主目录(如 /home/username)和物理设备之间架起一座桥梁。
基本语法
mount [选项] [设备文件] [挂载点]
设备文件:通常指硬盘的分区、U盘等在/dev目录下的设备文件,/dev/sdb1。挂载点:一个已经存在的空目录,挂载后,你访问这个目录就等同于访问设备上的文件系统。/mnt/usb或/media/username/MyUSB。
常用选项
| 选项 | 描述 |
|---|---|
-a |
挂载 /etc/fstab 文件中定义的所有文件系统,常用于系统启动时自动挂载。 |
-t |
指定文件系统的类型,如 ext4, ntfs, vfat, iso9660 (光盘) 等,现代系统通常能自动检测,但有时需要手动指定。 |
-o |
指定挂载选项,多个选项用逗号分隔,这是最重要的选项之一。 |
-r |
以只读方式挂载。 |
-w |
以读写方式挂载(默认)。 |
-n |
不更新 /etc/mtab 文件(不推荐普通用户使用)。 |
-l |
显示详细的挂载信息,包括文件系统标签。 |
-v |
显示详细的挂载过程(verbose)。 |
-L label |
按文件系统的标签(Label)挂载,而不是设备名。 |
-U uuid |
按文件系统的 UUID 挂载,而不是设备名。强烈推荐使用 UUID,因为它比设备名更稳定。 |
常用挂载选项 (-o)
| 选项 | 描述 |
|---|---|
ro |
只读 |
rw |
读写 |
sync |
同步模式,所有数据在写入前都会同步到磁盘。 |
async |
异步模式,数据先写入缓存,再由系统决定何时写入磁盘(默认)。 |
noatime |
不更新文件的访问时间,可以提升性能。 |
nodiratime |
不更新目录的访问时间。 |
exec |
允许执行挂载点中的二进制文件(默认)。 |
noexec |
禁止执行挂载点中的二进制文件,常用于挂载 /home 或数据分区以提高安全性。 |
dev |
解释文件系统中的字符设备或块设备文件(默认)。 |
nodev |
禁止解释文件系统中的设备文件。 |
suid |
允许 SUID/SGID 位生效(默认)。 |
nosuid |
禁止 SUID/SGID 位生效,用于提高安全性。 |
user |
允许普通用户挂载/卸载设备。 |
nouser |
只有 root 用户可以挂载/卸载(默认)。 |
auto |
可以用 -a 命令自动挂载(默认)。 |
noauto |
不能用 -a 命令自动挂载,需要手动挂载。 |
实用示例
示例 1:查看当前已挂载的文件系统
不带任何参数运行 mount 命令。
mount
输出格式通常是:设备文件 on 挂载点 type 文件系统类型 (选项)
示例 2:挂载一个 U 盘
-
找到 U 盘设备名 插入 U 盘后,使用
lsblk或fdisk -l命令查看。
(图片来源网络,侵删)lsblk # 或者 sudo fdisk -l
假设输出显示 U 盘是
/dev/sdb1,文件系统类型是vfat(常见于 FAT32 格式)。 -
创建挂载点 创建一个用于挂载的目录。
sudo mkdir -p /mnt/usb
-
执行挂载 将 U 盘挂载到
/mnt/usb。sudo mount /dev/sdb1 /mnt/usb
-
验证 现在你可以进入
/mnt/usb访问 U 盘里的文件了。
(图片来源网络,侵删)cd /mnt/usb ls -l
示例 3:以只读方式挂载 NTFS 分区(Windows 硬盘)
Windows 常用 NTFS 文件系统,Linux 内核可能需要 ntfs-3g 驱动来完整支持。
sudo mount -t ntfs-3g -o ro /dev/sda1 /mnt/windows
-t ntfs-3g:指定使用ntfs-3g驱动。-o ro:以只读方式挂载,防止意外损坏 Windows 的文件系统。/dev/sda1:假设 Windows 系统盘是sda1。/mnt/windows:挂载点。
示例 4:挂载光盘
-
插入光盘。
-
创建挂载点。
sudo mkdir -p /mnt/cdrom
-
挂载,光盘通常是
iso9660文件系统。sudo mount -t iso9660 /dev/sr0 /mnt/cdrom
/dev/sr0是大多数系统中的光驱设备名。
示例 5:按 UUID 挂载(推荐方式)
设备名(如 /dev/sdb1)在多次插拔或系统重装后可能会改变,而 UUID 是唯一的,更可靠。
-
获取分区的 UUID 使用
blkid命令。sudo blkid
输出类似:
/dev/sdb1: UUID="1234-5678" TYPE="vfat" PARTUUID="..."记下 UUID
1234-5678。 -
按 UUID 挂载
sudo mount -t vfat -o rw,uid=1000,gid=1000,umask=022 /dev/disk/by-uuid/1234-5678 /mnt/usb
-t vfat:指定文件系统类型。-o ...:这里是一些针对vfat的实用选项,让 U 盘上的文件归属于当前用户(uid=1000, gid=1000),并设置默认权限掩码。/dev/disk/by-uuid/1234-5678:这是通过 UUID 引用设备的标准方式。
卸载 (umount)
使用 umount 命令来卸载设备。
语法:
umount [设备文件或挂载点]
重要: 卸载前,请确保没有程序正在使用该挂载点下的文件,否则会失败。
示例:
# 方法1:使用挂载点卸载 sudo umount /mnt/usb # 方法2:使用设备文件卸载 sudo umount /dev/sdb1
如果遇到设备忙的错误,可以尝试:
- 使用
lsof /mnt/usb查看哪个进程在使用该目录。 - 使用
fuser -km /mnt/usb强制终止使用该设备的进程(谨慎使用!)。
/etc/fstab 文件(永久挂载)
每次开机后,之前手动挂载的设备都会失效,为了让系统在启动时自动挂载指定的设备,我们需要编辑 /etc/fstab 文件。
/etc/fstab 的每一行代表一个挂载项,格式为:
设备文件或UUID/Label 挂载点 文件系统类型 挂载选项 dump fsck
- 设备文件或UUID/Label:推荐使用 UUID。
UUID=1234-5678或LABEL=MyData。 - 挂载点:
/mnt/data。 - 文件系统类型:
ext4,ntfs-3g,vfat。 - 挂载选项:
defaults,ro,noauto。defaults是一个常用组合,包含了rw, suid, dev, exec, auto, nouser, async。 - dump:
dump备份工具是否使用该分区,0 表示不使用,1 表示每天备份,2 表示不定期备份,通常设置为 0。 - fsck:
fsck文件系统检查工具是否在启动时检查该分区,0 表示不检查,1 表示根分区(),2 表示其他分区,通常设置为 0 或 2。
示例:
编辑 /etc/fstab 文件(需要 root 权限):
sudo nano /etc/fstab
添加一行,让 U 盘在插入时自动挂载:
UUID=1234-5678 /mnt/usb vfat defaults,uid=1000,gid=1000,umask=022 0 0
保存文件后,系统会在下次启动时自动挂载,你也可以不重启,直接运行 sudo mount -a 来测试 fstab 的配置是否正确。
| 命令 | 功能 | 示例 |
|---|---|---|
mount |
查看已挂载的文件系统 | mount |
mount /dev/sdb1 /mnt/usb |
手动挂载设备 | sudo mount /dev/sdb1 /mnt/usb |
mount -t ntfs-3g -o ro /dev/sda1 /mnt/win |
指定类型和选项挂载 | sudo mount -t ntfs-3g -o ro /dev/sda1 /mnt/win |
mount -L MyUSB /mnt/usb |
按标签挂载 | sudo mount -L MyUSB /mnt/usb |
mount -U 1234-5678 /mnt/usb |
按 UUID 挂载 (推荐) | sudo mount -U 1234-5678 /mnt/usb |
umount /mnt/usb |
卸载设备 | sudo umount /mnt/usb |
/etc/fstab |
配置自动挂载 | UUID=... /mnt/usb vfat defaults 0 0 |
掌握 mount 命令是管理 Linux 系统存储的关键一步,理解挂载点、文件系统类型和 UUID 的概念,会让你对 Linux 的文件系统有更深刻的认识。
