Red Hat Training

A Red Hat training course is available for RHEL 8

第 15 章 控制 LVM 分配

默认情况下,卷组使用 normal 分配策略。这会根据常识性规则分配物理扩展,如不在同一个物理卷上放置并行条带。您可以使用 vgcreate 命令的 --alloc 参数指定不同的分配策略(contiguousanywherecling)。通常,只在特殊情况下需要指定非通常或非标准扩展分配时,才需要不同于 normal 的分配策略。

15.1. 从指定设备分配扩展

您可以使用命令行末尾的 device 参数以及 lvcreatelvconvert 命令来限制从特定的设备分配。您可以为每个设备指定实际的扩展范围,以提供更多控制。命令通过使用指定的物理卷(PV)作为参数,来只为新逻辑卷(LV)分配扩展。它使用每个 PV 的可用扩展,直到它们耗尽,然后使用列出的下一个 PV 中的扩展。如果所有列出的 PV 上没有足够的空间用于请求的 LV 大小,则命令失败。请注意,命令只从指定的 PV 分配。RAID LV 对单独的 raid 镜像或单独的条带使用顺序 PV 。如果 PV 对于整个 raid 镜像不够大,则生成的设备使用不是完全可预测的。

流程

  1. 创建卷组(VG):

    # vgcreate <vg_name> <PV> ...

    其中:

    • <vg_name> 是 VG 的名称。
    • <PV> 是 PV。
  2. 您可以分配 PV 来创建不同的卷类型,如 linear 或 raid :

    1. 分配扩展以创建线性卷:

      # lvcreate -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]

      其中:

      • <lv_name> 是 LV 的名称。
      • <lv_size> 是 LV 的大小。默认单位是 MB。
      • <vg_name> 是 VG 的名称。
      • [ <PV …​> ] 是 PV。

        您可以在命令行上指定其中一个 PV、所有 PV 或 none :

        • 如果您指定一个 PV,则会从其中为那个 LV 分配扩展。

          注意

          如果 PV 对于整个 LV 没有足够的空闲扩展,则 lvcreate 失败。

        • 如果您指定了两个 PV,则将从其中一个 PV 或两者的组合为那个 LV 分配扩展。
        • 如果没有指定任何 PV,则将从 VG 中的一个 PV 或者 VG 中所有 PV 的组合分配扩展。

          注意

          在这些情况下,LVM 可能无法使用所有命名的 PV 或可用的 PV。如果第一个 PV 对于整个 LV 有足够的空闲扩展,则可能不会使用其他 PV。但是,如果第一个 PV 没有一组空闲扩展的分配大小,则 LV 可能会从第一个 PV 中分配一部分,从第二个 PV 中分配一部分。

          例 15.1. 从一个 PV 中分配扩展

          在这个示例中,lv1 扩展将从 sda 分配。

          # lvcreate -n lv1 -L1G vg /dev/sda

          例 15.2. 从两个 PV 中分配扩展

          在这个示例中,lv2 扩展将从 sdasdb 或两者的组合中分配。

          # lvcreate -n lv2 L1G vg /dev/sda /dev/sdb

          例 15.3. 分配扩展,而不指定 PV

          在本例中,lv3 扩展将从 VG 中的一个 PV 或 VG 中所有 PV 的组合中分配。

          # lvcreate -n lv3 -L1G vg

          或者

    2. 分配扩展以创建 raid 卷:

      # lvcreate --type <segment_type> -m <mirror_images> -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]

      其中:

      • <segment_type> 是指定的片段类型(如 raid5mirrorsnapshot)。
      • <mirror_images> 使用创建一个带有指定的镜像数的 raid1 或镜像 LV。例如,-m 1 会产生一个带有两个镜像的 raid1 LV。
      • <lv_name> 是 LV 的名称。
      • <lv_size> 是 LV 的大小。默认单位是 MB。
      • <vg_name> 是 VG 的名称。
      • <[PV …​]> 是 PV。

        第一个 raid 镜像将从第一个 PV 中分配,第二个 raid 镜像将从第二个 PV 中分配,以此类推。

        例 15.4. 从两个 PV 中分配 raid 镜像

        在这个示例中,lv4 第一个 raid 镜像将从 sda 中分配,第二个镜像将从 sdb 中分配。

        # lvcreate --type raid1 -m 1 -n lv4 -L1G vg /dev/sda /dev/sdb

        例 15.5. 从三个 PV 中分配 raid 镜像

        在本例中,lv5 第一个 raid 镜像将从 sda 中分配,第二个镜像将从 sdb 中分配,第三个镜像将从 sdc 中分配。

        # lvcreate --type raid1 -m 2 -n lv5 -L1G vg /dev/sda /dev/sdb /dev/sdc

其他资源

  • lvcreate(8) 手册页
  • lvconvert(8) 手册页
  • lvmraid (7) 手册页