inodeとファイルの関係は何ですか?

inodeとファイルの関係は何ですか?

私はいくつかのソース(例:これ)、次の内容:

  • inode はファイルに関する情報を格納するデータ構造です。
  • inode番号はinodeを指します。
  • iノード番号と対応するiノードのマッピング情報を保持する別のiノードテーブルがあります。
  • ファイルが作成されると、ファイルに inode 番号とファイル名が割り当てられます。
  • 名前を使用してファイルにアクセスすると、内部的に名前が最初に対応するアノード番号にマップされ、ドンインデックスノード訪問しました。

私が理解していない最も重要なのは最後の行です。 inodeはinodeにアクセスしますが、inodeはファイルとは独立したエンティティです。そして与えられた説明は、inodeが何らかの方法でファイルに関連付けられているとは言わず、inodeがファイルに関連付けられたメタデータを含むデータ構造であることを意味します。それでは、ファイルにどのようにアクセスしますか? inodeはファイルを呼び出していますか?

ベストアンサー1

インデックスノードはい認識されたファイルホロインデックスノード番号で。ファイル名はファイルシステムのメタデータにすぎません。おすすめファイルとして。単一ファイル/inodeは、それを参照する複数のファイル名を持つことができます。

$ touch foo
$ ln foo bar
$ ls -li foo bar
28098391 -rw-r--r--  2 xxxxxxx  xxxxx  0 Jul  6 22:15 bar
28098391 -rw-r--r--  2 xxxxxxx  xxxxx  0 Jul  6 22:15 foo

最初の列は inode 番号です。両方のファイルは同じです。権限の後の最初の数字はリンクの数です。どちらの名前も同じファイルを参照するため、どちらもリンクfoo数は2です。bar

$ rm foo
$ ls -li bar
28098391 -rw-r--r--  1 xxxxxxx  xxxxx  0 Jul  6 22:15 bar

rm foo基本ファイルへの特定のリンクのみが削除されます。barそれでも参照されています(inode番号は変更されていませんが、リンクの数は2ではなく1です)。また、これはファイルの「実際の」名前ではなく、ファイルの「実際の」名前でもfooなく、bar最初に作成されたという事実がファイルをfoo特別にするものではありません。ファイルは実際に削除されるまで削除されません。みんなリンクが削除されます(つまり、リンク数がゼロになるまで)。それでもファイルは実際には削除されません。その inode に割り当てられたブロックは、ファイルシステムの再利用が可能とマークされます。

おすすめ記事