C.3. 区域操作

C.3.1. 创建 LVM 区域

您可以从 LVM 容器的可用空间创建 LVM 区域。如果容器中至少有一个可用空间范围,您可以创建一个新区域。

以下选项可用于创建 LVM 区域

名称

新区域的名称。

盘区

要分配给新区域的盘区数量。新区域必须至少有一个盘区,且不超过容器中可用的总空闲盘区数或 65534(以较小者为准)。如果您使用盘区选项,则会自动计算 size 选项的适当值。默认情况下,新区域使用容器中的所有可用盘区。

大小

新区域的大小。此大小必须是容器 PE 大小的倍数。如果您使用大小选项,则会自动计算 extents 选项的适当值。默认情况下,新区域使用容器中的所有可用空间。

条带

如果容器占用两个或多个对象,并且每个对象都有未分配的盘区,则新区域可以跨多个对象进行条带化。这类似于 RAID-0 条带化,并提高了跨多个对象的 I/O 吞吐量。此选项指定新区域应跨多少个对象进行条带化。默认情况下,新区域不进行条带化,此值设置为 1。

条带大小

条带化的粒度。默认值为 16 KB。仅当条带选项大于 1 时才使用此选项。

连续

此选项指定新区域必须在单个对象上分配,并且该对象上的盘区必须是物理上连续的。默认情况下,此项设置为 false,允许区域跨越对象。如果条带选项大于 1 时才使用此选项。

pv_names

新区域应映射到的对象名称列表。默认情况下,此列表为空,这意味着所有可用对象都将用于为新区域分配空间。

C.3.2. 扩展 LVM 区域

如果容器中有未使用的盘区,您可以扩展现有的 LVM 区域。如果区域是条带化的,则只能通过使用其条带化对象上的可用空间来扩展它。如果区域是使用 contiguous 选项创建的,则只有在当前已分配空间之后有物理上连续的空间时,才能扩展它。

以下选项可用于扩展 LVM 区域

添加盘区

要添加到区域的盘区数量。如果您指定此选项,则会自动计算 add_size 选项的适当值。默认情况下,区域将扩展以使用容器中的所有可用空闲盘区。

添加大小

要添加到区域的空间量。如果您指定此选项,则会自动计算 add_extents 选项的适当值。默认情况下,区域将扩展以使用容器中的所有可用空间。

pv_names

用于分配额外空间的对象名称列表。默认情况下,此列表为空,这意味着所有可用对象都将用于为区域分配新空间。

C.3.3. 缩小 LVM 区域

您可以通过从区域末尾删除盘区来缩小现有的 LVM 区域。区域必须至少有一个盘区,因此区域不能缩小为零。

缩小 LVM 区域时,可以使用以下选项。由于区域始终通过从区域末尾删除空间来缩小,因此在此命令中无法指定对象列表。

移除盘区

要从区域中移除的盘区数量。如果您指定此选项,则会自动计算移除大小选项的适当值。默认情况下,从区域中移除一个盘区。

移除大小

要缩小区域的空间量。如果您指定此选项,则会自动计算移除盘区选项的适当值。

C.3.4. 删除 LVM 区域

只要现有的 LVM 区域当前不是兼容性卷、EVMS 卷或被另一个 EVMS 插件使用,您就可以删除它。没有可用于删除 LVM 区域的选项。

C.3.5. 移动 LVM 区域

LVM 插件允许您更改 LVM 区域的逻辑到物理映射,并在过程中移动必要的数据。如果需要从容器中删除 PV,此功能最有用。目前有两个用于移动区域的 LVM 插件功能:move_pvmove_extent

C.3.5.1. move_pv

当需要从容器中删除 PV 时,必须将该 PV 上分配给区域的所有 PE 移动到其他 PV。 move_pv 命令允许您将 PE 移动到其他 PV。 move_pv 针对 LVM 容器,所需的 PV 用作选定的对象。以下选项可用

目标 PV

默认情况下,容器中所有剩余的 PV 都用于查找可用的盘区以移动 PE。您可以使用此选项指定 PV 的子集。

保持条带

当目标 PV 包含条带化区域时,有三种选择来处理移动属于这些区域的盘区

不必费心维护真正的条带化。此选项允许将盘区移动到区域已用于其他条带的 PV。这意味着性能将不如真正的条带化那样最佳,但在执行移动操作时允许最大的灵活性。此选择是 maintain_stripes 选项的默认值。

宽松

确保移动的盘区不会最终出现在条带化区域已使用的任何 PV 上。但是,这不能确保所有移动的盘区都最终出现在同一个 PV 上。例如,具有三个条带的区域最终可能会映射到四个或更多 PV。

严格

确保所有移动的盘区最终都出现在同一个 PV 上,从而确保使用与条带化区域最初使用的 PV 数量相同的 PV 进行真正的条带化。这是限制最多的选择,并且可能会阻止 move_pv 操作继续进行(取决于容器的特定配置)。

如果目标 PV 没有条带化区域,则 maintain_stripes 选项将被忽略。

C.3.5.2. move_extent

除了从一个 PV 移动所有盘区之外,LVM 插件还提供了移动单个盘区的功能。这允许对盘区的分配进行细粒度调整。此命令的目标是拥有要移动的盘区的区域。 move_extent 命令有三个必需的选项

le

要移动的逻辑盘区号。LE 编号从 0 开始。

pv

要将盘区移动到的目标对象。

pe

目标对象上的目标物理盘区。PE 编号也从 0 开始。

为了确定源 LE 和目标 PE,查看有关相关区域和容器的扩展信息通常很有帮助。以下是可用于收集此信息的命令行选项

要查看区域中 LE 的映射,请输入此命令

query:ei,<region_name>,Extents

要查看容器中 PV 的列表,请输入此命令

query:ei,<container_name>,Current_PVs

要查看所需目标 PV 的当前 PE 映射,请输入此命令

query:ei,<container_name>,PEMapPV#

# 是容器中目标 PV 的编号。

通过在所需区域和容器的上下文弹出菜单中使用“显示详细信息”项,也可以在 GUI 和文本模式 UI 中轻松获得此信息。

C.3.6. 重命名 LVM 区域

您可以重命名现有的 LVM 区域。在 EVMS GUI 和文本模式 UI 中,这是使用 modify properties 命令完成的,该命令可通过“操作”菜单或上下文相关弹出菜单获得。在 EVMS CLI 中,这是使用 set 命令完成的。

如果重命名的 LVM 区域上有兼容性卷,则该兼容性卷的名称也将更改。为了使其正常工作,必须在更改名称之前卸载该卷。另外,请务必更新您的/etc/fstab文件(如果列出了该卷),否则下次系统启动时将无法正确挂载该卷。

如果重命名的 LVM 区域具有 EVMS 卷或构建在其上的另一个存储对象,则区域的名称更改对于上层将是透明的。在这种情况下,可以在卷已挂载的情况下完成重命名。