在日常运维中,常见的问题之一就是安装的软件过多,导致根分区(/
)空间不足,而其他分区(例如 /home
)却有大量闲置空间。本文将演示如何在 Rocky Linux 9.2 上,通过 LVM(Logical Volume Manager) 技术,把 /home
分区的部分空间释放出来,再扩容到 /
根分区。
1. 环境说明
通过 df -h
查看当前磁盘空间:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rl-root 70G 26G 45G 37% /
/dev/mapper/rl-home 45G 1.8G 43G 4% /home
/dev/sda2 1014M 246M 769M 25% /boot
/dev/sda1 599M 7.0M 592M 2% /boot/efi
可以看到:
/
根分区:70G(未来可能不足)/home
:45G,其中使用仅 1.8G,有大量富余空间
目标:从 /home
分区释放 10G,扩容给 /
根分区。
2. 核心思路
备份
/home
数据(安全起见)。缩小
/home
的逻辑卷大小(减少 10G)。把释放出来的空间重新分配给
/
的逻辑卷。在线扩容
/
文件系统。
由于系统采用的是 LVM 管理,所以可以动态调整分区大小,操作较为灵活。
3. 操作步骤
3.1 备份 /home
数据
虽然缩容是安全操作,但存在风险,建议提前备份:
rsync -avx /home/ /root/backup_home/
3.2 卸载 /home
缩小分区之前需要卸载挂载点:
umount /home
如果提示 “busy”,可以强制卸载:
umount -l /home
3.3 检查文件系统并缩小 /home
先运行文件系统一致性检查(XFS 不支持缩容,通常 Rocky Linux 的 /home
用的是 XFS 文件系统,所以必须先删除再重建,这里假设你的 /home
是 XFS):
lvremove /dev/rl/home
⚠️ 注意:此操作会删除 /home
分区,之前的备份就派上用场了。
3.4 释放空间并扩容 /
确认 rl
卷组有空闲空间:
vgdisplay rl | grep "Free"
将空闲空间(含刚释放的 45G)中的10G加给 /
根分区:
lvextend -L +10G /dev/rl/root
如果你想把 所有空闲空间都给根分区:
lvextend -l +100%FREE /dev/rl/root
扩展文件系统(XFS):
xfs_growfs /
3.5 重新创建 /home
给 /home
分配一个较小的逻辑卷,比如 35G:
lvcreate -L 35G -n home rl
mkfs.xfs /dev/rl/home
mount /dev/rl/home /home
3.6 恢复数据
将之前备份的数据恢复到新的 /home
:
rsync -avx /root/backup_home/ /home/
4. 验证
再次df -h查看分区情况:
期望结果:
/dev/mapper/rl-root 80G 26G 54G 33% /
/dev/mapper/rl-home 35G 1.8G 33G 6% /home
可以看到 /
根分区增加了 10G,而 /home
减少了 10G。
5. 注意事项
文件系统类型很关键
XFS 不支持在线缩容,只能删除 LV 再重建。
EXT4 可以用
resize2fs
在线缩小。
务必做好备份
特别是缩容和删除 LV 前,必须备份
/home
数据。
分配策略
如果
/home
空间基本闲置,可以考虑只留 10~20G,剩余全部分配给/
。
6. 总结
通过 LVM 的动态分区管理,我们可以很方便地调整 Rocky Linux 的磁盘空间分配。本文展示了如何 从 /home
分区释放 10G 空间并扩容 /
根分区 的完整流程:
备份数据
删除
/home
LV扩容
/
重建
/home
这种方式不仅解决了根分区不足的问题,也充分利用了磁盘资源。