「LVM」- 增加 PV 大小(单个 PV 扩容)

问题描述

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