菜鸟科技网

Linux中mount命令如何正确使用?

什么是 mount

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

Linux中mount命令如何正确使用?-图1
(图片来源网络,侵删)
  • 挂载:将一个存储设备的文件系统关联到系统的一个目录上,这个目录被称为 挂载点
  • 卸载:解除这种关联,确保在安全移除设备(如拔掉 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 盘

  1. 找到 U 盘设备名 插入 U 盘后,使用 lsblkfdisk -l 命令查看。

    Linux中mount命令如何正确使用?-图2
    (图片来源网络,侵删)
    lsblk
    # 或者
    sudo fdisk -l

    假设输出显示 U 盘是 /dev/sdb1,文件系统类型是 vfat (常见于 FAT32 格式)。

  2. 创建挂载点 创建一个用于挂载的目录。

    sudo mkdir -p /mnt/usb
  3. 执行挂载 将 U 盘挂载到 /mnt/usb

    sudo mount /dev/sdb1 /mnt/usb
  4. 验证 现在你可以进入 /mnt/usb 访问 U 盘里的文件了。

    Linux中mount命令如何正确使用?-图3
    (图片来源网络,侵删)
    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:挂载光盘

  1. 插入光盘。

  2. 创建挂载点。

    sudo mkdir -p /mnt/cdrom
  3. 挂载,光盘通常是 iso9660 文件系统。

    sudo mount -t iso9660 /dev/sr0 /mnt/cdrom
    • /dev/sr0 是大多数系统中的光驱设备名。

示例 5:按 UUID 挂载(推荐方式)

设备名(如 /dev/sdb1)在多次插拔或系统重装后可能会改变,而 UUID 是唯一的,更可靠。

  1. 获取分区的 UUID 使用 blkid 命令。

    sudo blkid

    输出类似:

    /dev/sdb1: UUID="1234-5678" TYPE="vfat" PARTUUID="..."

    记下 UUID 1234-5678

  2. 按 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

如果遇到设备忙的错误,可以尝试:

  1. 使用 lsof /mnt/usb 查看哪个进程在使用该目录。
  2. 使用 fuser -km /mnt/usb 强制终止使用该设备的进程(谨慎使用!)。

/etc/fstab 文件(永久挂载)

每次开机后,之前手动挂载的设备都会失效,为了让系统在启动时自动挂载指定的设备,我们需要编辑 /etc/fstab 文件。

/etc/fstab 的每一行代表一个挂载项,格式为:

设备文件或UUID/Label  挂载点  文件系统类型  挂载选项  dump  fsck
  • 设备文件或UUID/Label:推荐使用 UUID。UUID=1234-5678LABEL=MyData
  • 挂载点/mnt/data
  • 文件系统类型ext4, ntfs-3g, vfat
  • 挂载选项defaults, ro, noautodefaults 是一个常用组合,包含了 rw, suid, dev, exec, auto, nouser, async
  • dumpdump 备份工具是否使用该分区,0 表示不使用,1 表示每天备份,2 表示不定期备份,通常设置为 0。
  • fsckfsck 文件系统检查工具是否在启动时检查该分区,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 的文件系统有更深刻的认识。

分享:
扫描分享到社交APP
上一篇
下一篇