如果你的Ubuntu系统使用了LVM(安装时默认可选),只需添加一块新硬盘,就能在线把根分区
/扩容,无需重装系统、不用重启!
一、问题场景:系统盘空间告急!
你是否遇到过以下情况?
- 终端提示
No space left on device - 软件无法安装,日志写不进
/var/log - Docker、数据库等服务因磁盘满而崩溃
df -h /显示使用率高达 95% 甚至 100%
这时候,很多人第一反应是“删文件腾空间”,但这只是治标。
真正的解决方案是:给根分区扩容!
但传统分区一旦划好就很难调整,怎么办?
👉 答案:如果你的系统用了 LVM(逻辑卷管理),扩容可以非常简单!
二、解决方案概览
核心思路:
通过 LVM 的灵活性,将一块新硬盘加入现有存储池(卷组),然后把新增的空间分配给根分区(/ 对应的逻辑卷),最后扩展文件系统——全程在线操作,数据零风险。
✅ 优点:
- 不需要备份/还原数据
- 无需重启系统
- 操作可逆(理论上)
- 适用于物理机、虚拟机、云服务器
⚠️ 前提条件:
- 系统安装时启用了 LVM
- 有权限添加新硬盘(或已有未分配空间)
三、关键概念解析(通俗版)
为了让你理解每一步在做什么,先搞懂三个核心名词:
| 术语 | 类比解释 | 实际作用 |
|---|---|---|
| 物理卷(PV, Physical Volume) | 一块“原材料”硬盘(如/dev/sdb) |
LVM能管理的最小物理单元 |
| 卷组(VG, Volume Group) | 一个“储物仓库”,由多个PV组成 | 所有空间汇总成一个池子 |
| 逻辑卷(LV, Logical Volume) | 从仓库里切出来的一个“抽屉” | 实际挂载为/、/home等分区 |
你的根分区 / 很可能就是这样一个“抽屉”(LV)。
只要“仓库”(VG)里还有空位,或者你能往仓库里加新货架(新硬盘),就能把这个“抽屉”变大!
四、完整操作示例(手把手教学)
🧪 环境假设:
- Ubuntu 20.04/22.04(使用LVM)
- 当前根分区快满了(
/dev/ubuntu-vg/ubuntu-lv)- 新增一块100GB硬盘
/dev/sdb
第1步:确认系统是否使用LVM
lsblk
看到类似这样的结构,说明用了LVM:
sda
└─sda2
└─ubuntu--vg-ubuntu--lv # ← 这就是你的根分区!
再运行:
sudo lvs
输出示例:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ubuntu-lv ubuntu-vg -wi-ao---- 50.00g
记下:
- VG 名:
ubuntu-vg - LV 路径:
/dev/ubuntu-vg/ubuntu-lv
第2步:添加新硬盘并初始化为物理卷
假设新硬盘是 /dev/sdb(用 lsblk 确认):
# 将新硬盘交给LVM管理(不会格式化!)
sudo pvcreate /dev/sdb
验证:
sudo pvs
# 应看到 /dev/sdb 出现在列表中,状态为 free
第3步:把新硬盘加入现有卷组
# 把 /dev/sdb 加入 ubuntu-vg 这个“仓库”
sudo vgextend ubuntu-vg /dev/sdb
检查卷组空间是否增加:
sudo vgs
# Free Size 应该多了约100G
第4步:扩展根分区对应的逻辑卷
# 给根分区逻辑卷增加100GB空间
sudo lvextend -L +100G /dev/ubuntu-vg/ubuntu-lv
💡 也可以用
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv一次性用完所有空闲空间。
第5步:扩展文件系统(让系统“看见”新空间)
先确认文件系统类型:
df -T /
如果是 ext4(Ubuntu默认):
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
如果是 xfs:
sudo xfs_growfs /
✅ 这两个命令都支持在线扩容,无需卸载分区!
第6步:验证结果
df -h /
输出示例:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 148G 45G 96G 32% /
🎉 成功!根分区从 50G 扩到了 150G!
五、常见补充场景
场景1:没有新硬盘,但能扩容虚拟磁盘(如 VMware、阿里云)
- 在虚拟化平台将系统盘从 100G → 200G
- 重启虚拟机(部分系统需要)
- 扩展分区表:
sudo growpart /dev/sda 2 # 扩展sda的第2个分区 - 通知LVM识别新空间:
sudo pvresize /dev/sda2 - 后续步骤同上(lvextend + resize2fs)
需先安装工具:
sudo apt install cloud-guest-utils
场景2:不确定是否用了LVM?
运行:
lsblk
如果根分区设备名包含 mapper 或 vg 字样(如 /dev/mapper/vg-root),基本就是LVM。
六、安全提醒
- 重要数据请提前备份(虽然风险极低)
- 操作前建议在测试环境演练
- 不要对正在使用的非LVM分区直接操作(如传统ext4分区)
结语
系统盘满不再可怕!只要你的Ubuntu用了LVM,扩容根分区就是“加硬盘 → 几条命令”的事。掌握这项技能,无论是开发、运维还是个人服务器管理,都能从容应对存储压力。
🔧 记住口诀:
加盘 → pvcreate → vgextend → lvextend → resize2fs
五步搞定,一劳永逸!
如有疑问,欢迎在评论区留言交流!

评论 (0)