私は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)、または範囲外の項目。