git 报告“设备上没有剩余空间”,但 df -h 说有 2.5G 可用空间

git 报告“设备上没有剩余空间”,但 df -h 说有 2.5G 可用空间

我有一个运行 Ubuntu 14.04 的 EC2 节点。今天早上部署时,我从 git fetch 收到以下错误消息:

error: unable to create temporary file: No space left on device

我登录到服务器并且 df -h 表示我有足够的空间:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            492M   12K  492M   1% /dev
tmpfs           100M  488K   99M   1% /run
/dev/xvda1      7.8G  4.9G  2.5G  67% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none            497M  4.0K  497M   1% /run/shm
none            100M     0  100M   0% /run/user

我是不是误读了 df?我的理解是 EC2 上的 /tmp 驻留在 /dev/xvda1 上,但也许我错了?

答案1

验证系统 inode:

root #df -i /

如果使用率接近 100%,请尝试使用

xdiskusage /

找出占用了 inode 的内容。

遗憾的是,一旦创建了文件系统,就无法增加文件系统上的 inode 数量。

除了 LVM,可以使用 resize2fs 扩展 inode 的数量

参考:设备上有足够的空间,但已没有剩余空间

答案2

  1. 可能是某些应用程序正在创建大量小文件并完全耗尽 inode。您可以查找此类恶意应用程序并删除不需要的文件。

  2. inode 限制不能动态增加,但是如果您使用 LVM,您可能会考虑增加卷的大小,否则进行备份并创建指定更高 inode 限制的新文件系统。

答案3

您可以使用 find 命令搜索包含大量文件的目录,并根据您的标准执行清理

find /dev/xvda1 -type f -size +1M -exec ls -ltrh {} \; 当您找到需要执行清理的位置或目录时,将该目录路径传递到源中,然后您就可以执行清理

find /dev/xvda1/dummy -type f -size +1M -mtime +120 -exec rm -rf  {} \;

在上面的命令中,我从名为 dummy 的目录中删除了超过 120 个文件

相关内容