DISK_WATERMARK_BLOCK
elasticsearch
resource_error
ai_generated
true
ClusterBlockException: index [my_index] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]; disk usage exceeded threshold [95%] on node [node-1]
ID: elasticsearch/index-blocked-by-disk-threshold
85%Fix Rate
90%Confidence
1Evidence
2023-08-25First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| Elasticsearch 7.10 | active | — | — | — |
| Elasticsearch 8.0 | active | — | — | — |
| Elasticsearch 8.9 | active | — | — | — |
Root Cause
Disk usage on a node exceeded the high watermark (default 95%), causing Elasticsearch to block write operations to protect against data loss.
generic中文
节点上的磁盘使用率超过了高水位线(默认95%),导致Elasticsearch阻止写入操作以防止数据丢失。
Official Documentation
https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-usage-exceeded.htmlWorkarounds
-
90% success Free disk space by deleting old indices or moving data: `POST _reindex {"source": {"index": "old_index"}, "dest": {"index": "new_index"}}` then delete old index
Free disk space by deleting old indices or moving data: `POST _reindex {"source": {"index": "old_index"}, "dest": {"index": "new_index"}}` then delete old index -
85% success Increase disk capacity by adding a new node or expanding storage, then rebalance shards: `PUT _cluster/settings {"transient": {"cluster.routing.rebalance.enable": "all"}}`
Increase disk capacity by adding a new node or expanding storage, then rebalance shards: `PUT _cluster/settings {"transient": {"cluster.routing.rebalance.enable": "all"}}` -
70% success Temporarily disable the disk allocation decider to allow writes: `PUT _cluster/settings {"transient": {"cluster.routing.allocation.disk.threshold_enabled": false}}` (use with caution)
Temporarily disable the disk allocation decider to allow writes: `PUT _cluster/settings {"transient": {"cluster.routing.allocation.disk.threshold_enabled": false}}` (use with caution)
中文步骤
通过删除旧索引或移动数据释放磁盘空间:`POST _reindex {"source": {"index": "old_index"}, "dest": {"index": "new_index"}}` 然后删除旧索引通过添加新节点或扩展存储增加磁盘容量,然后重新平衡分片:`PUT _cluster/settings {"transient": {"cluster.routing.rebalance.enable": "all"}}`临时禁用磁盘分配决策器以允许写入:`PUT _cluster/settings {"transient": {"cluster.routing.allocation.disk.threshold_enabled": false}}`(谨慎使用)
Dead Ends
Common approaches that don't work:
-
Manually removing the index block with `PUT my_index/_settings {"index.blocks.read_only_allow_delete": null}` without freeing disk space
90% fail
The block will be reapplied by the cluster when the next disk check runs, as disk usage remains high.
-
Increasing the disk watermark thresholds in elasticsearch.yml (e.g., `cluster.routing.allocation.disk.watermark.high: 98%`)
70% fail
This only delays the problem and risks data loss if disk fills completely.
-
Deleting the index entirely to free space
50% fail
This is a destructive action that may cause data loss; it should only be a last resort.