前言

本文记录在虚拟机磁盘扩容后,如何针对 LVM 管理的 Linux 根分区进行无损扩展的操作步骤;

如果想了解对于常规分区(非 LVM 动态卷管理)的根分区扩展,请参考这篇文章

步骤

1.虚拟磁盘扩容


友情提示
虚拟磁盘扩容操作必须在虚拟机已关机的状态下进行,否则有数据丢失风险!

基本上虚拟机平台都支持对虚拟机的虚拟磁盘进行扩容
KVM虚拟化使用如下指令对虚拟机的磁盘镜像进行扩容:

#qemu-img resize virtual-host.qcow2 +100G

ESXi虚拟化平台直接在虚拟机的虚拟磁盘上设置空间
esxi-extend-virtual-disk.png

虚拟机磁盘扩容开机后,在Linux 系统中执行 lsblk 查看物理磁盘大小,确定磁盘大小已增加
lsblk.png

2.PV物理卷(磁盘分区)扩容

lsblk 的结果可以看到系统已经识别到硬盘 sda 的大小已经变成了扩容后的 100G
但是我们的 / 根分区是以 LVM 逻辑卷的形式放在 sda3 这个物理分区上的;所以首选我们需要将 硬盘 sda 的所有剩余空间都划分给 sda3 这个物理分区

  • 安装 growpart 工具
dnf install cloud-utils-growpart
  • 对物理磁盘分区进行扩展
# 参数选择需要扩展的磁盘和分区代号,中加有空格
growpart /dev/sda 3
  • 确认扩容后的 PV卷(磁盘分区)
# 查看物理分区大小
lsblk
# 查看 PV卷的大小
pvdisplay

PV-Size.png

3.LV逻辑卷扩容

PV物理卷扩展成功之后,就需要对 LV 逻辑卷进行空间扩展

# 扩展 root 逻辑卷,增加全部的剩余可用空间, 最后的参数为需要扩容的分区的挂载点,也就是 LV 逻辑卷的访问路径
lvextend -l +100%FREE /dev/rl/root

查看逻辑卷扩容后的容量

# 查看逻辑卷信息
lvdisplay /dev/rl/root

LV-Size.png

至此物理分区 PV 和 逻辑分区 LV 都已经扩展到了正确的容量,针对 LVM 的卷的扩展操作就都完成了;
但是此时如果使用 df -lTH 查看操作系统挂载的分区大小会发现还是扩容之前的大小,并没有变成扩容之后的大小;

这是因为操作系统管理的文件系统还没有被扩展,
文件系统是在格式化分区的时候就已经划分并确定的大小,例如 ext3, ext4, xfs 等等

所以现在需要对当前的文件系统进行调整,让其可以正常使用新增的剩余可用空间;

4.文件系统扩展

文件系统扩展需要根据当前的分区格式类型选择不同的扩展工具;

  • ext3,ext4 文件系统格式,使用 resize2fs 命令进行扩展
# 参数为分区的挂载点
resize2fs /dev/mapper/rl-root
  • xfs 文件系统格式,使用 xfs_growfs 命令进行扩展
xfs_growfs /dev/mapper/rl-root

现在查看操作系统中的文件系统,已经都正确识别到了扩展之后的空间大小
FS-Size.png

与基本(非LVM)分区的扩展对比和总结

LVM分区的扩容流程:

PV扩展 growpart ---> LV扩展 lvextend ---> 文件系统扩展 resize2fs/xfs_growfs

基本分区的扩容流程:

物理分区扩展 growpart ---> 文件系统扩展 resize2fs/xfs_growfs

从扩展流程也可以看出,因为 LVM 管理的分区中间多了一个逻辑抽象层,也就是 LV逻辑卷,所以相对于常规的基本分区扩容操作,中间会多一步针对 LV的扩展步骤。其它步骤基本都一致!


重要提醒
任何对磁盘,分区的操作都可能存在数据丢失风险,强烈建议在进行分区扩展操作前,对虚拟机进行一次快照备份!!

Last modification:July 17, 2024
如果觉得我的文章对你有用,请随意赞赏