【问题标题】:EC2 no space left, can't find out what's using the spaceEC2 没有剩余空间,无法找出正在使用的空间
【发布时间】:2019-08-15 14:06:38
【问题描述】:

我有一个小型 ec2 实例(Amazon Linux release 2 (Karoo))作为 jenkins 节点。它只是向我打招呼“没有空间了”。 ssh 进入,df -h 显示:

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G   44M  3.9G   2% /dev/shm
tmpfs           3.9G  560K  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/xvda1       64G   63G  1.5G  98% /
tmpfs           798M     0  798M   0% /run/user/1000

如图所示/dev/xvda1的使用率为98%(我刚刚清理了tmp和缓存)。

但我不知道是什么占用了空间。

du -h --max-depth=1 | sort -hr 来自/ 显示:

...error messages of Permission denied
3.5G    .
1.4G    ./usr
1.2G    ./home
588M    ./var
200M    ./opt
57M ./tmp
40M ./boot
18M ./etc
552K    ./run
0   ./sys
0   ./srv
0   ./root
0   ./proc
0   ./mnt
0   ./media
0   ./local
0   ./dev

如果我在它前面附加sudo,我会收到du: cannot access ‘./proc/24384/task/24384/fd/3’: No such file or directory之类的错误

从我所做的来看,似乎没有什么大的消耗我的 64GB 磁盘空间。

我错过了什么?

【问题讨论】:

  • 您的命令适用于最大深度 1。您可以尝试 2 还是先检查 /var/log。通常,这是生成大量日志的地方。你的 /tmp 似乎没问题。
  • 如果您设法获得足够的空间来安装ncdu,请尝试sudo ncdu /
  • @AmitavRoy 嗨,max-depth=2 返回相同的总大小(3.5G)。 /var/log./var 的一部分,对吗?只有588M。
  • @Amadan ncdu 返回相同的结果 - 从 / 运行,表示总磁盘使用量为 3.5G
  • 那么也许你有一些被进程保留的巨大的已删除文件,或者类似的东西。重启有帮助吗?

标签: amazon-web-services ubuntu amazon-ec2


【解决方案1】:

要在系统上查找大文件,我们可以使用“find”命令和 -size 参数。

sudo find / -type f -size +1M -exec ls -lah {} \;

更改上面示例中的 +1M 以满足您的要求。该示例将从文件系统的根目录(以及更深的目录)中查找所有文件类型为 file 且大小大于 1MB 的文件。

输出示例:

user@server:~$ sudo find / -type f -size +1M -exec ls -lah {} \;
-r--r--r-- 1 root root 3.4M Oct 17  2018 /root/.npm/_cacache/content-v2/sha1/a5/67/c2af000ad22dc8f2a653d91978ae1f5316f4
-r--r--r-- 1 root root 8.6M Jul 10 16:21 /lib/udev/hwdb.bin
-rw-r--r-- 1 root root 1.6M Jan 28  2018 /lib/udev/hwdb.d/20-OUI.hwdb
-rw-r--r-- 1 root root 1.2M Jan 28  2018 /lib/udev/hwdb.d/20-usb-vendor-model.hwdb
-rw-r--r-- 1 root root 2.8M Jan 28  2018 /lib/udev/hwdb.d/20-pci-vendor-model.hwdb
[... output suppressed ...]

问题当然很可能是大量小文件占用了所有磁盘空间。您必须分析 find 命令的输出。

【讨论】:

    【解决方案2】:

    发现我的问题。长话短说,docker的overlay数据是不是在积累。

    more information

    因为这些文件以某种方式被识别为打开的文件,所以它不会作为duncdu 的结果显示。可以使用lsof 查看它们。请注意,它们后面有“删除”标记。

    docker system prune -f -a --filter "until=72h" 为我回收了 50GB。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 2018-05-12
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多