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 物理卷

步骤

  1. 列出并识别您要包含在 VG 中的 PV:

    # pvs
  2. 创建 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 软件包已安装在您的系统上。
  • 要创建卷组的物理驱动器或其他类型的存储设备。

步骤

  1. 登录到 RHEL 8 web 控制台。

    详情请参阅 Web 控制台的日志记录

  2. Storage
  3. Storage 表中,点菜单按钮。
  4. 从下拉菜单中选择 Create LVM2 volume group

    Image displaying the available options in the Storage table drop-down menu. Selecting Create LVM2 volume group.

  5. Name 字段中输入卷组的名称。名称不得包含空格。
  6. 选择您要组合的驱动器来创建卷组。

    cockpit create volume group

    RHEL web 控制台仅显示未使用的块设备。如果您没有在列表中看到设备,请确保它没有被系统使用,或者将其格式化为空且未使用。使用的设备包括,例如:

    • 使用文件系统格式化的设备
    • 另一个卷组中的物理卷
    • 物理卷是另一个软件 RAID 设备的成员
  7. Create

    已创建卷组。

验证

  • Storage 页面中,检查新卷组是否列在 Storage 表中。

67.3.3. 重命名 LVM 卷组

您可以使用 vgrename 命令重命名卷组(VG)。

先决条件

步骤

  1. 列出并识别您要重命名的 VG:

    # vgs
  2. 重命名 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)中。

先决条件

步骤

  1. 列出并识别您要扩展的 VG:

    # vgs
  2. 列出并识别您要添加到 VG 中的 PV:

    # pvs
  3. 扩展 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)合并。源卷将被合并到目标卷中。

先决条件

步骤

  1. 列出并识别您要合并的 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
  2. 将源 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 命令通过删除一个或多个空物理卷来缩小卷组的容量。这样就可以使不同的卷组自由使用那些物理卷,或者将其从系统中删除。

步骤

  1. 如果物理卷仍在使用,请将数据从同一卷组迁移到另一个物理卷中:

    # pvmove /dev/vdb3
      /dev/vdb3: Moved: 2.0%
     ...
      /dev/vdb3: Moved: 79.2%
     ...
      /dev/vdb3: Moved: 100.0%
  2. 如果现有卷组中的其他物理卷上没有足够的空闲扩展:

    1. /dev/vdb4 创建一个新物理卷:

      # pvcreate /dev/vdb4
        Physical volume "/dev/vdb4" successfully created
    2. 将新创建的物理卷添加到卷组中:

      # vgextend VolumeGroupName /dev/vdb4
        Volume group "VolumeGroupName" successfully extended
    3. 将数据从 /dev/vdb3 移到 /dev/vdb4 中 :

      # pvmove /dev/vdb3 /dev/vdb4
        /dev/vdb3: Moved: 33.33%
        /dev/vdb3: Moved: 100.00%
  3. 从卷组中删除物理卷 /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 命令将所有使用的物理区块移动到其他物理卷。如需更多信息,请参阅从卷组中删除物理卷

步骤

  1. 将现有卷组 VolumeGroupName1 分成新卷组 VolumeGroupName2

    # vgsplit VolumeGroupName1 VolumeGroupName2 /dev/vdb3
      Volume group "VolumeGroupName2" successfully split from "VolumeGroupName1"
    注意

    如果您使用现有卷组创建了逻辑卷,请使用以下命令取消激活逻辑卷:

    # lvchange -a n /dev/VolumeGroupName1/LogicalVolumeName
  2. 查看两个卷组的属性:

    # 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 在新系统中可访问。

先决条件

  • 没有用户正在访问您要移动的卷组中活动卷上的文件。

步骤

  1. 卸载 LogicalVolumeName 逻辑卷:

    # umount /dev/mnt/LogicalVolumeName
  2. 停用激活卷组中的所有逻辑卷,这可防止卷组上的任何进一步活动:

    # vgchange -an VolumeGroupName
    vgchange -- volume group "VolumeGroupName" successfully deactivated
  3. 导出卷组,以防止其被您要删除它的系统访问:

    # vgexport VolumeGroupName
    vgexport -- volume group "VolumeGroupName" successfully exported
  4. 查看导出的卷组:

    # 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]
      ...
  5. 关闭您的系统,拔出组成卷组的磁盘,并将其连接到新系统。
  6. 将磁盘插入新系统,并导入卷组使其可以被新系统访问:

    # vgimport VolumeGroupName
    注意

    您可以使用 vgimport 命令的 --force 参数导入缺少物理卷的卷组,然后运行 vgreduce --removemissing 命令。

  7. 激活卷组:

    # vgchange -ay VolumeGroupName
  8. 挂载文件系统使其可使用:

    # mkdir -p /mnt/VolumeGroupName/users
    # mount /dev/VolumeGroupName/users /mnt/VolumeGroupName/users

其他资源

  • 您系统上的 vgimport (8), vgexport (8)vgchange (8) 手册页

67.3.9. 删除 LVM 卷组

您可以使用 vgremove 命令删除现有卷组。只有不包含逻辑卷的卷组才能被删除。

先决条件

  • 管理访问权限.

步骤

  1. 确定卷组不包含逻辑卷:

    # vgs -o vg_name,lv_count VolumeGroupName
    
      VG               #LV
      VolumeGroupName    0

    VolumeGroupName 替换为卷组的名称。

  2. 删除卷组:

    # vgremove VolumeGroupName

    VolumeGroupName 替换为卷组的名称。

其他资源

  • 您系统上的 vgs (8), vgremove (8) 手册页

67.3.10. 在集群环境中删除 LVM 卷组

在集群环境中,LVM 使用 lockspace <qualifier> 协调对在多个机器之间共享的卷组的访问。在删除卷组前您必须停止 lockspace,以确保在删除过程中没有其他节点尝试访问或修改它。

先决条件

  • 管理访问权限.
  • 卷组没有包含逻辑卷。

步骤

  1. 确定卷组不包含逻辑卷:

    # vgs -o vg_name,lv_count VolumeGroupName
    
      VG               #LV
      VolumeGroupName    0

    VolumeGroupName 替换为卷组的名称。

  2. 停止所有节点上的 lockspace,但您要删除卷组的节点除外:

    # vgchange --lockstop VolumeGroupName

    VolumeGroupName 替换为卷组的名称,并等待锁停止。

  3. 删除卷组:

    # vgremove VolumeGroupName

    VolumeGroupName 替换为卷组的名称。

其他资源

  • vgremove (8), vgchange (8) 手册页
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.