前言
本文记录在虚拟机磁盘扩容后,如何针对 LVM 管理的 Linux 根分区进行无损扩展的操作步骤;
如果想了解对于常规分区(非 LVM 动态卷管理)的根分区扩展,请参考这篇文章
步骤
1.虚拟磁盘扩容
友情提示
虚拟磁盘扩容操作必须在虚拟机已关机的状态下进行,否则有数据丢失风险!
基本上虚拟机平台都支持对虚拟机的虚拟磁盘进行扩容
KVM虚拟化使用如下指令对虚拟机的磁盘镜像进行扩容:
#qemu-img resize virtual-host.qcow2 +100G
ESXi虚拟化平台直接在虚拟机的虚拟磁盘上设置空间
虚拟机磁盘扩容开机后,在Linux 系统中执行 lsblk
查看物理磁盘大小,确定磁盘大小已增加
2.PV物理卷(磁盘分区)扩容
从lsblk
的结果可以看到系统已经识别到硬盘 sda 的大小已经变成了扩容后的 100G
但是我们的 /
根分区是以 LVM
逻辑卷的形式放在 sda3
这个物理分区上的;所以首选我们需要将 硬盘 sda
的所有剩余空间都划分给 sda3
这个物理分区
- 安装
growpart
工具
dnf install cloud-utils-growpart
- 对物理磁盘分区进行扩展
# 参数选择需要扩展的磁盘和分区代号,中加有空格
growpart /dev/sda 3
- 确认扩容后的 PV卷(磁盘分区)
# 查看物理分区大小
lsblk
# 查看 PV卷的大小
pvdisplay
3.LV逻辑卷扩容
PV
物理卷扩展成功之后,就需要对 LV
逻辑卷进行空间扩展
# 扩展 root 逻辑卷,增加全部的剩余可用空间, 最后的参数为需要扩容的分区的挂载点,也就是 LV 逻辑卷的访问路径
lvextend -l +100%FREE /dev/rl/root
查看逻辑卷扩容后的容量
# 查看逻辑卷信息
lvdisplay /dev/rl/root
至此物理分区 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
现在查看操作系统中的文件系统,已经都正确识别到了扩展之后的空间大小
与基本(非LVM)分区的扩展对比和总结
LVM分区的扩容流程:
PV扩展growpart
---> LV扩展lvextend
---> 文件系统扩展resize2fs/xfs_growfs
基本分区的扩容流程:
物理分区扩展growpart
---> 文件系统扩展resize2fs/xfs_growfs
从扩展流程也可以看出,因为 LVM
管理的分区中间多了一个逻辑抽象层,也就是 LV逻辑卷
,所以相对于常规的基本分区扩容操作,中间会多一步针对 LV的扩展步骤。其它步骤基本都一致!
重要提醒
任何对磁盘,分区的操作都可能存在数据丢失风险,强烈建议在进行分区扩展操作前,对虚拟机进行一次快照备份!!