--- title: "磁盘分配决策包含重定位分片配置" date: 2026-03-17 lastmod: 2026-03-17 description: "cluster.routing.allocation.disk.include_relocations 配置项用于控制磁盘空间计算时是否包含正在迁移的分片大小(已弃用)。" tags: ["磁盘分配", "分片迁移", "路由决策", "已弃用"] summary: "配置项作用 # cluster.routing.allocation.disk.include_relocations 配置项用于控制在计算节点磁盘使用量时,是否将正在迁移到该节点的分片大小计入磁盘使用量。 配置项属性 # 配置路径: cluster.routing.allocation.disk.include_relocations 数据类型: boolean 默认值: true 是否可选: 是 是否动态: 是(支持动态更新) 弃用状态: ⚠️ 已弃用,将在未来版本中移除 配置项详解 # 工作机制 # 节点磁盘使用量计算 当 include_relocations = true(默认): 磁盘使用量 = 已存在分片 + 正在迁入的分片 当 include_relocations = false: 磁盘使用量 = 已存在分片 场景说明 # 启用包含重定位(include_relocations = true) # 节点 A 正在接收分片 已存在分片: 80GB 正在迁入的分片: 15GB 计算的磁盘使用量: 80GB + 15GB = 95GB ↓ 更保守的磁盘估算 避免磁盘空间不足 禁用包含重定位(include_relocations = false) # 节点 A 正在接收分片 已存在分片: 80GB 正在迁入的分片: 15GB(不计入) 计算的磁盘使用量: 80GB ↓ 更激进的分配策略 可能导致磁盘空间不足 分配决策影响 # 此配置影响 DiskThresholdDecider 的决策:" --- ## 配置项作用 `cluster.routing.allocation.disk.include_relocations` 配置项用于控制在计算节点磁盘使用量时,是否将**正在迁移到该节点的分片**大小计入磁盘使用量。 ## 配置项属性 - **配置路径**: `cluster.routing.allocation.disk.include_relocations` - **数据类型**: `boolean` - **默认值**: `true` - **是否可选**: 是 - **是否动态**: 是(支持动态更新) - **弃用状态**: ⚠️ **已弃用**,将在未来版本中移除 ## 配置项详解 ## 工作机制 ``` 节点磁盘使用量计算 当 include_relocations = true(默认): 磁盘使用量 = 已存在分片 + 正在迁入的分片 当 include_relocations = false: 磁盘使用量 = 已存在分片 ``` ## 场景说明 ### 启用包含重定位(include_relocations = true) ``` 节点 A 正在接收分片 已存在分片: 80GB 正在迁入的分片: 15GB 计算的磁盘使用量: 80GB + 15GB = 95GB ↓ 更保守的磁盘估算 避免磁盘空间不足 ``` ### 禁用包含重定位(include_relocations = false) ``` 节点 A 正在接收分片 已存在分片: 80GB 正在迁入的分片: 15GB(不计入) 计算的磁盘使用量: 80GB ↓ 更激进的分配策略 可能导致磁盘空间不足 ``` ## 分配决策影响 此配置影响 DiskThresholdDecider 的决策: - **true**: 更保守,确保有足够空间容纳所有正在进行的迁移 - **false**: 更激进,只考虑已完成的分片,可能触发更多分片迁入 ## 配置建议 ## ⚠️ 重要提示 此配置项**已被标记为弃用**,将在未来版本中移除。建议: - **保持默认值**: 继续使用 `true`,这是最安全的配置 - **为未来升级准备**: 未来版本可能会固定使用 `true` 的行为 ## 生产环境 ```yaml cluster.routing.allocation.disk.include_relocations: true ``` **建议**: 保持默认值 `true`。这确保了磁盘空间计算的准确性,避免因正在进行迁移的分片导致磁盘空间不足。 ## 代码示例 ## easysearch.yml 配置 ```yaml cluster: routing: allocation: disk: include_relocations: true # 默认值,推荐保持 ``` ## 动态更新(不推荐,已弃用) ```bash PUT _cluster/settings { "transient": { "cluster.routing.allocation.disk.include_relocations": false } } # 警告:此配置已弃用 ``` ## 相关配置 | 配置项 | 作用 | 默认值 | |--------|------|--------| | `cluster.routing.allocation.disk.watermark.low` | 磁盘低水位线 | 85% | | `cluster.routing.allocation.disk.watermark.high` | 磁盘高水位线 | 90% | | `cluster.routing.allocation.disk.threshold_enabled` | 是否启用磁盘阈值检查 | true | ## 行为对比 | include_relocations | 磁盘计算方式 | 分配行为 | |---------------------|-------------|---------| | true | 包含正在迁入的分片 | 更保守,防止超额分配 | | false | 不包含正在迁入的分片 | 更激进,可能超额分配 | ## 示例场景 假设节点有 100GB 磁盘空间,当前已使用 80GB,水位线设置为 90%: | 设置 | 正在迁入 | 计算使用率 | 是否允许新分片迁入 | |------|---------|-----------|------------------| | true | 15GB | (80+15)/100 = 95% | ❌ 否(超过90%) | | false | 15GB | 80/100 = 80% | ✅ 是(低于90%) | ## 注意事项 1. **已弃用**: 此配置项已被标记为弃用,将在未来版本中移除。 2. **默认行为**: 默认值 `true` 是最安全的配置,建议保持不变。 3. **升级影响**: 未来版本升级时,此配置将被移除,系统行为将固定为 `true`。 4. **磁盘安全**: 保持 `true` 可以防止因正在进行的迁移导致磁盘空间不足。 5. **重路由间隔**: 配合 `cluster.routing.allocation.disk.reroute_interval` 使用,控制重路由的频率。