Ubuntu系统盘满了?别慌!用LVM安全扩容根分区(/)完整指南

如果你的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、阿里云)

  1. 在虚拟化平台将系统盘从 100G → 200G
  2. 重启虚拟机(部分系统需要)
  3. 扩展分区表:
    sudo growpart /dev/sda 2    # 扩展sda的第2个分区
    
  4. 通知LVM识别新空间:
    sudo pvresize /dev/sda2
    
  5. 后续步骤同上(lvextend + resize2fs)

需先安装工具:sudo apt install cloud-guest-utils

场景2:不确定是否用了LVM?

运行:

lsblk

如果根分区设备名包含 mappervg 字样(如 /dev/mapper/vg-root),基本就是LVM。


六、安全提醒

  • 重要数据请提前备份​(虽然风险极低)
  • 操作前建议在测试环境演练
  • 不要对正在使用的非LVM分区直接操作(如传统ext4分区)

结语

系统盘满不再可怕!只要你的Ubuntu用了LVM,扩容根分区就是“加硬盘 → 几条命令”的事。掌握这项技能,无论是开发、运维还是个人服务器管理,都能从容应对存储压力。

🔧 ​记住口诀​:
加盘 → pvcreate → vgextend → lvextend → resize2fs
五步搞定,一劳永逸!

如有疑问,欢迎在评论区留言交流!

评论 (0)

暂无评论