lsblk树状列出所有块设备,以及它们挂在哪个挂载点。
约 1245 字大约 4 分钟
2026-05-14
“加了块新硬盘,lsblk 能看到,ls 却找不到文件”“df 显示某个目录还有空间,写文件却说满了”——这些都和“挂载”有关。Linux 的磁盘不会自动出现在某个盘符下,必须先挂载到目录树的某个位置才能用。
理解挂载是“把文件系统接到目录树某处”,掌握 mount、umount 和 /etc/fstab,避免磁盘存在却用不上、或 fstab 写错导致开不了机。
lsblk树状列出所有块设备,以及它们挂在哪个挂载点。
findmnt比 mount 更清晰,树状展示挂载点、设备、文件系统类型。
df -h每一行是一个挂载点,而不是一块磁盘。
mount /dev/sdb1 /mnt把设备临时挂到目录,重启后失效。
Linux 只有一棵从 / 开始的目录树(见 Linux 目录结构)。一块磁盘、一个分区、一个网络存储,要被使用,必须先“挂载”到这棵树的某个目录上。这个目录就叫挂载点。
sudo mount /dev/sdb1 /mnt/data执行后,访问 /mnt/data 就是访问 /dev/sdb1 这个分区。挂载点是普通目录,不是 Windows 那种盘符。一台机器的根 /、/home、/boot 很可能就是不同分区分别挂上来的——df -h 的每一行其实是一个挂载点。
一个容易踩的坑:如果挂载点目录里本来就有文件,挂载之后这些文件会被暂时“遮住”——看不到了,但没有丢,卸载后又会出现。
所以“df 说有空间,写文件却满了”的一种情况是:你以为写进了挂载的大盘,实际那个目录根本没挂载成功,文件写进了根分区,而根分区满了。先 findmnt /your/path 确认它到底挂没挂。
mount 命令手动挂的,重启就没了。要开机自动挂载,得写进 /etc/fstab。每一行六个字段:
# 设备 挂载点 类型 选项 dump fsck
UUID=xxxx-xxxx /mnt/data ext4 defaults 0 2UUID=(blkid 可查),别用 /dev/sdb1——设备名可能因插拔顺序变化ext4、xfs、nfs 等defaults 够用;网络存储常加 nofail 防止挂不上时卡住启动umount /mnt/data 报 “target is busy”,是因为有进程的工作目录或打开的文件还在那个挂载点里。先找出是谁:
lsof /mnt/data # 列出占用这个挂载点的进程
fuser -m /mnt/data # 同样用途,更简洁让那些进程退出或离开该目录,再卸载。不要随便用 umount -l(惰性卸载)或 -f(强制)——可能造成数据没写完就断开。
改 fstab 前务必能验证,否则可能开不了机
/etc/fstab 写错(UUID 打错、选项不对)会导致开机时挂载失败、系统卡在紧急模式。安全流程:① 改之前 cp /etc/fstab /etc/fstab.bak 备份;② 改完先 sudo mount -a 测试,它会按 fstab 把所有未挂载的项挂一遍,有错当场报出来;③ 确认 mount -a 无报错,再放心重启。对网络存储加 nofail 选项,挂不上也不会卡住启动。
| 误区 | 更稳妥的做法 |
|---|---|
| 以为新硬盘插上就能直接用 | 要先 mkfs 建文件系统(如需)、再 mount 挂载 |
fstab 里用 /dev/sdb1 这种设备名 | 用 UUID=,设备名会因插拔顺序变动 |
| 改完 fstab 直接重启 | 先 mount -a 验证,无报错再重启,否则可能进不了系统 |
umount 报 busy 就用 -f 或 -l 硬来 | 先 lsof、fuser 找出占用进程,正常退出再卸载 |
版权归属:Shuo Liu