
# 磁盘空间不足
#### 问题描述
磁盘空间不足是Elasticsearch/OpenSearch的一个或多个磁盘分区已使用空间接近或达到其总容量上限。这种情况可能导致依赖该磁盘分区运行的服务出现性能下降、功能异常甚至完全停止。典型现象包括：
- 集群数据节点（含冷数据节点）容量超限，导致数据磁盘使用率超过90%。超过阈值的节点无法分配新分片，如果全部节点都超过90%阈值，则集群无法分配新分片，此时创建索引会导致集群状态变为red。
- 集群数据节点（含冷数据节点）容量超限，导致数据磁盘使用率超过95%。索引的任一分片所在节点磁盘使用率超过95%时，该索引进入只读保护模式，无法写入数据。
- 集群Merge大量数据或写入过快，索引来不及进入只读保护模式，导致磁盘使用率100%。数据磁盘打满，导致进程异常。磁盘使用率达到100%属于紧急情况，建议直接扩容解决。
 
#### 问题原因
- 分片不均：数据分片未均匀分布，部分节点磁盘使用率过高，导致服务异常。
- 磁盘本身容量不足： 分配给服务器或服务的磁盘分区容量本身就太小，无法满足当前业务需求。
 
#### 解决方法
1. 检查分片分布，查看各节点的分片数量，确认是否存在分片集中现象。
   ```
   GET _cat/shards?v
   ```
   当存在分片不均时，可以执行如下步骤修复：
   1. 通过_cluster/reroute API手动迁移分片到负载较低的节点。
      ```
      POST _cluster/reroute
      {
        "commands": [
          {
            "move": {
              "index": "index_name",// 目标索引名称
              "shard": 0,// 目标分片ID
              "from_node": "node1",// 源节点ID
              "to_node": "node2"// 目标节点ID，负载较低的节点
            }
          }
        ]
      }
      ```
      
   
   2. 减少副本数，降低存储开销。
      ```
      PUT /index_name/_settings
      {
        "number_of_replicas": 1
      }
      ```
      
    
2. 如果不存在分片不均的情况，则可以尝试清理数据，释放磁盘空间。 删除无用的索引数据。
   ```
   DELETE {index_name}
   ```
   
3. 数据清理无效果，则可以扩容磁盘，增加节点存储容量，提升磁盘空间。
 
