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

那么正确的做法是什么呢?

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

它是可能的,如果我压缩大量的文件,会减少使用的索引节点数?


当前回答

我的解决方案:

尝试查找这是否是一个inodes问题:

df -ih

尝试查找索引节点数较大的根文件夹:

for i in /*; do echo $i; find $i |wc -l; done

试着找到特定的文件夹:

for i in /src/*; do echo $i; find $i |wc -l; done

如果这是linux头文件,尝试删除最老的文件:

sudo apt-get autoremove linux-headers-3.13.0-24

就我个人而言,我把它们移动到一个挂载文件夹(因为对我来说,上一个命令失败了),并安装了最新的:

sudo apt-get autoremove -f

这解决了我的问题。

其他回答

我有同样的问题,通过删除php的目录会话来修复它

rm -rf /var/lib/php/sessions/

如果您使用的是较旧的php版本,它可能在/var/lib/php5下。

使用以下权限重新创建它

mkdir /var/lib/php/sessions/ && chmod 1733 /var/lib/php/sessions/

Debian默认目录权限显示drwx-wx-wt (1733)

如果你使用docker,删除所有图像。他们使用了很多空间....

停止所有容器

docker stop $(docker ps -a -q)

删除所有容器

docker rm $(docker ps -a -q)

删除所有图片

docker rmi $(docker images -q)

对我有用

首先,获取inode存储使用情况:

df -i

下一步就是找到那些文件。为此,我们可以使用一个小脚本列出目录和其中的文件数量。

for i in /*; do echo $i; find $i |wc -l; done

从输出中,您可以看到使用大量文件的目录,然后对该目录重复此脚本,如下所示。重复该操作,直到看到可疑目录。

for i in /home/*; do echo $i; find $i |wc -l; done

当您发现有大量不需要的文件的可疑目录时。只需删除该目录上不需要的文件,并通过以下命令释放一些inode空间。

rm -rf /home/bad_user/directory_with_lots_of_empty_files

你已经成功地解决了这个问题。现在再次使用df -i命令检查inode的使用情况,您可以看到如下的差异。

df -i

这篇文章拯救了我: https://bewilderedoctothorpe.net/2018/12/21/out-of-inodes/

find . -maxdepth 1 -type d | grep -v '^\.$' | xargs -n 1 -i{} find {} -xdev -type f | cut -d "/" -f 2 | uniq -c | sort -n

如果您非常不幸,您已经使用了大约100%的inode,并且无法创建scipt。 你可以用df -ih来检验。

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

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

是的,这将花费时间,但您可以找到拥有最多文件的目录。