inodeサイズはなぜ固定されていますか?

inodeサイズはなぜ固定されていますか?

ファイルシステムとストレージメディアについて読み込んでいるのに、ブロックサイズのファイルを作成すると、大きなファイルよりも小さいinodeを持つことができない理由がわかりません。オペレーティングシステムはファイルサイズに応じてinodeサイズを動的に選択できませんか?

ベストアンサー1

inodeが固定サイズである理由の1つは、従来のUnixファイルシステム形式(例えば、非常によく似たext4)では、inodeがデフォルトでは単一のテーブルに保存されます。固定サイズ項目の場合、索引番号に基づいて項目を見つけるのは簡単です。他のデータ構造を使用するにはより多くの作業が必要であり、より重要なことは、データ構造からより多くのランダムアクセス読み取りが必要であることです。

ファイル自体のサイズは通常、最初の数個のデータブロックが格納される inode 自体には影響しません。長いファイルの場合、システムは残りの場所を保持するために追加のブロック(間接ブロック)を割り当てます。 (よりウィキペディアページ良い写真のために。 )

たとえば、ext4は実際には動作が異なり、シンボリックリンクの内容をinode自体に保存できるため、「伝統的」と言います(通常は短いため、ブロック全体を割り当てないことが便利です)。範囲ツリーつまり、複数のブロックにまたがっています。

私が知る限り、ext4で最小サイズより大きいinodeをサポートする理由は、新しいフィールドを保存し、拡張属性に追加のスペースを使用できるようにするためです。最初のリンクのテーブルを見ると、ext4 inodeの元の128バイト以上の追加フィールドは、主に高精度のタイムスタンプを格納します。 SELinuxシステムでは、セキュリティラベルは拡張属性として実装されているため、inodeに直接保存できる場合に便利です。

最新のファイルシステム(例:btrfs、XFS、ZFS)は、本物のフォーマットが少なく、操作が異なる場合があり、BSDシステムで使用されているファイルシステムについてはわかりません。

おすすめ記事