
# 磁盘使用率高问题排查
#### 操作场景
随着业务数据持续增长，集合的数据量会随之增加，导致磁盘占用不断上升。索引数量过多或单个索引过大都会占用磁盘空间，有时索引大小甚至会接近或超过业务数据本身。高频写入场景下，当写入压力增大时，数据文件、索引和内部存储结构都会变得更加活跃，磁盘使用率会更快上升。使用文档数据库服务时，若磁盘使用率持续处于高位，会导致数据读写处理性能下降，进而影响业务的正常运行。本章节旨在帮助您分析并解决DDS实例磁盘使用率过高的问题。
#### 操作步骤
#### 查看磁盘使用情况
DDS目前提供以下两种方法查看实例磁盘的使用情况，具体如下：
1. 通过DDS控制台查看磁盘使用情况。 您可以登录DDS控制台，单击目标实例名称，进入"基本信息"页面，在"存储空间"区域可以查看到当前实例的磁盘使用情况。
   图1查看磁盘使用情况   
   ![](https://support.huaweicloud.com/usermanual-dds/zh-cn_image_0000001224097319.png "点击放大") 
2. 通过查看监控指标（磁盘利用率和磁盘使用量）判断实例磁盘的使用情况。 如何查看监控指标请参见[查看监控指标](https://support.huaweicloud.com/usermanual-dds/dds_03_0076.html)。
   图2查看磁盘使用情况   
   ![](https://support.huaweicloud.com/usermanual-dds/zh-cn_image_0000002374852713.png "点击放大")
   
   
 
#### 解决方案
1. 对于集群实例，可能是因为选择和设置的分片不合理导致数据分布不均衡，从而引起磁盘空间使用率高的情况。 此时，可以对数据库集合进行合适的分片，具体操作请参见[设置数据分片以充分利用分片性能](https://support.huaweicloud.com/bestpractice-dds/dds_0005.html)。
   
2. 随着业务数据的增加，原来申请的数据库磁盘容量不足。此时建议扩容磁盘空间，确保磁盘空间足够。
   - 集群实例，请参见[扩容集群实例的磁盘空间](https://support.huaweicloud.com/usermanual-dds/dds_03_0131.html)。
   
   - 副本集实例，请参见[扩容副本集实例的磁盘空间](https://support.huaweicloud.com/usermanual-dds/dds_03_0132.html)。
   
   - 单节点实例，请参见[扩容单节点实例的磁盘空间](https://support.huaweicloud.com/usermanual-dds/dds_03_0133.html)。
   
   
   如果原有实例规格的磁盘已是最大的，请先升级规格。
   - 集群实例，请参见[变更集群实例的CPU和内存规格](https://support.huaweicloud.com/usermanual-dds/zh-cn_topic_0104472218.html)。
   
   - 副本集实例，请参见[变更副本集实例的CPU和内存规格](https://support.huaweicloud.com/usermanual-dds/zh-cn_topic_0104721795.html)。
   
   - 单节点实例，请参见[变更单节点实例的CPU和内存规格](https://support.huaweicloud.com/usermanual-dds/dds_03_0030.html)。
    
3. 存在大量过期的数据文件占用磁盘空间，此时需要及时处理过期数据文件。例如：如果整个库不需要了，则可以执行dropDatabase命令进行删除，从而快速释放磁盘空间。
4. 后台数据处理机制原因。
   - 无论写入、更新或删除（包括索引插入和删除）等操作，在后台实际上都会转成写入。实例在使用过程中，删除数据并不会回收磁盘空间，这些未被回收的磁盘空间被称为磁盘碎片。磁盘碎片会被数据库继续使用，当有新数据插入时，会重复利用这些碎片，而不需要新申请磁盘空间。根据底层存储引擎的不同（RocksDB和WiredTiger），又会有不同的具体表现。
   
   - RocksDB在删除数据后，将删除操作直接转化为追加写，在积攒了一定数据量的冗余数据后，会自动触发后台compact线程对同一数据的多版本进行归并聚合，从而释放多余的磁盘空间，因此建议等待系统自动回收。当磁盘空间使用率较高，接近[只读状态](https://support.huaweicloud.com/dds_faq/dds_faq_0130.html)阈值时，您可以[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)申请，完成工单提交。
   
   - WiredTiger在删除数据，进行数据多版本归并聚合后，也会空余出磁盘空间碎片，但wiredTiger并不会将这部分磁盘空间返还给操作系统，而是打上标记预留给当前collection后续的写入，此collection后续的写入会优先使用这部分预留的磁盘空间，如果需要释放这部分磁盘空间，可以尝试通过执行compact命令进行释放（注：此命令会阻塞正常业务，因此默认情况下是禁用状态）。
    
 
#### 相关文档
[排查DDS实例CPU使用率高的问题](https://support.huaweicloud.com/bestpractice-dds/dds_0010.html)
[排查DDS实例内存占用较高的问题](https://support.huaweicloud.com/bestpractice-dds/dds_0061.html)
