67.3. 管理 LVM 卷组
您可以创建并使用卷组(VG)来管理组合到单个存储实体中的多个物理卷(PV),并调整其大小。
扩展是您可以在 LVM 中分配的最小空间单位。物理扩展(PE)和逻辑扩展(LE)的默认大小为 4 MiB,您可以进行配置。所有扩展都有同样的大小。
当您在 VG 中创建逻辑卷(LV)时,LVM 会对 PV 分配物理扩展。LV 中的逻辑扩展与 VG 中的物理扩展一一对应。您不需要指定创建 LV 的 PE。LVM 将找到可用的 PE,并将它们拼凑在一起,来创建所需大小的LV。
在 VG 中,您可以创建多个 LV,每个 LV 就像一个传统的分区,但可以跨物理卷,并可以动态调整大小。VG 可以自动管理磁盘空间的分配。
67.3.1. 创建 LVM 卷组
您可以使用 vgcreate
命令创建卷组(VG)。您可以为非常大或非常小的卷调整扩展的大小,以优化性能和存储效率。您可以在创建 VG 时指定扩展的大小。要更改扩展的大小,您必须重新创建卷组。
先决条件
- 管理访问权限.
-
lvm2
软件包已安装。 - 创建一个或多个物理卷。有关创建物理卷的更多信息,请参阅 创建 LVM 物理卷。
步骤
列出并识别您要包含在 VG 中的 PV:
# pvs
创建 VG:
# vgcreate VolumeGroupName PhysicalVolumeName1 PhysicalVolumeName2
使用您要创建的卷组的名称替换 VolumeGroupName。将 PhysicalVolumeName 替换为 PV 的名称。
要在创建 VG 时指定扩展的大小,请使用
-s ExtentSize
选项。将 ExtentSize 替换为扩展的大小。如果没有提供大小的后缀,命令默认使用 MB。
验证
验证 VG 是否已创建:
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName 1 0 0 wz--n- 28.87g 28.87g
其他资源
-
您系统上的
vgcreate (8)
,vgs (8)
和pvs (8)
手册页
67.3.2. 在 web 控制台中创建卷组
从一个或多个物理驱动器或者其它存储设备创建卷组。
从卷组创建逻辑卷。每个卷组都可以包括多个逻辑卷。
先决条件
您已安装了 RHEL 8 web 控制台。
具体步骤请参阅安装并启用 Web 控制台。
-
cockpit-storaged
软件包已安装在您的系统上。 - 要创建卷组的物理驱动器或其他类型的存储设备。
步骤
登录到 RHEL 8 web 控制台。
详情请参阅 Web 控制台的日志记录。
- 点 。
- 在 Storage 表中,点菜单按钮。
从下拉菜单中选择 Create LVM2 volume group。
- 在 Name 字段中输入卷组的名称。名称不得包含空格。
选择您要组合的驱动器来创建卷组。
RHEL web 控制台仅显示未使用的块设备。如果您没有在列表中看到设备,请确保它没有被系统使用,或者将其格式化为空且未使用。使用的设备包括,例如:
- 使用文件系统格式化的设备
- 另一个卷组中的物理卷
- 物理卷是另一个软件 RAID 设备的成员
点
。已创建卷组。
验证
- 在 Storage 页面中,检查新卷组是否列在 Storage 表中。
67.3.3. 重命名 LVM 卷组
您可以使用 vgrename
命令重命名卷组(VG)。
先决条件
- 管理访问权限.
-
lvm2
软件包已安装。 - 创建一个或多个物理卷。有关创建物理卷的更多信息,请参阅 创建 LVM 物理卷。
- 已创建卷组。有关创建卷组的详情,请参考 第 67.3.1 节 “创建 LVM 卷组”。
步骤
列出并识别您要重命名的 VG:
# vgs
重命名 VG:
# vgrename OldVolumeGroupName NewVolumeGroupName
将 OldVolumeGroupName 替换为 VG 的名称。将 NewVolumeGroupName 替换为 VG 的新名称。
验证
验证 VG 是否有新名称:
# vgs VG #PV #LV #SN Attr VSize VFree NewVolumeGroupName 1 0 0 wz--n- 28.87g 28.87g
其他资源
-
vgrename (8)
,vgs (8)
手册页
67.3.4. 扩展 LVM 卷组
您可以使用 vgextend
命令将物理卷(PV)添加到卷组(VG)中。
先决条件
- 管理访问权限.
-
lvm2
软件包已安装。 - 创建一个或多个物理卷。有关创建物理卷的更多信息,请参阅 创建 LVM 物理卷。
- 已创建卷组。有关创建卷组的详情,请参考 第 67.3.1 节 “创建 LVM 卷组”。
步骤
列出并识别您要扩展的 VG:
# vgs
列出并识别您要添加到 VG 中的 PV:
# pvs
扩展 VG:
# vgextend VolumeGroupName PhysicalVolumeName
将 VolumeGroupName 替换为 VG 的名称。将 PhysicalVolumeName 替换为 PV 的名称。
验证
验证 VG 现在是否包含新 PV:
# pvs PV VG Fmt Attr PSize PFree /dev/sda VolumeGroupName lvm2 a-- 28.87g 28.87g /dev/sdd VolumeGroupName lvm2 a-- 1.88g 1.88g
其他资源
-
vgextend (8)
,vgs (8)
,pvs (8)
手册页
67.3.5. 合并 LVM 卷组
您可以使用 vgmerge
命令将两个现有的卷组(VG)合并。源卷将被合并到目标卷中。
先决条件
- 管理访问权限.
-
lvm2
软件包已安装。 - 创建一个或多个物理卷。有关创建物理卷的更多信息,请参阅 创建 LVM 物理卷。
- 创建两个或多个卷组。有关创建卷组的详情,请参考 第 67.3.1 节 “创建 LVM 卷组”。
步骤
列出并识别您要合并的 VG:
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 1 0 0 wz--n- 28.87g 28.87g VolumeGroupName2 1 0 0 wz--n- 1.88g 1.88g
将源 VG 合并到目标 VG 中:
# vgmerge VolumeGroupName2 VolumeGroupName1
将 VolumeGroupName2 替换为源 VG 的名称。将 VolumeGroupName1 替换为目标 VG 的名称。
验证
验证 VG 现在是否包含新 PV:
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 2 0 0 wz--n- 30.75g 30.75g
其他资源
-
您系统上的
vgmerge (8)
手册页
67.3.6. 从卷组中删除物理卷
要从卷组(VG)中删除未使用的物理卷(PV),请使用 vgreduce
命令。vgreduce
命令通过删除一个或多个空物理卷来缩小卷组的容量。这样就可以使不同的卷组自由使用那些物理卷,或者将其从系统中删除。
步骤
如果物理卷仍在使用,请将数据从同一卷组迁移到另一个物理卷中:
# pvmove /dev/vdb3 /dev/vdb3: Moved: 2.0% ... /dev/vdb3: Moved: 79.2% ... /dev/vdb3: Moved: 100.0%
如果现有卷组中的其他物理卷上没有足够的空闲扩展:
从 /dev/vdb4 创建一个新物理卷:
# pvcreate /dev/vdb4 Physical volume "/dev/vdb4" successfully created
将新创建的物理卷添加到卷组中:
# vgextend VolumeGroupName /dev/vdb4 Volume group "VolumeGroupName" successfully extended
将数据从 /dev/vdb3 移到 /dev/vdb4 中 :
# pvmove /dev/vdb3 /dev/vdb4 /dev/vdb3: Moved: 33.33% /dev/vdb3: Moved: 100.00%
从卷组中删除物理卷 /dev/vdb3:
# vgreduce VolumeGroupName /dev/vdb3 Removed "/dev/vdb3" from volume group "VolumeGroupName"
验证
验证 /dev/vdb3 物理卷是否已从 VolumeGroupName 卷组中删除:
# pvs PV VG Fmt Attr PSize PFree Used /dev/vdb1 VolumeGroupName lvm2 a-- 1020.00m 0 1020.00m /dev/vdb2 VolumeGroupName lvm2 a-- 1020.00m 0 1020.00m /dev/vdb3 lvm2 a-- 1020.00m 1008.00m 12.00m
其他资源
-
您系统上
vgreduce (8)
,pvmove (8)
和pvs (8)
手册页
67.3.7. 分割 LVM 卷组
如果在物理卷中有足够的空闲空间,就可在不添加新磁盘的情况下创建新的卷组。
在初始设置中,卷组 VolumeGroupName1 由 /dev/vdb1、/dev/vdb2 和 /dev/vdb3 组成。完成此流程后,卷组 VolumeGroupName1 将包含 /dev/vdb1 和 /dev/vdb2,第二个卷组 VolumeGroupName2 将包含 /dev/vdb3。
先决条件
-
卷组中有足够的空间。使用
vgscan
命令确定卷组中当前有多少可用空间。 -
根据现有物理卷中的可用容量,使用
pvmove
命令将所有使用的物理区块移动到其他物理卷。如需更多信息,请参阅从卷组中删除物理卷。
步骤
将现有卷组 VolumeGroupName1 分成新卷组 VolumeGroupName2 :
# vgsplit VolumeGroupName1 VolumeGroupName2 /dev/vdb3 Volume group "VolumeGroupName2" successfully split from "VolumeGroupName1"
注意如果您使用现有卷组创建了逻辑卷,请使用以下命令取消激活逻辑卷:
# lvchange -a n /dev/VolumeGroupName1/LogicalVolumeName
查看两个卷组的属性:
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 2 1 0 wz--n- 34.30G 10.80G VolumeGroupName2 1 0 0 wz--n- 17.15G 17.15G
验证
验证新创建的卷组 VolumeGroupName2 是否由 /dev/vdb3 物理卷组成:
# pvs PV VG Fmt Attr PSize PFree Used /dev/vdb1 VolumeGroupName1 lvm2 a-- 1020.00m 0 1020.00m /dev/vdb2 VolumeGroupName1 lvm2 a-- 1020.00m 0 1020.00m /dev/vdb3 VolumeGroupName2 lvm2 a-- 1020.00m 1008.00m 12.00m
其他资源
-
您系统上的
vgsplit (8)
,vgs (8)
和pvs (8)
手册页
67.3.8. 将卷组移动到另一个系统中
您可以使用以下命令将整个 LVM 卷组(VG)移到另一个系统中:
vgexport
- 在现有系统上使用此命令使系统无法访问不活跃的 VG。一旦 VG 无法访问,您可以分离其物理卷(PV)。
vgimport
- 在其他系统上使用以下命令使在旧系统中不活跃的 VG 在新系统中可访问。
先决条件
- 没有用户正在访问您要移动的卷组中活动卷上的文件。
步骤
卸载 LogicalVolumeName 逻辑卷:
# umount /dev/mnt/LogicalVolumeName
停用激活卷组中的所有逻辑卷,这可防止卷组上的任何进一步活动:
# vgchange -an VolumeGroupName vgchange -- volume group "VolumeGroupName" successfully deactivated
导出卷组,以防止其被您要删除它的系统访问:
# vgexport VolumeGroupName vgexport -- volume group "VolumeGroupName" successfully exported
查看导出的卷组:
# pvscan PV /dev/sda1 is in exported VG VolumeGroupName [17.15 GB / 7.15 GB free] PV /dev/sdc1 is in exported VG VolumeGroupName [17.15 GB / 15.15 GB free] PV /dev/sdd1 is in exported VG VolumeGroupName [17.15 GB / 15.15 GB free] ...
- 关闭您的系统,拔出组成卷组的磁盘,并将其连接到新系统。
将磁盘插入新系统,并导入卷组使其可以被新系统访问:
# vgimport VolumeGroupName
注意您可以使用
vgimport
命令的--force
参数导入缺少物理卷的卷组,然后运行vgreduce --removemissing
命令。激活卷组:
# vgchange -ay VolumeGroupName
挂载文件系统使其可使用:
# mkdir -p /mnt/VolumeGroupName/users # mount /dev/VolumeGroupName/users /mnt/VolumeGroupName/users
其他资源
-
您系统上的
vgimport (8)
,vgexport (8)
和vgchange (8)
手册页
67.3.9. 删除 LVM 卷组
您可以使用 vgremove
命令删除现有卷组。只有不包含逻辑卷的卷组才能被删除。
先决条件
- 管理访问权限.
步骤
确定卷组不包含逻辑卷:
# vgs -o vg_name,lv_count VolumeGroupName VG #LV VolumeGroupName 0
将 VolumeGroupName 替换为卷组的名称。
删除卷组:
# vgremove VolumeGroupName
将 VolumeGroupName 替换为卷组的名称。
其他资源
-
您系统上的
vgs (8)
,vgremove (8)
手册页
67.3.10. 在集群环境中删除 LVM 卷组
在集群环境中,LVM 使用 lockspace
<qualifier> 协调对在多个机器之间共享的卷组的访问。在删除卷组前您必须停止 lockspace
,以确保在删除过程中没有其他节点尝试访问或修改它。
先决条件
- 管理访问权限.
- 卷组没有包含逻辑卷。
步骤
确定卷组不包含逻辑卷:
# vgs -o vg_name,lv_count VolumeGroupName VG #LV VolumeGroupName 0
将 VolumeGroupName 替换为卷组的名称。
停止所有节点上的
lockspace
,但您要删除卷组的节点除外:# vgchange --lockstop VolumeGroupName
将 VolumeGroupName 替换为卷组的名称,并等待锁停止。
删除卷组:
# vgremove VolumeGroupName
将 VolumeGroupName 替换为卷组的名称。
其他资源
-
vgremove (8)
,vgchange (8)
手册页