私はiノードとは何かを理解していますが、孤立したiノードの正確な定義は何ですか?意味が分からない。
[〜#〜]更新[〜#〜]
私が管理していたサーバーがiノードを使い果たした時期がありましたが、df -hを実行すると、サーバーの領域が60%しか使用されていないことがわかりました。これは孤立したiノードが原因だと思います。どのようにすればすべてのiノードを使い果たしても、サーバーに「スペース」が残っていますか?あなたの答えでこれに対処できますか?
孤立したiノードは、ファイルシステムのディレクトリエントリに接続されていないiノードです。つまり、到達できません。
孤立したiノードは、いくつかの理由で表示されます。
fsck
は、孤立したiノードの新しいディレクトリエントリをlost+found
に作成します。
孤立したiノードは「半削除」されたファイルです。これにはディレクトリエントリがありませんが、一部のプロセスではまだ開いているため、データはディスク上に残っています。このファイルを開いている最後のプロセスがファイルを閉じると、ファイルは完全に削除され、孤立したiノードは消えます。
孤立したiノードは、iノードとディスク領域の両方を使用してファイルを格納するため、df
とdf -i
の両方が、使用されたと見なします。したがって、ディスクがいっぱいであると報告されているが、df
に空き領域が残っている場合、これは孤立したiノードに関連しているとは言えません。孤立したiノードは、df
によって報告されるファイルシステムの使用量とdu
によって報告されるファイルの合計サイズが異なる場合がある理由の1つです。このトピックの詳細については、 なぜディスク使用量を測定するためにさまざまな方法があるのですか? を参照してください。
多くのファイルシステムでは、ファイルシステムの作成時に固定数のiノードが予約されていました。つまり、ファイルシステムには最大で多くのファイルを含めることができます。 iノードの数は、iノードが使用するスペースと多くのファイルを作成する機能の間の妥協点です。ファイルシステムにスペースがない場合は、既存のファイルを拡張したり、新しいファイルを作成したりできません(おそらく、部分的に使用されているブロックだけがいっぱいで、新しいブロックを割り当てる必要があります)。空きiノードがなくなった場合、既存のファイルを拡張することはできますが、新しいファイルを作成することはできません。
データスペースの不足やiノードの不足が原因でファイルシステムがいっぱいになった場合でも、カーネルはアプリケーションに同じエラーを報告します。そのため、操作に新しいiノードが必要で、iノードテーブルがいっぱいの場合、データスペースが残っていても、「ディスクがいっぱい」のエラーが発生する可能性があります。 df -i
を実行して、使用されているiノードの数と残っているiノードの数を確認します。
孤立したiノードとは、リンクが解除されているものの、別のプロセスでまだ開いているものです。たとえば、tail -f {file}
1つのシェルの後にrm {file}
別の。ファイルシステムはこれらを追跡し、プロセスが終了したときにクリーンアップできるようにします。
あなたが汚れた降車があるときはいつでもそれは完全に正常です。これらは単に削除されたファイルですが、fsが読み取り専用で再マウントされたときも開いていました。それらは原因ではなく、単なる症状です。
Iノードの問題については、このクエリを実行して、すべてのディレクトリで使用されているiノードの数のリストを取得します。
for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n