用尽inode


Answers:


24

在格式化分区时设置索引节点的数量。通常,创建的inode数量足以满足几乎所有目的;但是,如果您有很多非常小的文件,则可以在磁盘已满之前用尽inode。

您需要找到系统上正在使用inode的成千上万个小文件,然后删除它们,或将它们移到专门设置的具有大量inode的分区。格式化分区后,无法更改分区上可用的索引节点数量。

paxdiablo在stackoverflow上编写的脚本可能是检查您可能不知道的过多小文件使用情况的便捷方法。这里又是:

#!/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_$$

将此脚本放入文本文件〜/ bin / count_em中,然后发出命令

chmod +x ~/bin/count_em

使它可执行。如果必须将目录〜/ bin设置为可执行文件路径,则只需注销并再次登录即可。

要运行该程序,您只需键入

count_em

它将按目录列出当前目录和子目录中所有文件的编号,最后一个计数最高。非常便利!


该行> chmode + x〜/ bin / count_em实际上是> chmod + x〜/ bin / count_em

1
是否有必要删除所有这些用户创建的文件,还是将它们移动到tar归档中呢?
AMC

将它们归档是一种很好的处理方式,它不会删除用户数据,但会使他们意识到他们的行为并不令人满意,因为他们将无法像以前那样使用文件。尽管可能是大量文件是由没人使用的东西生成的,并且可以安全地删除它们,但这是有风险的。
LovesTha 2014年

一个很好的替代脚本的单行代码可能是sudo du -a -d 1 --inodes . | sort -nr | head -20
Charles Green,

1
当然,如果您完全不在inode内,那么这将不起作用,因为它会创建临时文件:(
Molomby,

8

您还可以使用以下命令按索引节点的数量显示目录的排序列表: du --inodes -d 3 / | sort -n | tail

从那里,您可以确定要删除的目录


1
unrecognized option '--inodes'在Ubuntu 14.04上,
fyi

为什么在2019年使用ubundu 14.04?我看到它从2013年2月起具有coreutils 8.21,该--inodes选项于2013
ZN13

2

我发现inode的使用来自/root/.local,并删除了该文件夹。


2
/root/.local没什么可使用的,仅出于兼容性方面的考虑而已。您需要找出正在将许多小文件写入此目录的内容。
fabricator4
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.