Chapter10 - 管理逻辑卷管理(LVM)存储
逻辑卷管理(LVM)概念
逻辑卷和逻辑卷管理有助于更加轻松的管理磁盘空间。如果 LVM 托管的文件系统需要更多的空间,可以将其卷组中的可用空间分配给逻辑卷,并且可以调整文件系统的大小。如果磁盘开始出现错误,可以将替换磁盘注册为物理卷放入卷组中,并且逻辑卷的区块可迁移到新磁盘。

- 物理设备是用于保留逻辑卷中所存储的存储设备。它们是块设备,可以是磁盘分区、整个磁盘、
RAID阵列
或SAN磁盘
。设备必须初始化为LVM
物理卷,才能与 LVM结合使用。整个”设备“将作用一个物理卷。 - 物理卷(PV)用于注册基础物理设备以便在卷组中使用。 LVM 自动将 PV划分为物理区块(PE);它们是充当 PV 是最小的存储块的小块数据。
- 卷组(VG) 是存储池,由一个或多个物理卷组成。一个PV只能分配给一个 VG ,VG 可以包含未使用的空间和任意数目的逻辑卷。
- 逻辑卷(LV)根据卷组中的空闲物理范围创建,提供应用、用户和操作系统所使用的”存储“设备。 LV是逻辑区块 ( LE)的集合, LE映射到物理区块(PV 的最小存储块)。默认情况下,每个 LE将映射到一个PE ,设置特定的 LV选项将会更改此映射;例如:镜像会导致每个 LE映射到两个 PE。

管理逻辑卷
创建逻辑卷
创建可用的逻辑卷需要五个步骤:
- 准备物理设备
使用 fdisk
、gdisk
或 parted
创建新分区,以便与 LVM 结合使用。在 LVM 分区上,始终将分区类型设备为 Linux LVM 。也可以使用完成的磁盘、RAID 阵列或 SAN 磁盘。

- 创建物理卷
使用pvcreate
为分区(或其他物理设备)添加标签,使其作为物理卷与 LVM 结合使用。会将用于存储 LVM 配置数据的一个标头直接写入到 PV ,PV 分为多个固定大小的物理范围(PE),以空格分隔多个设备名。

此命令会将设备 /dev/vda2
和 /dev/vdb1
标记为 PV
,准备好分配到卷组中。
仅当没有空闲的 PV 可以创建或扩展 VG 时,才需要创建 PV
- 创建卷组
vgcreate
用于创建包含一个或多个物理卷的池,称为卷组。 VG 的大小由池中的物理范围的总数决定。 VG 负责通过向 LV 分配空闲 PE 来托管一个或多个逻辑卷;因此 ,在创建 LV时 ,VG 必须具有足够的空闲 PE 可用。
以 vgcreate 的参数形式,定义 VG 名称并列出一个或多个要分配给 VG 的 PV。

此命令将创建名为 vg-alpha
的 VG ,它的大小是/dev/sda2
和 /dev/vdb1
,这两个PV的总大小(以PE单位计)
仅当没有现有 VG 时才需要创建VG.可能会出于管理原因创建额外的 VG ,用于管理 PV和 LV的使用。否则,可在需要时扩展现有 VG 以容纳新的 LV。
- 创建逻辑卷
lvcreate
根据卷组中的可用物理范围创建新的逻辑卷。至少为 lvcreate
使用以下参数:使用 -n
选项设置 LV名称,使用 -L
选项设置 LV 大小(以字节
为单位),并确定要在其中创建 LV 的 VG 名称。

此命令将在 VG vg-alpha 中创建一个名为 hercules 的 LV ,其大小为 2GB.必须有足够的空闲物理范围来分配 2GB,如有必要会将其取整为 PE 单元大小的倍数。
有多种方式可以指定大小: -L
要求以字节或更大指定值为单位的大小。例如 M,G。-l
选项要求以物理范围数为单位进行衡量的大小。
lvcreate -L 128M
,将逻辑卷的大小确定为正好 128 MiB
lvcreate -l 128
,将逻辑卷的大小确定为正好128个范围(PE)的大小,大小取决于 PE 块的大小。
TIPS
不同的工具将使用传统名称 /dev/vgname/lvname
或内核设备映射程序名。 /dev/mapper/vgname-lvname
。显示逻辑卷名。
- 添加文件系统
使用mkfs
在新逻辑卷上创建文件系统(xfs
,ext4
)

删除逻辑卷
删除所有逻辑卷组件需要四个步骤:
- 准备文件系统
将必须保留的所有数据移动到另一个文件系统,然后使用 umount
卸载该文件系统。不要忘记删除与此文件系统关联的任何/etc/fstab
条目

tips
删除逻辑卷会破坏该逻辑卷上存储的所有数据。删除逻辑卷之前,请备份或移动数据
- 删除逻辑卷
使用 lvremove
删除不再使用的逻辑卷。使用设备名称作为参数。

运行此命令之前,必须卸载 LV 文件系统。删除 LV 之前,将请求确认
LV 的物理范围将会被释放,并可用于分配给卷组中的现在 LV 或新 LV。
- 删除卷组
使用vgremove
删除不再需要的卷组。使用 VG 名称作为参数。

VG 的物理卷组会被释放,并可用于分配给系统中的现在 VG 或新 VG
- 删除物理卷
使用 pvremove 删除不再需要的物理卷。使用空格分隔的 PV 设备列表同时删除多个 PV 。PV 元数据将从分区(或磁盘)清除,分区现在已空闲,可重新分配或重新格式化。

查看 LVM 状态信息
使用 pvdisplay
显示有关物理卷的信息。如果未随命令指定任何参数,则它将列出有关系统上所有 PV 的信息。如果参数为特定设备名称,则将仅显示特定 PV 的信息。

- PV Name 映射到设备名称
- VG Name 显示将 PV 分配到的卷组。
- PV Size 显示 PV 的物理大小,包括任何不可用的空间。
- PE Size 是物理范围大小,它是逻辑卷中可分配的最小大小。
- 它也是计算以 PE 单位报告的任何值(如 Free PE)的大小时的倍数,例如:26个 PE x 4MiB(PE Size)可提供104 MiB 可用空间。逻辑卷大小将取整为 PE 单位的倍数。
- Free PE 显示有多少 PE 单位可用于分配给新逻辑卷。
卷组
使用 vgdisplay
显示有关卷组的信息。如果没有为命令指定任何变量,则它将显示有关所有 VG 的信息, 使用 VG 名称作为变量将仅显示该特定 VG 的信息。

- VG Name 是此卷组的名称
- VG Size 是存储池可用于逻辑卷分配的总大小。
- Total PE 是以 PE 单位表示的总大小
- Free PE /Size 显示 VG 中有多少空闲空间可用于分配给新 LV 或扩展现在 LV。
逻辑卷
使用 lvdisplay
显示有关逻辑卷的信息。同样,如果未随命令指定任何参数,则将显示有关所有 LV 的信息; 而使用 LV 设备名称任何参数将仅显示有关该特定设备的信息。

- LV Patch 显示此逻辑卷的设备名称;某些工具可能会将设备名报告为
/dev/mapper/vgname-lvname
; 两个名称都表示同一 LV - VG Name 显示从其分配 LV的卷组。
- LV Size 显示 LV的总大小。使用文件系统工具检查可用空间和数据存储的已用空间。
- Current LE 显示此 LV 使用的逻辑范围数。 LE 通常映射到 VG 中的物理范围,并因此映射到物理卷。
扩展逻辑卷
扩展和缩减卷组
可以通过添加额外的物理卷来为卷组增加更多磁盘空间。这种做法称为扩展卷组。由额外的物理卷提供的新物理区段可以分配给逻辑卷。
可以将未使用的物理卷从卷组中删除。这种做法称为缩减卷组。可以使用名为 pvmove 的工具,将数据从一个物理卷上的区段移动到卷组中其他物理卷上的区段。通过这种方式,可以将新磁盘添加到现在卷组,将数据从较旧或较慢的磁盘移动到新磁盘,并将旧磁盘从卷组中删除。可在卷组中的逻辑卷正在使用时完成这些操作。
扩展卷组可能需要四个步骤:
- 准备物理设备

- 创建物理卷

- 扩展卷组
vgextend
用于向卷组添加新物理卷。使用 VG 名称和 PV 设备名称作为 vgextend
的参数。

- 验证新空间是否可用

缩减卷组需要两个步骤:
- 移动物理区段
使用 pvmove将物理卷上使用的任何物理区段重新分配给 VG 中的其他 PV。仅当 VG 中存在足够的空间范围,且所有这些范围都来自其他 PV 时,才能执行此操作。使用将移动的 PE 所属的 PV 设备名称作为该命令的参数。

警告
使用 pvmove 前建议备份卷组所有逻辑卷上存储的数据。如果操作期间意外断电,可能会导致卷组状态不一致。这可能导致卷组中逻辑卷上的数据丢失。
- 缩减卷组
使用vgreduce
将物理卷从卷组中删除。使用VG 名称和 PV 设备名称作为该命令参数。

/dev/vdb2
PV 现在已从 vg-alpha VG 删除,并可以添加到其他 VG 。或者 ,也可以使用pvremove
永久停止将设备用作 PV。
扩展逻辑卷和 XFS 文件系统
逻辑卷是一个优势在于能够在不停机的情况下增加其大小。可将卷组中的空闲物理区段添加到逻辑卷以扩展其容量,然后可使用逻辑卷扩展所包含的文件系统。
扩展逻辑卷需要三个步骤:
- 验证卷组是否具有可用的空间
使用 vgdisplay 验证是否有足够的物理区段供使用。

检查输入中的 Free PE /Size
,它应该报告一个等于或大于所需额外空间的值 。如果没有足够的可用空间,则卷组扩展幅度至少要达到所需空间的大小。
- 扩展逻辑卷
lvextend 可将逻辑卷扩展为新的大小。添加 LV设备名称作为命令的最后一个参数。

此命令可将逻辑卷 hercules 的大小增加 300 M 。请注意空间大小前面的+
,它表示 向现有大小增加此值;如无该符号,该值定义 LV 的最终确切大小。
与 lvcreate
类似,有多种方式可以指定大小:-l
通常要求物理区段值,而 -L
要求以字节或更大的单位表示 。
lvextend -l 128 #将逻辑卷的大小调整为正好 128 个范围
lvextend -l +128 #向逻辑卷的当前大小添加128 个范围
lvextend -L 128M #将逻辑卷的大小调整为正好128M
lvextend -L +128M #向逻辑卷的当前大小增加128M
lvextend -l +50%FREEE #向 LV 添加 VG 中当前可以空间的 50%
3、扩展文件系统
xfs_growfs /mountpoint
扩展文件系统以占用已扩展的 LV。xfs_growfs
要求在文件系统运行时进行搭载该系统;在调整大小操作期间仍然可以使用该文件系统。

注意
常见错误是运行 lvextend 但忘记运行 xfs_growfs 。两步合二为一的方法是 lvextend
使用-r
作为命令的一个选项,这将使用 fsadm(8)
在扩展 LV后调整文件系统的大小。它可以用于多种不同的文件系统。
验证已挂载文件系统的新大小:
df -h /mountpoint
扩展逻辑卷和ext 4文件系统
扩展基于ext4 的逻辑卷的步骤基本和扩展基于 xfs的 LV 相同,只有调整文件系统大小的步骤不同
验证卷组的可用性
扩展逻辑卷
扩展文件系统
resize2fs /dev/vgname/lvname
扩展文件系统以占用新扩展的 LV。正与 xfs_growfs
一样,可以在文件系统正在运行时挂载该文件系统(可选)包含 -p
选项以查看调整大小操作的进度。

注意
xfs_growfs
与 resize2fs
之间的主要区别是为识别文件系统而传递的参数。
xfs_growfs
采用挂载点,而resize2fs
采用逻辑卷名称。
总结
管理逻辑卷
- pvcreate、pvremove和pvdisplay 创建、删除和列出物理卷(PV)
- vgcreate、vgremove和vgdisplay 创建、删除和列出卷组(VG)
- lvcreate、lvremove和lvdisplay 创建、删除和列出逻辑卷(LV)
- 添加逻辑卷以 PV、VG、和 LV的先后顺序完成。
- 删除逻辑卷以 LV、VG、和 PV 的先后顺序完成。
扩展逻辑卷
- 使用 pvcreate 和 vgextend 扩展卷组(VG);使用vgdisplay 检查结果。
- 使用pvmove 和 vgreduce 缩减 VG 。
- 使用xfs_growfs 调整xfs 文件系统的大小。
- 使用 resize2fs 调整ext4 文件系统的大小。