ファイルシステム上のファイル名はどこに保存されますか?


44

ファイルシステム上のファイル名はどこに保存されますか?

2つのファイル名が同じiノードを指すことができるハードリンクがあるため、iノードまたは実際のファイルコンテンツではありません。


4
厳密に言えば、それはあなたが話しているファイルシステムに完全に依存してます。すべてのノードにiノード(またはディレクトリ)があるわけではありません。
マイケルボルグ

NTFSやFAT12 / 16/32および他の多くのファイルシステムは、任意のiノードを持っていない
phuclv

多くのファイルには、複数のディレクトリに複数の名前があります。タイプディレクトリのすべてのファイルには少なくとも2つの名前があり、そのうちの1つはそれ.自体にあります。
ステファンシャゼル14年

@LưuVĩnhPhúc、ntfsは.. MFTレコードと呼びますが、ほとんどiノードです。
psusi 14

回答:


61

適切な複製が見つからなかったので、質問への回答を次に示します。

ファイル名とディレクトリ

抜粋

ファイル名とディレクトリの意味:

  • iノードにはファイル名は含まれず、他のファイルメタデータのみが含まれます。
  • Unixディレクトリは関連付け構造のリストであり、それぞれに1つのファイル名と1つのiノード番号が含まれています。
  • ファイルシステムドライバーは、特定のファイル名を探してディレクトリを検索し、ファイル名を対応する正しいiノード番号に変換する必要があります。

出典: iノードのWikipediaページ

そのため、ファイルの名前はディレクトリの情報構造内に保存されます。例えば:

                         ss of fs

ディレクトリの構造

抜粋

EXT2ファイルシステムでは、ディレクトリはファイルシステム内のファイルへのアクセスパスを作成して保持するために使用される特別なファイルです。図9.3は、メモリ内のディレクトリエントリのレイアウトを示しています。

ディレクトリファイルはディレクトリエントリのリストで、各エントリには次の情報が含まれています。

  • inode-このディレクトリエントリのiノード。これは、ブロックグループのiノードテーブルに保持されているiノードの配列へのインデックスです。図9.3では、fileというファイルのディレクトリエントリには、iノード番号i1への参照があります。
  • 名前の長さ -このディレクトリエントリの長さ(バイト単位)
  • name-このディレクトリエントリの名前。

すべてのディレクトリの最初の2つのエントリは常に標準で.あり、..それぞれ「このディレクトリ」と「親ディレクトリ」を意味するエントリです。

上記の図9.3の参照は次のとおりです。

                 SS#2

ソース: The Linux Documentation Project:Filesystem

参照資料


9

ファイル名は、それぞれのディレクトリ(「ディレクトリファイル」)に保存されます。このエントリは、iノードを指します。


1
シンボリックリンクターゲットがディレクトリエントリでどのように終わるかはわかりません。シンボリックリンクのターゲットは、シンボリックリンクのiノードにありますが、シンボリックリンクがリンクされているディレクトリエントリ(のいずれか)にはありません。これは意味がありません。
ステファンシャゼル14年

@StéphaneChazelas、シンボリックリンク自体には、代わりに開く必要がある別の名前が含まれています。名前の検索は、新しい名前で再び開始されます(新しい名前が存在する場合)。それはどこかのディレクトリエントリです。
プソイ

1

ファイル名は、「(string)filename」および対応する「(int)inode」を持つ「directory」データ構造に保存されます。ディレクトリは、ファイル名のマッピングを担当します-> inode。そしてinodeはinodeのマッピングを担当します->ディスク上のセクター。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.