如何释放 Inode 使用量?

新手上路,请多包涵

我有一个 inode 使用率为 100% 的磁盘驱动器(使用 df -i 命令)。但是在大量删除文件后,使用率仍然是 100%。

那么正确的方法是什么?

磁盘空间使用率较低的磁盘驱动器怎么可能比磁盘空间使用率较高的磁盘驱动器具有更高的 Inode 使用率?

如果我压缩大量文件是否有可能会减少使用的 inode 计数?

原文由 neversaint 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

即使磁盘不是很满,磁盘也很容易使用大量 inode。

一个 inode 被分配给一个文件,因此,如果您有大量文件,每个文件都是 1 个字节,那么您将在磁盘用完之前很久就用完 inode。

如果文件有多个硬链接,删除文件也可能不会减少 inode 计数。正如我所说,inode 属于文件, 而不是 目录条目。如果一个文件有两个链接到它的目录条目,删除一个不会释放 inode。

此外,您可以删除目录条目,但如果正在运行的进程仍然打开文件,则不会释放 inode。

我最初的建议是删除所有可以删除的文件,然后重新启动机器以确保没有进程保持打开文件。

如果您这样做了,但仍然有问题,请告诉我们。

顺便说一句,如果您正在寻找包含大量文件的目录,此脚本可能会有所帮助:

 #!/bin/bash

# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

原文由 paxdiablo 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你很不走运,你已经使用了大约 100% 的所有 inode 并且无法创建 scipt。您可以使用 df -ih 进行检查。

那么这个 bash 命令可以帮助你:

 sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

是的,这需要时间,但您可以找到文件最多的目录。

原文由 simon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题