扩展和缩减 LVM 存储
在创建逻辑卷后,您可以通过扩展这个卷来扩展文件系统。您可能需要扩展 PV 或 VG 以增加 LV 的存储容量。
扩展卷组大小
您可能需要添加更多磁盘空间来扩展 VG。您可以向 VG 添加物理卷,以扩展其可用大小。
准备物理设备并创建物理卷(如果不存在)。
[root@host ~]# parted /dev/vdb mkpart primary 1072MiB 1648MiB
…output omitted…
[root@host ~]# parted /dev/vdb set 3 lvm on
…output omitted…
[root@host ~]# udevadm settle
[root@host ~]# pvcreate /dev/vdb3
Physical volume "/dev/vdb3" successfully created.
vgextend 命令可将新 PV 添加到 VG。提供 VG 和 PV 名称作为 vgextend 命令的参数。
[root@host ~]# vgextend vg01 /dev/vdb3
Volume group "vg01" successfully extended
此命令会扩展 vg01 VG,幅度为 /dev/vdb3 PV 的大小。
扩展逻辑卷大小
逻辑卷的一个优势在于能够在不停机的前提下增加其大小。向 VG 中的 LV 添加可用的物理区块,以扩大 LV 容量并扩展文件系统。使用 vgdisplay 命令,确认卷组中是否有足够的空闲空间可用于 LV 扩展。
使用 lvextend 命令扩展 LV。
[root@host ~]# lvextend -L +500M /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 300.00 MiB (75 extents) to 800.00 MiB (200 extents).
Logical volume vg01/lv01 successfully resized.
此命令会将 lv01 逻辑卷的大小增加 500 MiB。大小前面的加号 (+) 表示给现有大小加上这个值;若无该符号,该值将定义 LV 的最终大小。
lvextend 命令 -l 选项需要以 PE 数量作为参数。lvextend 命令 -L 选项需要以大小(单位为字节、兆字节、千兆字节等等)作为参数。
将 XFS 文件系统扩展至逻辑卷大小
xfs_growfs 命令可以帮助扩展文件系统以占用已扩展的 LV。必须先挂载目标文件系统,然后才能使用 xfs_growfs 命令。在调整大小时,您可以继续使用该文件系统。
[root@host ~]# xfs_growfs /mnt/data/
…output omitted…
data blocks changed from 76800 to 204800
将 EXT4 文件系统扩展至逻辑卷大小
扩展使用 ext4 文件系统的 LV 的步骤与扩展使用 XFS 文件系统的 LV 相同,但调整文件系统大小的步骤除外。
resize2fs 命令可以扩展文件系统以占用新的扩展 LV。在调整大小时,您可以继续使用该文件系统。
[root@host ~]# resize2fs /dev/vg01/lv01
resize2fs 1.46.5 (30‑Dec‑2021)
Resizing the filesystem on /dev/vg01/lv01 to 256000 (4k) blocks.
The filesystem on /dev/vg01/lv01 is now 256000 (4k) blocks long.
xfs_growfs 与 resize2fs 之间的主要区别是为识别文件系统而传递的参数。xfs_growfs 命令将挂载点作为参数,resize2fs 命令则将 LV 名称作为参数。xfs_growfs 命令仅支持联机调整大小,而 resize2fs 命令同时支持联机和脱机调整大小。您可以调大或调小 ext4 文件系统的大小,但只能调大 XFS 文件系统的大小。
扩展交换空间逻辑卷
您可以扩展用作交换空间的 LV;但是,该过程与扩展 ext4 或 XFS 文件系统有所不同。用作交换空间的逻辑卷则必须脱机才能进行扩展。
使用 swapoff 命令停用 LV 上的交换空间。
[root@host ~]# swapoff -v /dev/vg01/swap
swapoff /dev/vg01/swap
使用 lvextend 命令扩展 LV。
[root@host ~]# lvextend -L +300M /dev/vg01/swap
Size of logical volume vg01/swap changed from 500.00 MiB (125 extents) to 800.00 MiB (200 extents).
Logical volume vg01/swap successfully resized.
使用 mkswap 命令将 LV 格式化为交换空间。
[root@host ~]# mkswap /dev/vg01/swap
mkswap: /dev/vg01/swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 800 MiB (838856704 bytes)
no label, UUID=25b4d602‑6180‑4b1c‑974e‑7f40634ad660
使用 swapon 命令激活 LV 上的交换空间。
[root@host ~]# swapon /dev/vg01/swap
缩减卷组存储
减小 VG 涉及从 VG 中删除未使用的 PV。pvmove 命令可将数据从一个 PV 上的区块移动到同一 VG 中具有足够可用区块的另一个 PV 上。您可以在缩减时继续使用同一 VG 中的 LV。使用 pvmove 命令 -A 选项可在更改后自动备份 VG 的元数据。此选项使用 vgcfgbackup 命令来自动备份元数据。
[root@host ~]# pvmove /dev/vdb3
使用 vgreduce 命令可从 VG 中删除 PV。
[root@host ~]# vgreduce vg01 /dev/vdb3
Removed "/dev/vdb3" from volume group "vg01"


