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

AWS EC2实例磁盘空间占用异常,未找到大文件如何定位占用原因

EC2 Linux实例存储空间占用异常排查方案

基础校验

  • 首先确认执行扫描命令时使用root权限,普通用户无法访问/root、/var等受限目录,会导致扫描结果遗漏。
  • 你此前使用的大文件查找命令存在语法缺失,末尾缺少转义分号会导致命令执行不完整,建议执行修正后的命令重新扫描:
    find / -type f -size +10M -exec ls -lh {} \;
    

高发问题排查

1. 已删除但仍被进程占用的文件

这是此类问题最常见的诱因:文件被手动删除后,如果仍有运行中的进程持有该文件的句柄,系统不会真正释放对应的存储空间,且这类文件不会出现在常规文件树扫描结果中。

  • 排查命令:lsof | grep deleted
  • 处理方式:返回结果会列出所有已删除但仍被进程占用的文件及对应进程ID,确认文件可释放后重启对应进程即可收回空间,也可直接重启实例完成批量清理。

2. 挂载点遮挡的隐藏文件

如果你为实例挂载了额外的EBS卷,可能出现挂载操作覆盖原有目录文件的情况:例如未挂载EBS时向/data目录写入了大量文件,之后将EBS卷挂载到/data路径,原有/data下的文件会被新挂载的卷遮挡,常规扫描只会读取挂载卷的内容,无法统计到被遮挡的文件占用。

  • 排查方法:执行mount --bind / /mnt将根目录绑定到/mnt路径,此时访问/mnt下的路径会绕过所有挂载点,直接读取底层根分区的内容。执行du -sh /mnt/*逐层排查各目录大小,即可找到被遮挡的隐藏文件。

3. 小文件聚合占用

你当前仅扫描了10M以上的大文件,如果存在百万级别的KB级小文件,聚合后也会占用大量存储空间,这类场景需要逐层统计目录大小定位:

  • 逐层统计命令:du -xh --max-depth=1 /
  • 参数说明:-x会限定仅统计当前根分区的内容,避免扫描到其他挂载的存储卷。从根目录开始逐层进入占用高的子目录重复执行上述命令,即可定位到占用空间的目录。
  • 额外校验:执行df -i查看inode使用率,如果inode占满也会出现无法写入文件的异常,即使存储空间显示有剩余。

其他场景排查

1. 文件系统未扩容

如果你是先创建了小容量根卷,之后在AWS控制台扩容EBS卷到20G,但未执行文件系统扩容操作,实例实际可用存储空间依然是扩容前的大小:

  • 先执行df -h确认根分区总容量是否为预期的20G
  • 若总容量低于20G,ext4文件系统执行resize2fs /dev/xvda1(将设备名替换为实际根盘设备名,可通过lsblk查询),xfs文件系统执行xfs_growfs /完成扩容。

2. 特殊服务占用

  • 如果使用了Docker等容器运行时,执行docker system df查看容器、镜像、卷占用的存储空间,确认是否有未清理的废弃镜像、容器日志占用空间。
  • 执行du -sh /var/log检查系统日志、服务日志占用,大量未轮转的日志文件也可能占用大量空间。

内容的提问来源于stack exchange,提问作者Amal Masri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:57:04