inodeオフセット値がinodeサイズを超えるように見えるのはなぜですか?

inodeオフセット値がinodeサイズを超えるように見えるのはなぜですか?

私はExt4ファイルシステムで作業しており、128バイトのinodeサイズのため混乱しています。これは、それが保存する最後のメタデータ値(オフセット156バイトになければならない)と競合しているようです。

これに文書inodeの長さが128バイトであることがわかります。マウントされていない/dev/sdb1でdumpe2fsを呼び出しました。 dumpe2fsの結果は、inodeサイズが128であることを確認します。

しかし、これは混乱しています。文書inodeに保存されているメタデータを説明します。各メタデータ項目には対応する物理オフセットがあります。最後の項目はプロジェクトIDです。オフセットは0x9c(整数156)にあります。

メタデータオフセットがinodeの割り当てられたサイズを超えるようです。私はここで何を誤解していますか?

ベストアンサー1

inodeの長さは128バイトであると言われています。

いいえ。それは次のように言います。

[...]各インデックスノード持つディスクレコードサイズは128バイトです。 ext4 以降、ファイルシステムのすべての inode にはフォーマット時に大きなディスク inode が割り当てられ、元の ext2 inode の終わりを超えるスペースを提供できます。ディスクのinodeレコードサイズはスーパーブロックに書き込まれますs_inode_size。 struct ext4_inode元の128バイトext2 inodeを超えて使用された実際のバイト数は、i_extra_isize各inodeのフィールドに書き込まれます。 [… ]デフォルトでは、ext4 inodeは256バイトとして記録され、(2019年8月現在)inode structは次のようになります。 160バイト( i_extra_isize = 32)。

あなたの質問:

最後の項目はプロジェクトIDです。オフセットは0x9c(整数156)にあります。メタデータオフセットがinodeの割り当てられたサイズを超えるようです。

最後のエントリは156で始まり、4バイト(__le32)を占めます。デフォルトの160バイト以内です。

ファイルシステムのinodeサイズが128と表示されている場合、dumpe2fsファイルシステムは生の128バイトext2 inodeを使用することを意味します。なしi_extra_isize(オフセット0x80、10進数128)、または範囲外の項目。

おすすめ記事