You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenSearch触发flood-stage watermark报错但存储空间充足问题排查

问题根因
  • 触发磁盘洪泛水位线后,OpenSearch会给对应索引加上read-only-allow-delete只读块,这个块是持久化生效的,不会因为后续磁盘空间恢复自动移除,这是你明明剩余存储空间充足依然无法写入的直接原因。
  • 你是单节点部署,但索引默认配置了1个副本分片,OpenSearch不允许主副分片分配到同一个节点,导致副本分片长期处于未分配状态,集群状态持续为Yellow,从你调用_cluster/allocation/explain返回的same_shard拦截规则就能验证这个问题。
  • 你当前使用的配置文件是多节点生产集群模板,其中gateway.recover_after_nodes: 3等配置和单节点部署模式不匹配,会干扰集群恢复阶段的状态判断,增加异常触发概率。
  • MacOS本地APFS文件系统的可用空间计算机制、Homebrew安装版本的目录权限问题,偶尔会导致OpenSearch拿到的磁盘可用空间数值和系统实际显示值不一致,也可能是最初触发洪泛水位线的诱因。
修复步骤

按顺序执行以下操作即可恢复正常写入:

  1. 清除所有索引的只读块
    执行如下命令调用集群设置接口,移除全局的只读限制:
    curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
    
    执行完等待10秒左右可以先尝试写入,确认429报错是否消失。
  2. 调整副本配置适配单节点模式
    单节点部署不需要保留副本分片,先修改默认索引模板,保证后续新建的索引默认副本数为0:
    curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_template/single_node_default -d '{"index_patterns":["*"],"settings":{"number_of_replicas":0}}'
    
    再修改现有问题索引的副本数,清除未分配的异常分片:
    curl -XPUT -H "Content-Type: application/json" http://localhost:9200/english_minus_nouns/_settings -d '{"number_of_replicas":0}'
    
    执行完成后调用http://localhost:9200/_cluster/health查看集群状态,确认status变为Green即可。
  3. 修正配置文件的不兼容项
    打开你的opensearch.yml配置文件,注释或删除以下和单节点部署不匹配的配置项:
    # 注释掉该行,单节点恢复不需要等待3个节点上线
    #gateway.recover_after_nodes: 3
    # 本地测试环境建议注释锁内存配置,避免MacOS权限不足导致启动异常
    #bootstrap.memory_lock: true
    
    修改完成后重启OpenSearch服务,Homebrew安装版本可直接执行brew services restart opensearch完成重启。
  4. (可选)调整磁盘水位线阈值适配本地环境
    如果后续依然偶发磁盘水位线误报,可以通过接口调宽松阈值,本地开发环境使用无风险:
    curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_cluster/settings -d '{
        "transient": {
            "cluster.routing.allocation.disk.watermark.low": "90%",
            "cluster.routing.allocation.disk.watermark.high": "95%",
            "cluster.routing.allocation.disk.watermark.flood_stage": "99%"
        }
    }'
    
注意事项
  • 以上配置仅适用于本地单节点测试环境,生产多节点集群请勿调整副本数为0,也不要过度放宽磁盘水位线阈值。
  • 日常使用如果遇到磁盘占满触发只读块的情况,清理磁盘空间后也需要手动执行第一步的清除块命令,集群不会自动恢复写入权限。

内容的提问来源于stack exchange,提问作者Xavi Font

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:21:18