B.5. 调整 MD 区域大小

可以调整 RAID 区域的大小,以便扩展或缩小区域中可用的数据空间。每种 RAID 级别都有不同的特性,因此每种 RAID 级别对于何时以及如何扩展或缩小都有不同的要求。

有关调整 EVMS 卷和对象大小的常规信息,请参阅第 16 章

B.5.1. 线性 (Linear)

线性 RAID 区域可以通过两种方式扩展。首先,如果线性 RAID 区域中的最后一个子对象是可扩展的,则可以扩展该对象,并且 RAID 区域可以扩展到该新空间。其次,可以在区域末尾添加一个或多个新对象。

同样,线性 RAID 区域可以通过两种方式缩小。如果区域中的最后一个子对象是可缩小的,则可以缩小该对象,并且 RAID 区域将缩小相同的量。此外,可以从 RAID 区域的末尾删除一个或多个对象(但不能删除区域中的第一个对象)。

线性 RAID 区域可以在活动和使用中时调整大小。

B.5.2. RAID-0

您可以通过向 RAID-0 区域添加一个新对象来扩展该区域。您可以通过删除区域中最多 N-1 个当前子对象来缩小 RAID-0 区域,其中区域中有 N 个对象。

由于 RAID-0 区域在子对象之间进行条带化,因此当调整 RAID-0 区域大小时,必须对数据进行“重新条带化”,以适应新的对象数量。这意味着 MD 插件会将每个数据块从其在当前区域中的位置移动到扩展区域中的适当位置。请注意,重新条带化过程可能需要很长时间。目前,没有加快或减慢重新条带化过程的机制。EVMS GUI 和文本模式用户界面将指示重新条带化的进度。请不要尝试在重新条带化完成之前中断它,因为 RAID-0 区域中的数据很可能会损坏。

RAID-0 区域在调整大小之前必须停用,以防止在数据重新条带化时发生数据损坏。

重要提示:在尝试调整 RAID-0 大小之前,请准备好合适的备份。如果在重新条带化过程完成之前中断(例如,EVMS 进程被终止、机器崩溃或 RAID 区域中的子对象开始返回 I/O 错误),则无法在所有情况下确保该区域的状态。

EVMS 将尝试恢复 RAID-0 大小调整期间出现的问题。MD 插件会跟踪 MD 元数据中大小调整的进度。每次移动数据块时,都会更新 MD 元数据以反映当前正在处理的数据块。如果在调整大小期间 EVMS 或机器崩溃,则下次运行 EVMS 时,MD 插件将尝试根据最新的元数据信息恢复该区域的状态。如果正在进行扩展,则区域将“回滚”到扩展之前的状态。如果正在进行缩小,则缩小将从停止的点继续。但是,这种恢复并不总是足以确保整个卷堆栈处于正确的状态。如果 RAID-0 区域直接制成卷,则很可能会恢复到正确的状态。另一方面,如果 RAID 区域是 LVM 容器中的已消耗对象,或者是另一个 RAID 区域的子对象,则这些插件的元数据可能并不总是处于正确的状态,并且可能位于 RAID 区域上的错误位置。因此,构建在 RAID-0 区域之上的容器、对象和卷可能无法反映正确的大小,甚至可能无法被发现。

B.5.3. RAID-1

如果所有子对象都可以同时调整相同的大小,则可以调整 RAID-1 区域的大小。

RAID-1 区域不能通过添加额外的对象来调整大小。这种类型的操作称为“添加活动对象”,并在第 B.3.3 节中讨论。

RAID-1 区域在调整大小之前必须停用。

B.5.4. RAID-4/5

调整 RAID-4/5 区域的大小遵循与调整 RAID-0 区域大小相同的规则和限制。通过向 RAID-4/5 区域添加一个新对象来扩展该区域。通过删除区域中最多 N-1 个当前子对象来缩小 RAID-4/5 区域,其中区域中有 N 个对象。

有关如何执行此功能的信息,请参阅第 B.5.2 节

与 RAID-0 一样,RAID-4/5 区域在调整大小之前必须停用。