Linuxは、ファイルデータがディスク上のどこにあるかをどうやって知ることができますか?

Linuxは、ファイルデータがディスク上のどこにあるかをどうやって知ることができますか?

関連:スーパーブロック、アノード、ディレクトリエントリ、ファイルとは何ですか?

実際のファイル位置データを保持する周知のメタデータ構造はありません。 Dentry は、ファイルに関する情報を格納する inode に名前をマップします。システムは、ファイルの実際のデータビットがディスク上のどこにあるかをどのように知ることができますか? inode 整数とディスク位置のデフォルトマッピングはありますか?

ベストアンサー1

多数のファイルシステムを考慮すると例外があると確信していますが、伝統的にinodeにはディスクブロック番号の配列があります。

たとえば、/usr/include/linux/ext3_fs.hでの定義を見ましたstruct ext3_inode

中でstruct ext3_inodeメンバーを見たi_block[EXT3_N_BLOCKS];/* Pointers to blocks */

ファイルシステムごとに、どのディスクブロックがinode(ファイルデータを表すディスクデータ構造)に属するかを追跡する方法が異なります。一部にはブロック番号の配列があり、一部には実行または範囲の配列、連続ブロックの実行の数、および開始ブロック番号があります。 Berkeley FFS inodeにはブロック番号配列、ブロック番号配列があり、それぞれはデータブロック番号を含み、ブロック番号はデータブロック番号を含みます。

「ログ構造ファイルシステム」を使用すると、すべてが少し奇妙になります。しかし、これはルールではなく例外です。

おすすめ記事