ディレクトリのinodeがext4ファイルシステムにファイル名を保存するのはなぜですか?

ディレクトリのinodeがext4ファイルシステムにファイル名を保存するのはなぜですか?

私の理解は、ディレクトリinodeが通常のファイルinodeと根本的に異なっていないことです。Ext4ディスクレイアウトそれだけです:

ディレクトリエントリ:したがって、ディレクトリは一連のデータブロックであり、各ブロックはディレクトリエントリの線形配列を含むと言う方が正確です。

ディレクトリエントリは、ファイル名とそのインデックスノードへのポインタを格納します。それでは、ドキュメントに各ブロックにディレクトリエントリが含まれていることがわかりますが、debugfsディレクトリinodeに保存されているファイル名とは異なる内容を報告するのはなぜですか?これは ext4 形式のフラッシュドライブのデバッグセッションです。

debugfs:  cat /sub
 .
  ..�
     spam�spam2�spam3��spam4

これらのファイル名を保存することは不可能だと思い、inode_i_block60バイトを超える非常に長いファイル名でファイルを作成しました。catinodeで実行するとdebugfsファイル名も表示されるため、長いファイル名がinodeに再び表示されます。

コンテンツinode.i_block:

inode.i_block60バイトのストレージスペースは、inodeで説明されているファイルタイプに応じてさまざまな方法で使用できます。通常、通常のファイルやディレクトリではファイルブロックインデックス情報として使用し、特殊ファイルでは特別な目的に使用します。

また、ファイル名が格納されているinodeへの参照はありません。 ハッシュツリーディレクトリ これは最新の実装部分です。そのファイルに何か欠けているような気がします。

主な質問は、ディレクトリ内のinodeにファイル名が含まれている場合は、そのデータブロックに何を格納するかです。

ベストアンサー1

inode.i_blockディレクトリエントリはデータブロックに保存されます。リンクしたドキュメントの「インラインデータ」と「インライン目次」を参照してください。

おすすめ記事