
# CSS集群索引写入数据失败
#### 问题描述
向Elasticsearch/OpenSearch集群索引中写入数据失败，返回如下报错信息：
```
"reason": "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
```
索引被设置为只读模式（read-only / allow delete），所有写入操作（包括创建、更新文档）均被阻止。
#### 问题原因
当数据节点的磁盘使用率超过95%时，Elasticsearch/OpenSearch为了防止节点耗尽磁盘空间导致系统崩溃，自动将索引设置为只读模式（"index.blocks.read_only_allow_delete"设置为"true"）。在此模式下，所有写入请求被拒绝，仅保留删除权限以释放空间。
不同版本的自动恢复机制存在差异：
- Elasticsearch 7.10.2及OpenSearch版本：磁盘使用率下降后自动关闭只读模式，无需手动解除。
- Elasticsearch 7.10.2之前的版本：磁盘使用率下降后不会自动关闭只读模式，需手动解除。
 
#### 解决方法
1. 检查集群的监控指标，确认磁盘使用率，如磁盘使用率超过95%，则需清理或扩容磁盘。
2. 清理磁盘空间或扩容磁盘。
   - 清理磁盘：删除不再使用的索引或过期数据，释放磁盘空间。 执行以下命令，删除指定索引：
     ```
     DELETE /<索引名称>
     ```
     ![](https://support.huaweicloud.com/trouble-css/public_sys-resources/caution_3.0-zh-cn.png)
     删除索引操作不可恢复，请确认索引不再需要后再执行删除。
     
   
   - 扩容磁盘：在集群管理页面单击操作列的"更多 \> 形态变更"，扩容数据节点（或冷数据节点）的磁盘容量。
    
3. 解除索引只读模式。
   - **Elasticsearch 7.10.2及OpenSearch版本**
     该版本的集群磁盘使用率下降后会自动关闭只读模式。等待约1～2分钟后，重新尝试写入数据验证是否恢复正常。
     
   
   - **Elasticsearch 7.10.2之前的版本**
     该版本的集群磁盘使用率下降后不会自动关闭只读模式，需手动解除只读模式。
     1. 执行以下命令，解除所有索引的只读模式：
        ```
        PUT /_all/_settings
        {
          "index.blocks.read_only_allow_delete": null
        }
        ```
        ![](https://support.huaweicloud.com/trouble-css/public_sys-resources/caution_3.0-zh-cn.png)
        执行此命令前需确保磁盘使用率已下降至安全水位，否则解除只读模式后磁盘仍可能再次触发只读保护。
        
     
     2. 等待约1～2分钟后，重新尝试写入数据验证是否恢复正常。
      
    
4. 为避免故障再次发生，建议：
   - 定期监控节点磁盘使用率，配置告警阈值（建议85%）。
   
   - 定期清理过期索引和文档，释放磁盘空间。
   
   - 规划充足的存储容量，预留15%～20%的磁盘冗余空间。
    
 
