Linux LVM 根分区扩容实战:从 swap 回收 2GB 空间到 / 的 5 步操作

Linux LVM 根分区扩容实战:从 swap 回收 2GB 空间到 / 的 5 步操作

当服务器运行一段时间后,根分区空间不足成为许多系统管理员面临的常见问题。特别是在使用 LVM(Logical Volume Manager)的环境中,如何安全高效地调整分区结构显得尤为重要。本文将详细介绍如何将 swap 分区的空间回收并扩容至根分区的完整操作流程,同时强调操作中的风险点与回滚预案。

1. 操作前的安全检查与准备

在执行任何分区调整操作前,充分的准备工作是确保系统安全的关键。以下三项检查必须严格执行:

  1. 备份关键数据
    即使是最有经验的管理员也无法保证操作万无一失。建议至少备份以下内容:

    • /etc/fstab文件
    • 当前分区表(使用fdisk -llsblk输出)
    • 重要业务数据
  2. 检查当前 LVM 结构
    使用以下命令查看当前 LVM 配置:

    vgdisplay # 查看卷组信息 lvdisplay # 查看逻辑卷信息 pvs # 查看物理卷信息
  3. 评估 swap 使用情况
    通过free -hswapon --show确认 swap 的实际使用量。如果系统频繁使用 swap,直接移除可能导致性能问题。

注意:如果系统正在使用加密的 swap 或特殊的 swap 配置(如 swap 文件),本文的方法可能不适用。

2. 关闭并释放 swap 空间

确认准备工作完成后,第一步是安全地关闭 swap 分区。以下是详细步骤:

  1. 临时关闭 swap
    执行以下命令立即禁用 swap:

    swapoff -a
  2. 永久移除 swap 配置
    编辑/etc/fstab文件,注释或删除与 swap 相关的行。例如:

    sudo sed -i '/swap/s/^/#/' /etc/fstab
  3. 从 LVM 中移除 swap 逻辑卷
    如果 swap 是 LVM 逻辑卷,可以使用以下命令删除:

    lvremove /dev/vg_name/swap

    如果是独立的物理分区,则需要先将其转换为 LVM 物理卷:

    pvcreate /dev/sdXN # 将 XN 替换为实际的 swap 分区

3. 将释放的空间加入卷组

成功释放 swap 空间后,需要将这些空间加入到现有的卷组中:

  1. 扩展物理卷
    如果 swap 是独立分区,首先将其标记为物理卷:

    pvcreate /dev/sdXN
  2. 扩展卷组
    将新的物理卷空间添加到现有卷组:

    vgextend vg_name /dev/sdXN
  3. 验证可用空间
    使用vgdisplay确认卷组中新增的可用空间:

    vgdisplay vg_name | grep "Free PE"

4. 扩展根分区逻辑卷

现在可以将新增的空间分配给根分区逻辑卷:

  1. 扩展逻辑卷
    使用以下命令扩展根分区逻辑卷:

    lvextend -L +2G /dev/vg_name/root

    提示:可以使用-l +100%FREE参数将所有可用空间分配给根分区。

  2. 调整文件系统大小
    根据根分区使用的文件系统类型,选择相应的命令:

    • 对于 ext2/ext3/ext4:
      resize2fs /dev/vg_name/root
    • 对于 XFS:
      xfs_growfs /
  3. 验证扩容结果
    使用df -h确认根分区已成功扩容。

5. 操作后的验证与优化

完成扩容后,还需要进行一些后续工作:

  1. 系统稳定性测试
    重启系统并验证所有服务正常运行:

    reboot
  2. 内存使用监控
    由于移除了 swap,需要密切监控内存使用情况。可以考虑以下替代方案:

    • 在根分区上创建 swap 文件
    • 添加更多物理内存
  3. 性能基准测试
    比较操作前后的系统性能,特别是 I/O 性能:

    dd if=/dev/zero of=./testfile bs=1G count=1 oflag=direct

下表总结了操作前后的关键变化:

项目操作前操作后
根分区大小例如 10G增加 2G
swap 空间2G0G
卷组可用空间0G0G
系统内存压力依赖 swap完全依赖物理内存

在整个操作过程中,如果遇到任何意外情况,应立即停止操作并考虑以下回滚方案:

  1. 如果扩展文件系统失败,可以使用lvresize缩小逻辑卷
  2. 如果系统无法启动,可能需要使用救援模式恢复/etc/fstab配置
  3. 重要数据应确保有完整备份