EC2服务器与AWS控制台磁盘使用数据不一致,寻求技术指导
EC2 Ubuntu实例磁盘用量本地与AWS控制台显示不一致的排查与解决
核心差异原因
AWS控制台统计的是EBS卷实际已占用的磁盘块,而df -Th是文件系统层面的使用统计,差异通常来自未被文件系统识别的占用项——比如已删除但被进程持有的文件、隐藏的系统缓存/日志、被挂载覆盖的遗留文件。
排查与解决步骤
清理被进程占用的已删除文件
执行lsof | grep deleted,输出会显示哪些进程还持有已删除文件的句柄,这类文件虽已删除但磁盘空间未释放,df不会统计,但会被AWS控制台算入实际占用。
解决方式:找到对应进程(比如MongoDB的mongod),重启进程释放空间,示例命令:sudo systemctl restart mongod清理系统日志与缓存
- 查看日志目录占用:
du -sh /var/log,若日志过大,执行清理:- 压缩并保留指定大小的系统journal日志:
sudo journalctl --vacuum-size=500M - 删除旧的压缩日志文件:
sudo rm /var/log/*.gz
- 压缩并保留指定大小的系统journal日志:
- 清理APT包管理缓存:
sudo apt autoremove && sudo apt clean,移除无用依赖包和安装缓存。
- 查看日志目录占用:
检查被挂载覆盖的隐藏文件
如果某个目录(比如/var/lib/mongodb)被挂载了额外卷,挂载前该目录下的原有文件会被隐藏,这些文件仍占用磁盘空间,但du和df无法统计到。
解决方式:临时卸载挂载点查看并清理,示例操作:sudo umount /var/lib/mongodb # 清理目录内遗留文件(操作前请备份重要数据) sudo rm -rf /var/lib/mongodb/* # 重新挂载目录 sudo mount /var/lib/mongodb检查Swap空间占用
执行swapon --show查看是否存在大体积swap文件/分区,若swap占用过高且非必要,可关闭并删除swap文件:sudo swapoff /swapfile sudo rm /swapfile
验证
执行df -Th再次查看本地统计,同时刷新AWS控制台的磁盘用量,等待10-15分钟后对比数据是否一致。
内容的提问来源于stack exchange,提问作者pyTRON
相关产品推荐
相关产品推荐

