问题描述
PV,其为物理磁盘的抽象,而物理磁盘的大小通常是固定的,通常不会变化,但也不是绝对的;
但是,如下场景会出现 PV 大小变化:
1)在虚拟化环境中,Linux 作为虚拟机运行,Guest VM 扩容比较简单;
2)PV 为磁盘的某个分区,我们针对分区进行调整,而导致 PV 变化;
该笔记将记录:在 Linux 中,当 PV 容量增加后的扩容操作,以及相关问题的解决办法;
解决方案
在我们的场景中,其针对虚拟化环境,笔记的后续部分操作也与虚拟化环境相关(毕竟非虚拟化环境中很少会调整磁盘大小);
第一步、调整磁盘大小
How to Resize a Partition using fdisk
如果扩容 Guest VM 之后,在 Guest VM 中,能够直接看到磁盘增大(/dev/sda):
[root@k8s-gw-wn122 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ------------------ // 扩容到 50G |-sda1 8:1 0 1G 0 part /boot `-sda2 8:2 0 7G 0 part |-centos-root 253:0 0 6.2G 0 lvm / `-centos-swap 253:1 0 820M 0 lvm sdb 8:16 0 100G 0 disk sr0 11:0 1 4M 0 rom
如果 PV 使用物理盘,即 /dev/sda,则进入第二步,开始 PV 扩容;
如果 PV 使用物理盘的分区,如上 /dev/sda2,则需要分区扩容:
# growpart /dev/sda 2 CHANGED: partition=2 start=2099200 old: size=14678016 end=16777216 new: size=102758367 end=104857567 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk |-sda1 8:1 0 1G 0 part /boot `-sda2 8:2 0 49G 0 part ------------------ // 分区得以扩容 |-centos-root 253:0 0 6.2G 0 lvm / `-centos-swap 253:1 0 820M 0 lvm sdb 8:16 0 100G 0 disk sr0 11:0 1 4M 0 rom
第二步、调整 PV 大小
当 LVM 的 PV 发生变化之后:
# pvresize /dev/sda2
第三步、调整 LV 大小
# lvextend -r -l +100%FREE /dev/centos/root ... // -l +100%FREE:将剩余空间全部分配给 /dev/centos/root 分区; // -r:我们并未使用过 -r 选项,每次都是通过文件系统工具来调整(下次我们将尝试使用);
从 VG 中,删除 PV 实例
5.3.7. Removing Physical Volumes from a Volume Group Red Hat Enterprise Linux 6
// -------------------------------------------------------- // 确保 PV 未被 LV 占用 # pvdisplay /dev/hda1 -- Physical volume --- PV Name /dev/hda1 VG Name myvg PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB] PV# 1 PV Status available Allocatable yes (but full) Cur LV 1 PE Size (KByte) 4096 Total PE 499 Free PE 0 Allocated PE 499 PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7 // -------------------------------------------------------- // 如果被占用,需要使用 pvmove 进行移动 // -------------------------------------------------------- // 最后,使用 vgreduce 移除 PV 实例 # vgreduce my_volume_group /dev/hda1
参考文献
How do i extend a partition with a LVM and the contained physical volume and logical volume?
Expanding LVM Partitions in VMware, on the fly