原标题:Linux磁盘管理和挂载磁盘

直接查询某个目录挂在哪个磁盘分区了:

findmnt

或者查看某个目录:

findmnt /home
findmnt /var
findmnt /boot/efi

甚至可以查看一个具体文件:

df-h /home/user/file.txt

它会告诉你:

Filesystem      Mounted on
/dev/sdb1       /home

因此,虽然目录树看起来统一,但系统始终知道每个路径最终落在哪个挂载点上。

磁盘 (Disk)

物理硬盘(HDD/SSD)或虚拟磁盘(云盘、虚拟机磁盘)在 Linux 里被识别为设备文件,比如 /dev/sda、/dev/nvme0n1。

一块磁盘可以分成多个分区(/dev/sda1、/dev/sda2…),每个分区可以格式化成一个文件系统(ext4、xfs、ntfs 等)。

磁盘本身只是“存储空间”,要用它必须先挂载(mount)到目录树的某个位置。

df(disk free)

查看已挂载文件系统的磁盘空间使用情况(总量、已用、剩余、挂载点)。

df -h        # -h 表示人类可读单位(G/M)

du(disk usage)

查看文件或目录实际占用的磁盘空间,常用来找出哪个目录占用空间大。

du -sh /path/to/dir     # -s 汇总,-h 人类可读
du -sh /path/to/dir/*   # 看子目录各占多少

区别:df 看的是整个文件系统的空间;du 看的是某个目录/文件树的空间,两者有时对不上(比如文件被删除但进程还占着句柄)。

mount

把一个存储设备(或分区、镜像、网络共享)“挂”到文件系统树的某个目录(挂载点)上,之后访问这个目录就等于访问这个设备。

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

不挂载的话,即使磁盘接上了,系统也不知道该用哪个目录来访问它。

umount

卸载,即解除挂载关系,让目录和设备分离,之后设备可以安全拔出/断开。

umount /mnt/data

如果提示 “device is busy”,说明有进程正在使用该目录下的文件,需要先结束占用(lsof +D /mnt/data 或 fuser -m /mnt/data 排查)。

lsblk(list block devices)

列出系统里所有块设备(磁盘、分区)及其层级关系、大小、挂载点。

lsblk
lsblk -f     # 加上文件系统类型和 UUID

blkid

显示每个块设备的属性:文件系统类型(TYPE)、UUID、标签(LABEL)等。

blkid
blkid /dev/sdb1

为什么可以把任意硬盘挂载到 /mnt/data

/mnt/data 只是一个普通空目录,不是特殊路径。Linux 的挂载机制是:任何目录都可以作为“挂载点”,挂载操作发生后,内核会把该目录原来的内容“隐藏”,改为呈现被挂载设备文件系统的内容。/mnt 只是约定俗成用来放临时挂载点的地方,本质上你也可以挂载到 /home/foo/whatever,效果一样。只要:

  1. 目录存在(可以为空,也可以非空,非空的话内容会被临时遮住)
  2. 有权限执行 mount(一般需要 root 或 sudo)
  3. 设备上有内核认识的文件系统

就能挂载。这是 Linux “一切皆文件、统一目录树”设计的体现——不像 Windows 用盘符(C:、D:)区分磁盘,Linux 把所有存储都无缝拼接进同一棵目录树。

UUID 是什么

UUID(Universally Unique Identifier)是格式化文件系统时生成的一个全局唯一标识符,例如:

a1b2c3d4-e5f6-7890-abcd-ef1234567890

作用:设备名(/dev/sda1)会因为插拔顺序、硬件变动而改变,但 UUID 是固定绑定在文件系统上的,不会变。所以 /etc/fstab 里写挂载配置时通常用 UUID 而不是 /dev/sdaX,避免重启后盘符错位导致挂错盘。

# /etc/fstab 示例
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890  /mnt/data  ext4  defaults  0  2

注意:

  • umount 前如果有进程占用会失败,强制 umount -l(懒卸载)可能导致数据未写完就断开,有丢数据风险。
  • 挂载点如果不是空目录,原内容会被遮住,卸载后又会重新出现,容易造成“文件消失了”的误判。
  • /etc/fstab 写错 UUID 或选项可能导致系统开机时卡在紧急模式(emergency mode)。
  • 跨云迁移(如腾讯云→阿里云)时,磁盘 UUID 可能重复或冲突,需要注意。