ディレクトリ構造はどのようにUNIXファイルシステムに保存されますか?


8

ファイル名とiノードのペアのリストを使用して、各ディレクトリがコンテンツ(ファイルとサブディレクトリ)を格納することを確認しました。しかし、私が得たリファレンスのどれも、それらがどのように保存されているかについて何かを述べていませんでした。

それらは親ディレクトリのiノードに保存されていますか、通常のファイルのようにデータブロックを使用していますか?

説明をありがとう。


Unixがファイルを格納する方法は1つではありません。同様に、Windowsがファイルを保存する方法は1つではありません。どちらの場合も、使用するファイルシステムによって異なります。(FAT、NTFS、ext2、UFSなど)
Hennes

ファイルシステムの場合、ディスク上のディレクトリ構造はdirent.hで定義されており、libcalls opendir / readdir / closedirなどを使用してコンテンツにアクセスすることになっています。
ott-- 2012

回答:


10

典型的なUnixファイルシステムの内部をかなり単純な方法で概説しているファイルシステムの内部を参照してください。

ここに画像の説明を入力してください

ほとんどのUnixファイルシステムには、

  • ブートブロック
  • スーパーブロック(ディスクジオメトリ、パーティションレイアウト、iノード数など)
  • iノードブロック
  • データブロック

最近のファイルシステムには、追加の構造が含まれています。

スーパーブロックの内容の1つは、ルートディレクトリのiノードの場所です。

ディレクトリは特別にフォーマットされたファイルです。すべての通常のファイルと同様に、データブロックがあります。

これは、Linux Documentation Project:Filesystemで確認できます

ここに画像の説明を入力してください

を使用debugfsして、これらの構造を探索できます。


2
「ディレクトリは特別にフォーマットされたファイルです。通常のすべてのファイルと同様に、データブロックがあります。」それでは、ディレクトリはデータブロックにファイル名とiノードのペア(最初の画像の左端のテーブル、または2番目の画像の行)を格納していますか?

1
@岡:そうです。
RedGrittyBrick

つまり、明確にするために、ディレクトリはファイルであるため、データブロックに格納されます。ext4たとえば、ファイルシステムの各ディレクトリ(ext4_dir_entry_2長さは263バイト)は、1つの4KBブロックに約15のディレクトリエントリを格納できますか?
campescassiano
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.