Linux LVM 根分区扩容实战:从 swap 回收 2GB 空间到 / 的 5 步操作
Linux LVM 根分区扩容实战:从 swap 回收 2GB 空间到 / 的 5 步操作
当服务器运行一段时间后,根分区空间不足成为许多系统管理员面临的常见问题。特别是在使用 LVM(Logical Volume Manager)的环境中,如何安全高效地调整分区结构显得尤为重要。本文将详细介绍如何将 swap 分区的空间回收并扩容至根分区的完整操作流程,同时强调操作中的风险点与回滚预案。
1. 操作前的安全检查与准备
在执行任何分区调整操作前,充分的准备工作是确保系统安全的关键。以下三项检查必须严格执行:
备份关键数据
即使是最有经验的管理员也无法保证操作万无一失。建议至少备份以下内容:/etc/fstab文件- 当前分区表(使用
fdisk -l或lsblk输出) - 重要业务数据
检查当前 LVM 结构
使用以下命令查看当前 LVM 配置:vgdisplay # 查看卷组信息 lvdisplay # 查看逻辑卷信息 pvs # 查看物理卷信息评估 swap 使用情况
通过free -h和swapon --show确认 swap 的实际使用量。如果系统频繁使用 swap,直接移除可能导致性能问题。
注意:如果系统正在使用加密的 swap 或特殊的 swap 配置(如 swap 文件),本文的方法可能不适用。
2. 关闭并释放 swap 空间
确认准备工作完成后,第一步是安全地关闭 swap 分区。以下是详细步骤:
临时关闭 swap
执行以下命令立即禁用 swap:swapoff -a永久移除 swap 配置
编辑/etc/fstab文件,注释或删除与 swap 相关的行。例如:sudo sed -i '/swap/s/^/#/' /etc/fstab从 LVM 中移除 swap 逻辑卷
如果 swap 是 LVM 逻辑卷,可以使用以下命令删除:lvremove /dev/vg_name/swap如果是独立的物理分区,则需要先将其转换为 LVM 物理卷:
pvcreate /dev/sdXN # 将 XN 替换为实际的 swap 分区
3. 将释放的空间加入卷组
成功释放 swap 空间后,需要将这些空间加入到现有的卷组中:
扩展物理卷
如果 swap 是独立分区,首先将其标记为物理卷:pvcreate /dev/sdXN扩展卷组
将新的物理卷空间添加到现有卷组:vgextend vg_name /dev/sdXN验证可用空间
使用vgdisplay确认卷组中新增的可用空间:vgdisplay vg_name | grep "Free PE"
4. 扩展根分区逻辑卷
现在可以将新增的空间分配给根分区逻辑卷:
扩展逻辑卷
使用以下命令扩展根分区逻辑卷:lvextend -L +2G /dev/vg_name/root提示:可以使用
-l +100%FREE参数将所有可用空间分配给根分区。调整文件系统大小
根据根分区使用的文件系统类型,选择相应的命令:- 对于 ext2/ext3/ext4:
resize2fs /dev/vg_name/root - 对于 XFS:
xfs_growfs /
- 对于 ext2/ext3/ext4:
验证扩容结果
使用df -h确认根分区已成功扩容。
5. 操作后的验证与优化
完成扩容后,还需要进行一些后续工作:
系统稳定性测试
重启系统并验证所有服务正常运行:reboot内存使用监控
由于移除了 swap,需要密切监控内存使用情况。可以考虑以下替代方案:- 在根分区上创建 swap 文件
- 添加更多物理内存
性能基准测试
比较操作前后的系统性能,特别是 I/O 性能:dd if=/dev/zero of=./testfile bs=1G count=1 oflag=direct
下表总结了操作前后的关键变化:
| 项目 | 操作前 | 操作后 |
|---|---|---|
| 根分区大小 | 例如 10G | 增加 2G |
| swap 空间 | 2G | 0G |
| 卷组可用空间 | 0G | 0G |
| 系统内存压力 | 依赖 swap | 完全依赖物理内存 |
在整个操作过程中,如果遇到任何意外情况,应立即停止操作并考虑以下回滚方案:
- 如果扩展文件系统失败,可以使用
lvresize缩小逻辑卷 - 如果系统无法启动,可能需要使用救援模式恢复
/etc/fstab配置 - 重要数据应确保有完整备份
