我在 AWS EC2 c3.large 实例上运行 Ubuntu 14.04 trusty。
我的构建开始失败,出现“设备上没有剩余空间”错误,尽管df
显示我的磁盘使用量远未满。
然后,我通过运行df -ih
并看到我的 inode 使用率接近 100%,发现这是我的 inode的问题/dev/xvda1
。
我使用以下脚本将 inode 使用情况跟踪到 codedeploy 代理,通过将目录for i in /*; do echo $i; find $i |wc -l; done
更改/*
为更具体的目录来查找特定问题,从而找到具有高 inode 使用率的目录。
现在我已经到了我所处的位置/opt/codedeploy-agent/deployment-root/aafbfc42-d92d-4260-be40-6c331a3c3a13
,codeeploy 保留的最后 5 个部署中的每一个都使用 ~70k inode,其中大部分是由于node_modules
我的应用程序中的目录,其中 ~40k 由babel-preset-es2015
.
我不确定从这里开始的最佳方式是什么。这是正常数量的 inodebabel-preset-es2015
吗?有没有一种方法可以安全地删除整个部署或以某种方式不包含node_modules
在这些部署中?我还缺少其他解决方案吗?
谢谢
编辑:对此进行更多研究。我的一台生产服务器(与另一台相同)有 630 万个 inode,而问题服务器只有 512K 个 inode...
EDIT2:看起来一个实例只附加了一个 8GB 卷,而另一个实例有一个 100GB 卷。仍然不确定为什么 es2015 预设会占用这么多空间,但至少我现在知道从哪里开始修复这个问题。