inodeとは何かを理解しています。しかし、孤立したinodeの正確な定義は何ですか?私はこれが何を意味するのか本当に理解していません。
修正する
私が管理するサーバーにinodeが足りないことがありましたが、df -hを実行してみると、サーバーがスペースの60%しか使用していないことがわかりました。私はこれが孤児のinodeのためだと思います。すべてのinodeがすべて使用されていますが、サーバーにまだ「スペース」が残っているのはどのように可能ですか?回答でこの問題を解決できますか?
答え1
孤立したinodeは、ファイルシステムのディレクトリエントリに接続されていないinodeです。つまり、アクセスできません。
孤児のinodeはさまざまな理由で発生する可能性があります。
- 削除されたが開いている一時ファイル(通常の方法)はファイルシステムのinodeを占めます。システムが適切なシャットダウンなしで再起動されると、これらのinodeはそのまま残って孤児になります。
- ファイルシステムの破損はディレクトリを破損する可能性がありますが、含まれるファイルのinodeには影響しません。
fsck
分離されたinode用の新しいディレクトリエントリを作成しますlost+found
。
答え2
孤児inodeは「半削除された」ファイルです。もはやディレクトリエントリはありませんが、一部のプロセスではまだ開いているため、データはディスクに存在し続けます。ファイルを開いた最後のプロセスがファイルを閉じると、ファイルは完全に削除され、孤立したinodeが消えます。
分離された inode は inode とディスク領域を使用してファイルを保存するため、両方とも使用されたものとしてdf
計算されますdf -i
。したがって、ディスクがいっぱいであると報告しているが、df
一部のスペースが残っているとマークされている場合、これは分離されたinodeとは無関係です。孤立したinodeは、報告されたファイルシステムの使用量と報告された合計df
ファイルサイズが異なる可能性がある理由の1つですdu
。ディスク使用量を測定する方法はなぜそんなに変わりますか?このトピックの詳細。
多くのファイルシステムは、ファイルシステムの作成時に固定数のinodeを予約します。これは、ファイルシステムに最大のファイル数がある可能性があることを意味します。 inodeの数は、inodeが使用するスペースと複数のファイルを生成する機能の間の妥協です。ファイルシステムにスペースがなくなると、既存のファイルを増やしたり、新しいファイルを作成したりできません。割り当てを必要とせずに部分的に使用されているブロックのみを埋める限り、既存のディレクトリに空のファイルを作成することもできます。新しいブロック)。利用可能な inode が存在しない場合は、既存のファイルを増やすことができますが、新しいファイルを作成することはできません。
データスペースが不足しているか、inodeが欠落してファイルシステムがいっぱいになると、カーネルはアプリケーションに同じエラーを報告します。そのため、ジョブに新しい inode が必要で、inode テーブルがいっぱいになった場合、データスペースが残っていても「ディスクいっぱい」エラーが発生する可能性があります。これを実行して、df -i
どのくらいのinodeが使用され、どれだけ残っているかを調べます。
答え3
孤立したinodeは、接続が解除されたが他のプロセスでまだ開いているinodeです。たとえば、
tail -f {file}
あるシェルで実行し、rm {file}
別のシェルで実行します。ファイルシステムは、プロセスが終了したときにクリアできるようにそれを追跡します。きれいに分離されていない場合は完全に正常です。これは単に削除されたがファイルシステムが再マウントされたときに読み取り専用で開いたままのファイルです。これは原因ではなく症状です。
inode問題の場合は、このクエリを実行して、すべてのディレクトリで使用されているinodeの数のリストを取得します。
for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n