根目录中的 inode 有 100%,如何释放 inode?

根目录中的 inode 有 100%,如何释放 inode?
df -i
Filesystem-----Inodes-----Iused-----IFree-----IUse-----Mounted on
dev/sda2-------732960-----727804-----5156-----100%---- /

只有这 2 个拥有最高的 inode,其余的都太低了。可以做些什么来释放 inode?

进程 10937 个 inode

Sys 22504 个 inode

apt-get -f install说没有剩余空间

df -i 输出图像

在此处输入图片描述

apt-get -f install 输出错误图片

在此处输入图片描述

inode 搜索输出图像 -

在此处输入图片描述

var 日志只有 26Mb(var 目录中最大)

答案1

几周前我试验过同样的问题,这个程序解决了这个问题。

首先,搜索哪里是空间利用率最高的地方

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

当某些目录需要更多时间读取时,请注意。在我的例子中,/var/ 需要更多时间进行搜索。

因此运行:

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

之后,对 /var/log/* 运行相同的命令并在 squid3 日志上检测到很多小文件。

运行 rm -rfv /var/log/squid3/access.log*(并重新启动 squid3)后问题得到解决,并且 IUSE% 从 100 更改为 13。

问候。

答案2

我可以看到两个选项。

您可以备份整个文件系统,然后使用更多数量的 inode 重新创建它。

或者,您可以将另一个驱动器安装到包含许多文件的路径,然后将文件移动到该驱动器,这样您就可以保留 @vembutech 提到的结构。遗憾的是,我暂时无法对此表示赞同。

答案3

如果你使用docker,请删除所有图像。它们占用了很多空间。。。对我有用

#!/bin/bash
# Stop all containers
docker stop $(docker ps -a -q)
# Delete all containers
docker rm $(docker ps -a -q)
# Delete all images
docker rmi $(docker images -q)

答案4

只是为了补充上述评论,最好使用上述命令的稍微修改版本,特别是在符号链接中 -

例如:/bin -> usr/bin

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

只需在“find $i/”后使用斜线,即可看到更好的结果。

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

类似地,对于“lib”,“lib64”,您也可以观察到类似的行为。

相关内容