|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
安排日程
SUSE Storage 根据多个因素调度副本。
调度策略
SUSE Storage 的调度策略分为两个阶段。调度器只有在满足前一个阶段的情况下才会进入下一个阶段。否则,调度将失败。
如果任何标签被设置为调度选择,节点标签和磁盘标签在选择节点或磁盘时必须匹配。
第一阶段是 节点和区域选择阶段。SUSE Storage 根据 Replica Node Level Soft Anti-Affinity 和 Replica Zone Level Soft Anti-Affinity 设置过滤节点和区域。
第二阶段是 磁盘选择阶段。SUSE Storage 根据 Replica Disk Level Soft Anti-Affinity、Storage Minimal Available Percentage、Storage Over Provisioning Percentage 以及其他与磁盘相关的因素(如请求的磁盘空间)过滤满足第一阶段的磁盘。
节点和区域选择阶段
SUSE Storage 根据一系列标准评估哪些节点适合调度新的副本。决策过程遵循特定顺序,以确保容错的最佳放置。
1.节点标签匹配
SUSE Storage 首先检查卷上的节点选择器标签。
-
如果卷有节点选择器标签,只有匹配标签的节点才有资格。
-
如果卷没有 节点选择器,则行为取决于 允许空节点选择器卷 设置:
-
true(默认):在 有或没有标签的节点 上调度。 -
false:仅 在 无标签 的节点上调度。
3.节点和区域之间的反亲和性规则
SUSE Storage 优先在不同的 节点 和 区域 之间分散副本,以提高容错能力。一个 "新" 节点或区域是指当前 不*托管该卷的任何副本,而一个 *"现有" 节点或区域已经托管该卷的副本。
调度程序尝试将新的副本放置在尽可能"隔离"的位置,遵循以下偏好层次:
-
新节点在新区域(最优先)
-
新节点在现有区域
-
现有节点在现有区域(最不优先)
下表详细说明了在每种情况下调度副本所需的设置:
| 情景 | 副本区域级别软反亲和性 | 副本节点级别软反亲和性 | 调度程序操作 |
|---|---|---|---|
新节点在新区域 |
|
|
调度 副本。 |
任何其他值 |
任何其他值 |
不 调度副本。 |
|
新节点在现有区域 |
|
|
如果没有新的区域可用,*调度*副本。 |
任何其他值 |
任何其他值 |
不 调度副本。 |
|
现有区域中的现有节点 |
|
|
如果没有其他选项可用,*调度*副本。 |
任何其他值 |
任何其他值 |
不 调度副本。 |
磁盘选择阶段
在节点和区域选择阶段之后,SUSE Storage 确定是否可以在所选节点的任何磁盘上调度副本。它根据匹配的标签、总磁盘空间和可用磁盘空间检查可用磁盘。它还考虑是否已经存在另一个副本以及反亲和性设置。
SUSE Storage 检查所选节点上的所有可用磁盘,以确保它们满足以下标准:
-
磁盘标签匹配:
-
如果卷具有磁盘标签,则磁盘必须匹配副本所需的任何指定标签。
-
如果卷没有磁盘标签,则行为取决于 允许空磁盘选择器卷 设置:
-
true(默认):允许在有标签或无标签的磁盘上调度。 -
false:仅允许在无标签的磁盘上调度。
-
-
-
可用空间检查:
-
磁盘必须根据配置的
Storage Minimal Available Percentage具有足够的可用空间。
-
-
反亲和性设置:
-
硬反亲和性:防止在已经托管同一卷的另一个副本的磁盘上调度副本。
-
软反亲和性(启用时):优先在没有现有副本的磁盘上调度副本,即使在空间或其他因素上不是最佳选择。
-
-
空间条件:两个公式决定磁盘是否可调度:
-
实际空间使用条件:确保在考虑当前使用的空间后,仍然有足够的可用存储。
-
公式:
(Storage Available - Actual Size) > (Storage Maximum × Minimal Available Percentage) / 100
-
-
调度空间条件:确保副本的大小(加上任何已调度但未写入的数据)符合超额配置限制。
-
公式:
(Size + Storage Scheduled) ⇐ ((Storage Maximum - Storage Reserved) × Over Provisioning Percentage) / 100
-
-
|
在磁盘评估期间,由于尚未调度特定副本, |
如果这些条件中的任何一个失败,包括磁盘标签、反亲和性或空间要求,则该磁盘被标记为不可调度,SUSE Storage将不会在该磁盘上放置副本。
示例场景
考虑一个节点(节点 A)有两个磁盘:
-
磁盘 X:1 GB 可用,最大空间 4 GB
-
磁盘 Y:2 GB 可用,最大空间 8 GB
阶段 1:初始磁盘评估
在初始磁盘选择阶段,SUSE Storage对所有可用磁盘进行基本检查。此时,尚未选择特定副本,因此`Actual Size`和`Size`被视为`0`。
磁盘 X 评估
-
可用空间:1 GB
-
Storage Minimal Available Percentage:25%(默认) -
最低要求可用空间:
(4 GB × 25) / 100 = 1 GB -
结果:磁盘 X 未能通过
Actual Space Usage Condition,因为其可用空间(1 GB)等于或小于最低要求(1 GB)。因此,除非将Storage Minimal Available Percentage设置为0,否则磁盘 X 不可调度。
磁盘 Y 评估
-
可用空间:2 GB
-
Storage Minimal Available Percentage:10% -
最低要求可用空间:
(8 GB × 10) / 100 = 0.8 GB -
结果:磁盘 Y 通过
Actual Space Usage Condition,因为其可用空间(2 GB)大于最低要求(0.8 GB)。
接下来,我们检查 Scheduling Space Condition:
-
调度空间:2 GB
-
Storage Reserved:1 GB -
Over Provisioning Percentage:100%(默认) -
最大可分配存储:
(8 GB - 1 GB) × 100 / 100 = 7 GB -
结果:磁盘 Y 通过
Scheduling Space Condition,因为当前调度的空间(2 GB)小于最大可分配存储(7 GB)。
由于磁盘 Y 满足所有条件,因此被标记为可调度的磁盘候选。
调度算法
在识别出满足所有调度要求的候选磁盘后,最后一步是选择最佳磁盘用于副本。此选择是通过平衡算法确定的,该算法旨在在节点和磁盘之间均匀分配副本。
可用存储的平衡因子公式
-
Disk_Usable_Storage = (Disk.StorageAvailable - Disk.StorageReserved) - Disk.StorageScheduled -
较低的分数 = 更均衡的分配。
公式:
BalanceScore(X) = (max(X) - min(X)) / mean(X)
其中:
-
X= 可用存储值的集合(每个节点或每个磁盘)。
选择处理:
-
模拟在每个候选节点上放置副本,并计算结果平衡分数。
→ 选择分数最低的节点(最均衡的分配)。 -
在选定的节点内,模拟在每个候选磁盘上的放置,并再次计算平衡分数。
→ 选择其中分数最低的磁盘。
示例场景
假设集群有两个节点,每个节点包含两个符合副本调度条件的候选磁盘。
副本大小 = 100 GiB。
| 节点 | 磁盘 | 可用存储(GiB) |
|---|---|---|
节点 A |
A1 |
900 |
节点 A |
A2 |
100 |
节点 B |
B1 |
600 |
节点 B |
B2 |
700 |
第 1 步:节点选择
模拟在节点 A 上放置
新总数:
-
节点 A = (900 + 100) − 100 = 900
-
节点 B = (600 + 700) = 1300
节点平衡分数:
BalanceScore_NodeA = (1300 - 900) / ((1300 + 900) / 2)
= 400 / 1100
≈ 0.364
模拟在节点 B 上放置
新总数:
-
节点 A = (900 + 100) = 1000
-
节点 B = (600 + 700) - 100 = 1200
节点平衡分数:
BalanceScore_NodeB = (1200 - 1000) / ((1200 + 1000) / 2)
= 200 / 1100
≈ 0.182
选择 节点 B(分数较低,更加平衡)。
第二步:磁盘选择
模拟在 B1 上放置(600 → 500)
新磁盘可用:B1 = 500, B2 = 700
磁盘平衡分数:
BalanceScore_DiskB1 = (700 - 500) / ((700 + 500) / 2)
= 200 / 600
≈ 0.333
模拟在 B2 上放置(700 → 600)
新磁盘可用:B1 = 600,B2 = 600
磁盘平衡分数:
BalanceScore_DiskB2 = (600 - 600) / ((600 + 600) / 2)
= 0 / 600
= 0
选择 磁盘 B2(B1 和 B2 之间的完美平衡)。