Linux 磁盘与 LVM 管理:扩容文件系统的安全流程
介绍 lsblk、LVM 和文件系统扩容流程,强调分区变更前的备份与核对。
云服务器扩磁盘是高频操作,但很多人只会「点控制台扩容,然后进系统随便敲两下」。LVM 的存在就是为了让这件事可控、可回退。这篇文章按「先看结构、再动手、最后验证」的顺序讲。
#先搞清楚现状:lsblk 是唯一入口
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT你会看到类似:
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:
# 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 本身不写数据,但任何分区表操作都值得先留一手。
#验证与回退
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 条还没有留言,来说点什么吧。