--- title: "磁盘低水位线配置" date: 2026-01-27 lastmod: 2026-01-27 description: "cluster.routing.allocation.disk.watermark.low 配置项用于设置磁盘使用率的低水位线,超过此阈值时将阻止新分片分配到该节点。" tags: ["磁盘分配", "水位线", "分片分配", "磁盘管理"] summary: "配置项作用 # cluster.routing.allocation.disk.watermark.low 配置项用于设置磁盘使用率的低水位线。 当一个节点的磁盘使用率超过此阈值时: 不允许在该节点上分配新的分片 已存在的分片可以继续保留在节点上 这是防止磁盘空间不足的第一道防线,在达到高水位线之前就开始保护系统。 配置项属性 # 配置路径: cluster.routing.allocation.disk.watermark.low 数据类型: string(百分比或字节值) 默认值: 85% 是否可选: 是 是否动态: 是(支持动态更新) 配置项详解 # 工作机制 # 磁盘使用率监控 0% ─────────────────────────────────── 100% │ │ │ │ │ │ 低水位线 │ │ (默认 85%) │ │ │ │ │ │ 高水位线 │ │ │ (默认 90%) │ │ │ │ │ ├──────────────┼────┼───────────────────┤ 安全区 警告区 危险区 │ │ │ │ └──────────────┴────┴───────────────────┘ ↓ ↓ ↓ 正常分配 不分配 迁移分片 新分片 三阶段行为 # 阶段 1:安全区(使用率 < 低水位线) # 节点磁盘使用率: 75% (< 85%) 新分片分配请求 ↓ ✅ 允许分配 ↓ 新分片成功分配到此节点 阶段 2:警告区(低水位线 ≤ 使用率 < 高水位线) # 节点磁盘使用率: 87% (85% ≤ 87% < 90%) 新分片分配请求 ↓ ❌ 不允许分配 现有分片 ↓ ✅ 继续保留在节点上(不迁移) 阶段 3:危险区(使用率 ≥ 高水位线) # 节点磁盘使用率: 92% (≥ 90%) 新分片分配请求 ↓ ❌ 不允许分配 现有分片 ↓ ❌ 触发迁移到其他节点 配置建议 # 生产环境(标准) # cluster." --- ## 配置项作用 `cluster.routing.allocation.disk.watermark.low` 配置项用于设置磁盘使用率的**低水位线**。 当一个节点的磁盘使用率超过此阈值时: - 不允许在该节点上分配新的分片 - 已存在的分片可以继续保留在节点上 这是防止磁盘空间不足的第一道防线,在达到高水位线之前就开始保护系统。 ## 配置项属性 - **配置路径**: `cluster.routing.allocation.disk.watermark.low` - **数据类型**: `string`(百分比或字节值) - **默认值**: `85%` - **是否可选**: 是 - **是否动态**: 是(支持动态更新) ## 配置项详解 ## 工作机制 ``` 磁盘使用率监控 0% ─────────────────────────────────── 100% │ │ │ │ │ │ 低水位线 │ │ (默认 85%) │ │ │ │ │ │ 高水位线 │ │ │ (默认 90%) │ │ │ │ │ ├──────────────┼────┼───────────────────┤ 安全区 警告区 危险区 │ │ │ │ └──────────────┴────┴───────────────────┘ ↓ ↓ ↓ 正常分配 不分配 迁移分片 新分片 ``` ## 三阶段行为 ### 阶段 1:安全区(使用率 < 低水位线) ``` 节点磁盘使用率: 75% (< 85%) 新分片分配请求 ↓ ✅ 允许分配 ↓ 新分片成功分配到此节点 ``` ### 阶段 2:警告区(低水位线 ≤ 使用率 < 高水位线) ``` 节点磁盘使用率: 87% (85% ≤ 87% < 90%) 新分片分配请求 ↓ ❌ 不允许分配 现有分片 ↓ ✅ 继续保留在节点上(不迁移) ``` ### 阶段 3:危险区(使用率 ≥ 高水位线) ``` 节点磁盘使用率: 92% (≥ 90%) 新分片分配请求 ↓ ❌ 不允许分配 现有分片 ↓ ❌ 触发迁移到其他节点 ``` ## 配置建议 ## 生产环境(标准) ```yaml cluster.routing.allocation.disk.watermark.low: 85% ``` **建议**: 保持默认值 `85%`。这是与高水位线(90%)配合使用的标准配置。 ## 高磁盘利用率需求 ```yaml cluster.routing.allocation.disk.watermark.low: 90% cluster.routing.allocation.disk.watermark.high: 95% ``` **建议**: 同时提高低水位线和高水位线。当需要最大化磁盘利用率时使用。 ## 保守策略 ```yaml cluster.routing.allocation.disk.watermark.low: 80% cluster.routing.allocation.disk.watermark.high: 85% ``` **建议**: 同时降低低水位线和高水位线。当磁盘空间充裕且更关注安全时使用。 ## 快速增长的索引 ```yaml cluster.routing.allocation.disk.watermark.low: 75% cluster.routing.allocation.disk.watermark.high: 80% ``` **建议**: 设置更保守的水位线。当索引数据增长迅速时,提前触发保护机制。 ## 代码示例 ## easysearch.yml 配置 ```yaml cluster: routing: allocation: disk: watermark: low: 85% # 低水位线 high: 90% # 高水位线(必须高于低水位线) flood_stage: 95% ``` ## 使用字节值配置 ```yaml cluster: routing: allocation: disk: watermark: low: 150gb # 当剩余空间小于150GB时停止分配 high: 100gb # 当剩余空间小于100GB时迁移分片 ``` ## 动态更新 ```bash # 通过 API 动态更新低水位线 PUT _cluster/settings { "transient": { "cluster.routing.allocation.disk.watermark.low": "87%" } } ``` ## 查看当前配置 ```bash GET _cluster/settings?flat_settings=true ``` ## 相关配置 | 配置项 | 作用 | 默认值 | |--------|------|--------| | `cluster.routing.allocation.disk.watermark.high` | 磁盘高水位线 | 90% | | `cluster.routing.allocation.disk.watermark.flood_stage` | 磁盘洪水阶段水位线 | 95% | | `cluster.routing.allocation.disk.threshold_enabled` | 是否启用磁盘阈值检查 | true | | `cluster.routing.allocation.disk.reroute_interval` | 重路由间隔 | 60s | ## 水位线关系 ``` 必须满足: 低水位线 < 高水位线 < 洪水水位线 错误示例: low: 90%, high: 85% ❌ (低水位线不能高于高水位线) 正确示例: low: 85%, high: 90% ✅ low: 80%, high: 90% ✅ low: 85%, high: 95% ✅ ``` ## 支持的格式 | 格式类型 | 示例 | 说明 | |----------|------|------| | 百分比 | `85%`, `82.5%` | 基于磁盘总量的百分比 | | 字节值 | `150gb`, `500mb` | 绝对字节数 | | 字节值 | `200GB`, `1TB` | 大小写均可 | ## 分配决策流程 ``` 新分片分配请求 ↓ 检查节点磁盘使用率 ↓ ┌────────────────────────────────┐ │ 使用率 < 低水位线(85%) │ │ ↓ │ │ ✅ 允许分配 │ └────────────────────────────────┘ ↓ ┌────────────────────────────────┐ │ 低水位线 ≤ 使用率 < 高水位线 │ │ ↓ │ │ ❌ 不允许分配 │ │ (现有分片保留) │ └────────────────────────────────┘ ↓ ┌────────────────────────────────┐ │ 使用率 ≥ 高水位线(90%) │ │ ↓ │ │ ❌ 不允许分配 │ │ (现有分片迁移到其他节点) │ └────────────────────────────────┘ ``` ## 典型配置组合 | 场景 | low | high | 说明 | |------|-----|------|------| | 标准生产 | 85% | 90% | 默认配置 | | 高利用率 | 90% | 95% | 最大化磁盘使用 | | 保守策略 | 75% | 80% | 提前保护 | | 小磁盘节点 | 80% | 85% | 磁盘容量较小时 | | 大磁盘节点 | 90% | 95% | 磁盘容量充裕时 | ## 注意事项 1. **必须低于高水位线**: 配置的低水位线必须低于高水位线,否则配置验证会失败。 2. **动态更新**: 此配置支持动态更新,修改后立即影响分片分配决策。 3. **字节值一致性**: 使用字节值时,确保各节点磁盘大小相近。 4. **现有分片保护**: 超过低水位线后,现有分片不会被迁移,只是阻止新分片分配。 5. **未分配的主分片**: 即使超过低水位线,未分配的主分片仍会被分配到节点上(因为没有其他选择)。 6. **监控建议**: 设置监控在接近低水位线时告警,提前处理磁盘空间问题。 7. **定期检查**: 建议定期检查磁盘使用趋势,避免突然达到水位线。