小小白祈祷中...

在 Linux 和类 Unix 系统中,挂载(mount) 是将一个设备、分区或远程文件系统与系统的某个目录(挂载点)关联的过程。通过挂载,用户可以访问设备上的文件和目录。


挂载命令:mount

mount 命令用于挂载文件系统或查看已挂载的文件系统。


基本语法

1
mount [选项] [设备] [挂载点]
  • 设备:要挂载的设备或分区(如 /dev/sda1/dev/sdb2,或远程文件系统路径)。
  • 挂载点:系统中的一个目录(如 /mnt/mydisk),需要提前创建。
  • 选项:控制挂载行为的参数,例如只读挂载、文件系统类型等。

挂载常见操作

查看已挂载的文件系统

1
mount
  • 显示当前系统中所有已挂载的文件系统及其详细信息。

示例输出:

1
2
/dev/sda1 on / type ext4 (rw,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=4000000k,nr_inodes=1000000,mode=755)
  • /dev/sda1:设备名。
  • on /:挂载点。
  • type ext4:文件系统类型。
  • (rw,relatime):挂载选项,rw 表示可读写。

挂载文件系统

要挂载设备或分区,必须先知道设备名。可以通过以下命令查看设备分区信息:

1
lsblk
  • lsblk 输出示例:
    1
    2
    3
    4
    5
    6
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 500G 0 disk
    ├─sda1 8:1 0 100G 0 part /
    └─sda2 8:2 0 400G 0 part
    sdb 8:16 0 1T 0 disk
    └─sdb1 8:17 0 1T 0 part

挂载设备或分区到目录

1
sudo mount /dev/sdb1 /mnt
  • /dev/sdb1:设备路径。
  • /mnt:挂载点目录,必须提前存在。

验证挂载

1
mount | grep /mnt

指定文件系统类型

如果文件系统类型不是自动识别或需要指定,可以用 -t 选项:

1
sudo mount -t ext4 /dev/sdb1 /mnt
  • ext4:文件系统类型(常见的有 ext4xfsvfatntfs 等)。

只读挂载

使用 -o ro 选项挂载文件系统为只读:

1
sudo mount -o ro /dev/sdb1 /mnt
  • -o ro:只读模式,挂载后无法写入数据。

挂载 ISO 文件

挂载 ISO 文件(光盘镜像)到目录:

1
sudo mount -o loop /path/to/file.iso /mnt
  • -o loop:将文件作为一个虚拟设备挂载。

卸载文件系统

使用 umount 命令卸载挂载的文件系统。

1
sudo umount /mnt
  • 卸载时的注意事项
    • 目标挂载点不能被占用(如终端正在该目录下),否则会报错。
    • 可以使用 lsof 检查挂载点的占用情况:
      1
      lsof | grep /mnt

永久挂载设备

临时挂载的设备在系统重启后会失效。如果需要永久挂载,可以编辑 /etc/fstab 文件。

编辑 /etc/fstab 文件

  1. 查看设备的 UUID:

    1
    blkid

    示例输出:

    1
    2
    /dev/sda1: UUID="123e4567-e89b-12d3-a456-426655440000" TYPE="ext4"
    /dev/sdb1: UUID="abcdef12-3456-7890-abcd-ef1234567890" TYPE="ext4"
  2. 编辑 /etc/fstab 文件:

    1
    sudo nano /etc/fstab
  3. 添加挂载项:

    1
    UUID=abcdef12-3456-7890-abcd-ef1234567890 /mnt ext4 defaults 0 0
    • UUID:设备的唯一标识符(推荐使用 UUID,而不是设备名,避免设备名变化)。
    • 挂载点:例如 /mnt
    • 文件系统类型:例如 ext4
    • 选项defaults 表示使用默认挂载选项,其他常见选项包括 ro(只读)、noexec(禁止执行文件)等。
  4. 保存文件并退出。

  5. 测试挂载:

    1
    sudo mount -a

挂载网络文件系统(NFS 或 CIFS)

挂载 NFS(Network File System)

1
sudo mount -t nfs 192.168.1.100:/shared /mnt
  • 192.168.1.100:/shared:NFS 服务器地址和共享目录。
  • /mnt:本地挂载点。

挂载 CIFS(Windows SMB 文件共享)

1
sudo mount -t cifs //192.168.1.100/shared /mnt -o username=user,password=pass
  • //192.168.1.100/shared:共享地址。
  • 用户名和密码:通过 -o 选项指定。

挂载选项(-o

mount 命令支持多种挂载选项,通过 -o 指定:

选项 描述
ro 以只读模式挂载。
rw 以读写模式挂载(默认)。
loop 将文件作为虚拟设备挂载(例如 ISO 文件)。
noexec 禁止在挂载点上执行文件。
nosuid 不允许设置 SUID/SGID 权限。
nodev 禁止设备文件(如 /dev/null)在挂载点下生效。
sync 同步写入数据到磁盘。
async 异步写入数据到磁盘(默认)。
uid=1000 设置挂载文件的所有者(通常用于 FAT、NTFS 等非 Unix 文件系统)。
gid=1000 设置挂载文件的所属组。
username=... 指定共享文件系统的用户名(例如 CIFS)。
password=... 指定共享文件系统的密码(例如 CIFS)。

常见问题与解决

  1. 挂载时报错:mount: /mnt: unknown filesystem type

    • 原因:系统未安装对应的文件系统驱动(如 NTFS、exFAT)。
    • 解决:安装所需驱动。
      1
      2
      sudo apt install ntfs-3g        # 挂载 NTFS 文件系统
      sudo apt install exfat-utils # 挂载 exFAT 文件系统
  2. 卸载时报错:target is busy

    • 原因:挂载点被使用。
    • 解决:
      1
      2
      3
      lsof | grep /mnt     # 查看占用挂载点的进程
      kill -9 <PID> # 终止占用进程
      sudo umount /mnt # 再次卸载

总结

  • 挂载设备sudo mount /dev/sdX /mnt
  • 卸载设备sudo umount /mnt
  • 查看已挂载设备mountlsblk
  • 永久挂载:编辑 /etc/fstab
  • 网络挂载:支持 NFS 和 CIFS 文件系统。

熟练掌握挂载命令,可以高效管理本地磁盘、外部存储设备和远程文件系统。