Linux LVM 根目录扩容实战笔记
·
1. 故障背景
- 现象:服务器根目录
/使用率达到 100%,导致服务(如 Docker)无法正常运行。 - 环境:Ubuntu 26.04 (Resolute) 采用 LVM 逻辑卷管理。
- 物理磁盘:
sda(25G),分区sda3(23G)。 - 当前状态:逻辑卷
ubuntu--vg-ubuntu--lv仅分配了约 11.5G,而物理分区sda3有 23G,存在大量未分配空间。
2. 排查思路(如何看出来的?)
通过对比 df -h 和 lsblk 两个命令的输出差异来定位问题:
- 看文件系统 (
df -h):- 发现
/dev/mapper/ubuntu--vg-ubuntu--lv总大小仅为 12G,且已用 100%。
- 发现
- 看块设备结构 (
lsblk):- 找到父级分区
sda3,其大小为 23G。 - 发现子级逻辑卷
ubuntu--vg-ubuntu--lv大小仍为 11.5G。
- 找到父级分区
- 得出结论:
- $23\text{G} (\text{物理}) - 11.5\text{G} (\text{逻辑}) \approx 11.5\text{G}$。
- 结论:物理分区有足够的剩余空间,只是没有划分给逻辑卷,也还没有扩展文件系统。这是一个典型的 LVM 在线扩容场景。
3. 解决方案(操作步骤)
第一步:确认文件系统类型
在操作前必须确认是 ext4 还是 xfs,因为两者的扩容命令不同。
df -T /
输出示例:
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 ...(如果是 xfs 则显示 xfs)
第二步:扩展逻辑卷 (LV)
将卷组 (VG) 中所有剩余的空闲空间全部分配给根目录逻辑卷。此操作即时生效,无需卸载。
# -l +100%FREE 表示使用所有剩余空闲空间
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
第三步:扩展文件系统
逻辑卷变大后,文件系统还不知道,需要刷新文件系统边界。根据第一步的结果选择命令:
-
如果是 ext4 文件系统:
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv -
如果是 xfs 文件系统:
# 注意:xfs_growfs 后面跟的是挂载点 /,而不是设备路径 sudo xfs_growfs /
第四步:验证结果
再次检查磁盘使用情况,确认容量已增加且使用率下降。
df -h
4. 避坑指南 & 知识点
- 无需重启:LVM 扩容和文件系统在线调整都是热操作,不需要重启服务器,也不会影响正在运行的业务(如 Nginx, MySQL)。
- 数据安全:虽然 LVM 扩容非常成熟且安全,但在生产环境操作前,强烈建议对重要数据进行快照或备份。
- Docker 存储位置:本次扩容解决了根目录满的问题。如果 Docker 数据量极大,未来建议将 Docker 的
data-root迁移到独立的数据盘(如/data),避免再次撑爆根目录。 - 命令区别记忆:
resize2fs(ext4) -> 接设备路径 (/dev/mapper/...)xfs_growfs(xfs) -> 接挂载点 (/)
这一份笔记,方便后续快速回顾和参考。
更多推荐

所有评论(0)