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

如何限制Docker容器磁盘占用?Cassandra容器致Windows磁盘满

解决Docker中Cassandra容器导致Windows磁盘占用100%的问题

核心原因

Cassandra默认的预写日志(WAL)、自动快照和无限制的数据写入配置,在Windows Docker环境下会快速耗尽磁盘空间,尤其是WSL2后端的容器存储机制会放大这个问题。

具体解决方案

1. 调整Cassandra核心配置限制磁盘写入

  • 先将容器内的配置文件复制到本地:
    docker cp cassandra:/etc/cassandra/cassandra.yaml ./cassandra.yaml
    
  • 编辑本地cassandra.yaml,修改以下关键参数:
    • commitlog_total_space_in_mb: 1024:限制预写日志总大小为1GB,达到上限后自动清理旧日志
    • auto_snapshot: false:禁用自动快照,避免压缩或升级时生成大量快照文件
    • snapshot_before_compaction: false:关闭压缩前的自动快照
    • disk_failure_policy: stop:磁盘满时停止写入,防止无限制占用空间
  • 挂载修改后的配置重新启动容器:
    docker stop cassandra
    docker run -p 9042:9042 --rm --name cassandra -d -v $(pwd)/cassandra.yaml:/etc/cassandra/cassandra.yaml cassandra:4.0.7
    

2. 为Docker容器设置磁盘配额

  • 如果使用Docker Desktop(WSL2后端),可以在Settings > Resources > Advanced中直接设置容器的磁盘使用上限
  • 或者启动容器时通过命令行指定配额(需要WSL2支持):
    docker run -p 9042:9042 --rm --name cassandra -d --storage-opt size=20G cassandra:4.0.7
    

3. 清理已占用的磁盘空间

  • 进入容器手动清理冗余文件:
    docker exec -it cassandra bash
    # 清理旧预写日志
    rm -rf /var/lib/cassandra/commitlog/*
    # 清理所有快照
    rm -rf /var/lib/cassandra/snapshots/*
    
  • 使用Cassandra工具优化数据文件:
    docker exec cassandra nodetool cleanup
    docker exec cassandra nodetool compact
    

内容的提问来源于stack exchange,提问作者Florin Nicula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:18:18