1703 字
9 分钟
磁盘挂载笔记

Linux 磁盘挂载笔记(/dev/vdb 20G)#

环境信息#

  • 系统:Ubuntu(腾讯云轻量服务器)
  • 数据盘:/dev/vdb — 20 GiB
  • 系统盘:/dev/vda — 40 GiB

前置概念#

一个物理磁盘可以有 两种状态

状态说明示例
裸盘(无分区表)整个磁盘直接格式化,没有分区/dev/vdb
分区盘(有分区表)磁盘上有分区表(DOS/GPT),数据在分区里/dev/vdb1(vdb 的分区)

核心规则:挂载时用分区,不要挂裸盘

/dev/vdb ← 磁盘设备(不能直接挂载)
└── /dev/vdb1 ← 分区设备(挂载它)

遇到的坑#

坑 1:挂错了,挂到裸盘而不是分区#

fdisk -l 显示有分区表,但挂载时用了 /dev/vdb 而不是 /dev/vdb1

错误做法

Terminal window
ubuntu@VM-0-10-ubuntu:~ $ sudo mount /dev/vdb /mnt/data # ❌ 挂裸盘

正确做法

Terminal window
ubuntu@VM-0-10-ubuntu:~ $ sudo mount /dev/vdb1 /mnt/data # ✅ 挂分区

坑 2:格式化提示”正在被系统使用”#

两种原因都会导致这个报错:

原因 A — 裸盘/分区被挂载了:

Terminal window
ubuntu@VM-0-10-ubuntu:~ $ sudo umount /dev/vdb # 卸载占用
ubuntu@VM-0-10-ubuntu:~ $ sudo mkfs.ext4 /dev/vdb1 # 再格式化

原因 Bfstab 里有旧的 UUID 条目mount -a 会把旧的也挂上。检查 /etc/fstab 清理掉无效的旧条目。

坑 3:用 fdisk 对已挂载的磁盘创建分区表#

这是本次最大的教训。磁盘 /dev/vdb 已经格式化并挂载了,用户又用 fdisk 在上面创建分区表 + 分区:

Terminal window
ubuntu@VM-0-10-ubuntu:~ $ sudo fdisk /dev/vdb # ⚠️ 磁盘已挂载!fdisk 已经警告了

fdisk 会警告:

该磁盘目前正在使用 - 不建议您重新分区。
推荐您卸载此磁盘上所有的文件系统。

强行操作后:

  • 已有的文件系统签名变脏,mkfs 拒绝格式化
  • 旧挂载和新分区互相冲突,mount /dev/vdb1 报”已经挂载或挂载点忙”
  • 必须 sudo umount /dev/vdb 解除裸盘挂载后,才能操作分区

教训永远不要对已挂载的磁盘执行 fdisk/parted 等分区操作。先 umount,再分区,再用 partprobe 刷新分区表。

坑 4:fstab 多个重复/冲突条目#

多次尝试后 fstab 里堆了多条记录:

UUID=旧UUID /root/data/disk ext4 defaults 0 0 ← 第一次挂裸盘
UUID=旧UUID /home/ubuntu/data ext4 defaults 0 2 ← 第二次挂裸盘(同 UUID 不同挂载点)

重新格式化后 UUID 变了,旧条目指向已不存在的文件系统,mount -a 静默失败。

解决方法:定期清理 fstab,只保留有效的条目。同个磁盘 UUID 不能出现在多条记录里。


完整挂载步骤#

第一步:确认磁盘状态#

Terminal window
# 查看所有磁盘和分区
ubuntu@VM-0-10-ubuntu:~ $ sudo fdisk -l
# 查看是否有文件系统/UUID
ubuntu@VM-0-10-ubuntu:~ $ sudo blkid /dev/vdb
ubuntu@VM-0-10-ubuntu:~ $ sudo blkid /dev/vdb1 # 如果 vdb 有分区表,看分区

结果判断:

输出含义下一步
blkid /dev/vdb 有 UUID裸盘已格式化直接挂 /dev/vdb,或分个区再挂
blkid /dev/vdb 有 PTUUID有分区表/dev/vdb1
blkid /dev/vdb 无输出空盘跳到第二步
blkid /dev/vdb1 有 UUID分区已格式化直接挂 /dev/vdb1
blkid /dev/vdb1 无 UUID分区未格式化跳到第二步

第二步:创建分区(可选但推荐)#

如果磁盘是空的,先分区再格式化的管理更灵活:

Terminal window
ubuntu@VM-0-10-ubuntu:~ $ sudo fdisk /dev/vdb #使用磁盘分区管理工具fdisk 对/dev/vdb 硬盘进行操作
欢迎使用 fdisk (util-linux 2.39.3)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x465eb145 的新 DOS(MBR)磁盘标签。
命令(输入 m 获取帮助): n #`n` = new,新建分区
分区类型
p 主分区 (0个主分区,0个扩展分区,4空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p): p #`p` primary:主分区,Linux数据盘直接用主分区即可
分区号 (1-4, 默认 1): 1 #第一块主分区编号1,直接回车使用默认值
第一个扇区 (2048-41943039, 默认 2048): #2048是标准对齐扇区,保证磁盘读写性能,不要修改
最后一个扇区,+/-sectors +size{K,M,G,T,P} (2048-41943039, 默认 41943039): #默认占用磁盘全部剩余空间,完整20G分给 `/dev/vdb1`
创建了一个新分区 1,类型为“Linux”,大小为 20 GiB。
分区 #1 包含一个 ext4 签名。
您想移除该签名吗? 是[Y]/否[N]: y #之前裸盘直接格式化过vdb,磁盘残留旧文件系统标识;
#输入 `y` 清除旧ext4,避免新旧文件系统冲突、挂载报错。
写入命令将移除该签名。
命令(输入 m 获取帮助): w #`w` = write,把刚才所有分区操作写入磁盘永久生效
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
ubuntu@VM-0-10-ubuntu:~ $ sudo partprobe # 刷新分区表

⚠️ 分区前务必确认磁盘没有被挂载df -h | grep vdb 无输出再操作。

第三步:格式化#

Terminal window
# 裸盘无分区
ubuntu@VM-0-10-ubuntu:~ $ sudo mkfs.ext4 /dev/vdb
# 有分区
ubuntu@VM-0-10-ubuntu:~ $ sudo mkfs.ext4 /dev/vdb1
mke2fs 1.47.0 (5-Feb-2023)
创建含有 5242624 个块(每块 4k)和 1310720 inode 的文件系统
文件系统 UUID:951370a1-59e5-4dcc-b51a-001fbdb6ec2b
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
正在分配组表: 完成
正在写入 inode表: 完成
创建日志(32768 个块): 完成
写入超级块和文件系统账户统计信息: 已完成

💡 如果报”正在被系统使用”,先 sudo umount /dev/vdb(或 umount /dev/vdb1)解除占用。

第四步:创建挂载点#

Terminal window
ubuntu@VM-0-10-ubuntu:~ $ sudo mkdir -p /mnt/data

第五步:挂载#

Terminal window
#挂载到/mnt/data
ubuntu@VM-0-10-ubuntu:~ $ sudo mount /dev/vdb1 /mnt/data
#重新加载所有单元配置,同步最新的 /etc/fstab
ubuntu@VM-0-10-ubuntu:~ $ sudo systemctl daemon-reload

第六步:验证#

Terminal window
ubuntu@VM-0-10-ubuntu:~ $ df -h /mnt/data

输出示例:

文件系统 大小 已用 可用 已用% 挂载点
/dev/vdb1 20G 24K 19G 1% /mnt/data

第七步:开机自动挂载#

Terminal window
# 查 UUID
ubuntu@VM-0-10-ubuntu:~ $ sudo blkid /dev/vdb1
# UUID=a8454183-3cfc-4a78-bef4-919e239e01f6
# 追加到 /etc/fstab
ubuntu@VM-0-10-ubuntu:~ $ echo 'UUID=a8454183-3cfc-4a78-bef4-919e239e01f6 /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab

⚠️ 修改 fstab 后检查:

Terminal window
ubuntu@VM-0-10-ubuntu:~ $ sudo mount -a # 测试是否报错
ubuntu@VM-0-10-ubuntu:~ $ cat /etc/fstab | grep vdb # 确认没有重复条目

第八步:创建软连接(可选)#

Terminal window
ubuntu@VM-0-10-ubuntu:~ $ mkdir -p ~/data
ubuntu@VM-0-10-ubuntu:~ $ ln -s /mnt/data ~/data

之后 cd ~/data 等价于 cd /mnt/data


问题排查速查表#

现象原因解决
mount: 已经挂载或挂载点忙裸盘在同一个挂载点被占用了sudo umount /dev/vdb 后再试
mkfs: 正在被系统使用磁盘已挂载或 fstab 里有旧条目umount + 清理 fstab 重复条目
blkid /dev/vdb1 只有 PARTUUID分区创建了但没格式化sudo mkfs.ext4 /dev/vdb1
fstab 改了但 df -h 不生效systemd 缓存了旧 fstabsudo systemctl daemon-reload
多个相同 UUID 的 fstab 条目之前多次操作残留删掉多余的,只保留一条
磁盘挂载笔记
https://fuwari.vercel.app/posts/指南/磁盘挂载笔记/
作者
肥猫少杰
发布于
2026-06-17
许可协议
CC BY-NC-SA 4.0