什么是孤立的inode?[关闭]


16

我了解什么是索引节点,但是孤立索引节点的确切定义是什么?我真的不明白那是什么意思。

更新

曾经有一段时间,我正在管理的服务器用尽了inode,但是当我执行df -h时,这表明该服务器仅使用了60%的空间。我猜这是因为孤立的inode。如何用尽所有的索引节点,但服务器上还剩下“空间”?您可以在答案中解决吗?


1
您的更新确实是一个单独的问题,与文件系统的存储容量和它可以包含的inode数量之间的差异有关。您应该将其作为一个单独的问题提出。
Stephen Kitt

Running df -i将显示相应的inode信息。
库桑兰达

磁盘的可用/已用空间仅与可用/已用的inode稍微相关。具有许多小文件的磁盘在空间不足之前将耗尽inode。
库萨兰达

Answers:


17

孤立的inode是未附加到文件系统中目录条目的inode,这意味着无法访问它。

出现孤立的inode可能有多种原因:

  • 已删除但保持打开状态的临时文件(通常的做法)占用文件系统上的inode;如果系统重新启动但未正确关闭,则这些inode仍然存在并且被孤立
  • 文件系统损坏可能会损坏目录,而不会影响该目录包含的文件的索引节点;然后将这些inode隔离

fsck在中为孤立的inode创建新的目录条目lost+found


感谢您的回答@ stephen-kitt。曾经有一段时间,我正在管理的服务器用尽了inode,但是当我这样做时,df -h这表明该服务器仅用完60%的空间。我猜这是因为孤立的inode。如何用尽所有的索引节点,但是服务器上还剩下“空间”?
ninjacoder '16

3

孤立的i节点是“半删除”的文件:它没有更多的目录条目,但是在某些进程中它仍然处于打开状态,因此数据仍然存在于磁盘上。当最后一个打开此文件的进程将其关闭时,该文件将被完全删除,孤立的inode将消失。

一个孤立的索引节点同时使用一个索引节点和磁盘空间来存储文件,因此dfdf -i所使用指望它。因此,如果报告磁盘已满,但df显示剩余空间,则这与孤立的索引节点无关。孤立的inode是导致报告的文件系统使用率df和报告的文件总大小du不同的原因之一;请参阅为什么有这么多不同的方法来衡量磁盘使用情况?有关此主题的更多详细信息。

创建文件系统时,许多文件系统会保留固定数量的索引节点,这意味着文件系统上最多可以有那么多文件。索引节点的数量是在索引节点使用的空间与创建许多文件的能力之间的折衷。如果文件系统上没有更多空间,那么您将无法增长现有文件或创建新文件(也许您仍然可以在现有目录中创建一些空文件,只要它们仅填充部分使用的块,而不填充需要分配一个新块)。如果没有更多可用的索引节点,则可以增加现有文件,但不能创建新文件。

无论是由于数据空间不足还是由于索引节点不足,内核都会向应用程序报告相同的错误。因此,即使该操作需要一个新的inode并且inode表已满,即使有一些数据空间,也可能会出现“磁盘已满”错误。运行df -i以了解使用了多少个索引节点,还剩下多少个索引节点。


1
  • 孤立的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

您可以参考这个这个更多的方法来检查。


@ninjacoder,您可以检查我的inode问题更新的答案
Rahul
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.