技术文章2025 年 12 月 29 日约 2.3 分钟

Linux 磁盘与 LVM 管理:扩容文件系统的安全流程

介绍 lsblk、LVM 和文件系统扩容流程,强调分区变更前的备份与核对。

云服务器扩磁盘是高频操作,但很多人只会「点控制台扩容,然后进系统随便敲两下」。LVM 的存在就是为了让这件事可控、可回退。这篇文章按「先看结构、再动手、最后验证」的顺序讲。

#先搞清楚现状:lsblk 是唯一入口

bash
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT

你会看到类似:

text
NAME            SIZE TYPE  FSTYPE MOUNTPOINT
vda             40G  disk
├─vda1           1G  part  xfs    /boot
└─vda2          39G  part  LVM2_member
  └─vg0-root    39G  lvm   xfs    /

看到 LVM2_member 和 lvm 这两行,说明系统盘是 LVM 管理的。扩容的本质是三步:物理卷 PV 变大 → 卷组 VG 吸收 → 逻辑卷 LV 变大 → 文件系统长大。

#扩容流程:每步都有验证

假设云控制台已经把磁盘从 40G 扩到 80G:

bash
# 1. 让内核重新读取分区表
sudo partprobe /dev/vda || sudo partx -u /dev/vda

# 2. 确认新空间
sudo lsblk                       # vda 应为 80G,vda2 还是 39G

# 3. 扩展分区(如果 vda2 后面有可用空间)
sudo growpart /dev/vda 2

# 4. 扩展 PV → VG
sudo pvresize /dev/vda2
sudo vgs                         # VFree 列应该有约 40G

# 5. 扩展 LV 到卷组全部空间
sudo lvextend -l +100%FREE /dev/vg0/root

# 6. 扩展文件系统(xfs 和 ext4 命令不同!)
sudo xfs_growfs /                # XFS:挂载点即可
# 或
sudo resize2fs /dev/vg0/root     # ext4:设备路径

第 6 步最容易翻车:XFS 不能缩容,而且 grow 要在挂载状态下对挂载点执行;ext4 用 resize2fs,缩容必须离线。所以如果分区是 XFS,扩容前先确认需求,别想着「先扩再说,不行缩回来」——缩不回来。

#踩过的坑

坑一:pvextend 后忘了 grow 文件系统。 LV 显示 80G,df -h 还是 40G,磁盘还写着 100%。df 看的是文件系统,不是块设备。扩容完成后用 df -h / 确认数字真的变了。

坑二:在 /boot 那种普通分区上试 growpart。 只有 LVM 的 PV 才支持 pvresize 这种「在线扩展」;普通分区扩了,文件系统不会自动跟着长,还得自己算偏移,风险高。

坑三:扩容分区前不看备份。 生产数据盘在动分区表之前,至少确认有快照或备份。growpart 本身不写数据,但任何分区表操作都值得先留一手。

#验证与回退

bash
df -h /                     # 容量真的变大了
sudo pvs && sudo vgs && sudo lvs   # 三层结构各自健康
sudo xfs_repair -n /dev/vg0/root   # XFS 只读检查(可选,谨慎)

最后说点经验:别把「扩容」当日常操作练手。LVM 的价值是让你在扩容失败时还有的救——比如 lvextend 手滑扩错了 LV,在文件系统还没 grow 之前,lvreduce 还能缩回来;一旦 grow 了,XFS 就再也回不去了。所以每步验证、每步留余地,才是 LVM 的正确打开方式。

写于 2025 年 12 月 29 日

栏目
技术文章
约
2.3 分钟
字数
1.4K
阅读
167

本文为原创记录,转载请注明出处。如果这篇替你省了时间,欢迎留言说说你踩到的坑。

同题 · related

留言 · remarks

00 条

还没有留言,来说点什么吧。

Linux 磁盘与 LVM 管理:扩容文件系统的安全流程 · LXH·BLOG