我了解什么是索引节点,但是孤立索引节点的确切定义是什么?我真的不明白那是什么意思。
更新
曾经有一段时间,我正在管理的服务器用尽了inode,但是当我执行df -h时,这表明该服务器仅使用了60%的空间。我猜这是因为孤立的inode。如何用尽所有的索引节点,但服务器上还剩下“空间”?您可以在答案中解决吗?
df -i
将显示相应的inode信息。
我了解什么是索引节点,但是孤立索引节点的确切定义是什么?我真的不明白那是什么意思。
更新
曾经有一段时间,我正在管理的服务器用尽了inode,但是当我执行df -h时,这表明该服务器仅使用了60%的空间。我猜这是因为孤立的inode。如何用尽所有的索引节点,但服务器上还剩下“空间”?您可以在答案中解决吗?
df -i
将显示相应的inode信息。
Answers:
孤立的inode是未附加到文件系统中目录条目的inode,这意味着无法访问它。
出现孤立的inode可能有多种原因:
fsck
在中为孤立的inode创建新的目录条目lost+found
。
df -h
这表明该服务器仅用完60%的空间。我猜这是因为孤立的inode。如何用尽所有的索引节点,但是服务器上还剩下“空间”?
孤立的i节点是“半删除”的文件:它没有更多的目录条目,但是在某些进程中它仍然处于打开状态,因此数据仍然存在于磁盘上。当最后一个打开此文件的进程将其关闭时,该文件将被完全删除,孤立的inode将消失。
一个孤立的索引节点同时使用一个索引节点和磁盘空间来存储文件,因此df
和df -i
所使用指望它。因此,如果报告磁盘已满,但df
显示剩余空间,则这与孤立的索引节点无关。孤立的inode是导致报告的文件系统使用率df
和报告的文件总大小du
不同的原因之一;请参阅为什么有这么多不同的方法来衡量磁盘使用情况?有关此主题的更多详细信息。
创建文件系统时,许多文件系统会保留固定数量的索引节点,这意味着文件系统上最多可以有那么多文件。索引节点的数量是在索引节点使用的空间与创建许多文件的能力之间的折衷。如果文件系统上没有更多空间,那么您将无法增长现有文件或创建新文件(也许您仍然可以在现有目录中创建一些空文件,只要它们仅填充部分使用的块,而不填充需要分配一个新块)。如果没有更多可用的索引节点,则可以增加现有文件,但不能创建新文件。
无论是由于数据空间不足还是由于索引节点不足,内核都会向应用程序报告相同的错误。因此,即使该操作需要一个新的inode并且inode表已满,即使有一些数据空间,也可能会出现“磁盘已满”错误。运行df -i
以了解使用了多少个索引节点,还剩下多少个索引节点。
孤立的inode是已取消链接但在另一个进程中仍处于打开状态的inode。例如,tail -f {file}
在一个外壳中运行,然后rm {file}
在另一个外壳中运行。文件系统会跟踪这些内容,以便在进程退出时将其清除。
每当您进行不干净的拆卸时,这是完全正常的。它们只是被删除的文件,但是在重新挂载fs时以只读方式打开。它们不是原因,而仅仅是症状。
对于inode问题,请运行此查询以获取所有目录中使用的inode数量的列表。
for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n