![索引节点使用过多](https://linux22.com/image/117450/%E7%B4%A2%E5%BC%95%E8%8A%82%E7%82%B9%E4%BD%BF%E7%94%A8%E8%BF%87%E5%A4%9A.png)
我正在使用 Ubuntu 14.x,最近尝试使用某种磁盘已满消息创建文件失败。
我有超过 2GB 的空间,这是不可能的,但我听说如果 inode 已满,它可能会导致。
我不是熟练的 Linux 用户,所以我不知道如何删除它们。首先,我以 root 身份输入上面的命令来查看使用了多少个 inode:
$ df -i -h
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 248K 414 248K 1% /dev
tmpfs 250K 467 250K 1% /run
/dev/xvda1 512K 512K 0 100% /
是的,这是100%。然后我找到了显示当前系统使用了多少 inode 的命令:
# for i in /*; do echo $i; find $i |wc -l; done
它打印出这个:
/bin
172
/boot
353
/dev
416
/etc
1971
/home
21808
/lib
17720
/proc
43272
/sys
36453
/tmp
5134
/usr
423458
/var
10117
...
所以我删除了 /home/dev 中的一些文件,并且得到了一些空闲的索引节点,但不多:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 512K 464K 49K 91% /
另外,当我重新安装我需要的文件时,它会再次占用inode,所以这实际上没有解决。
我看到 /usr 目录几乎占用了 inodes: 423458,但我不知道可以删除哪些文件而不影响其他系统或程序。
如何找到“不必要的”索引节点来删除?任何建议将非常感激。
答案1
与我的系统相比,您在 中有很多文件/usr
,因此我建议继续在那里搜索,如果您只需在命令中更改为 ,它将在任何目录中工作/*
。*
如果你没有任何东西可以与数字进行比较,那么它可能会变得很困难。这是我的子目录中的文件数/usr
:
bin 2397
games 32
include 4607
lib 27379
local 34
sbin 271
share 1
src 22971
(用 制作for i in *; do echo -n "$i "; find $i |wc -l; done
)