インデックスノードとは何ですか? [コピー]

インデックスノードとは何ですか? [コピー]

重複の可能性:
スーパーブロック、アノード、ディレクトリエントリ、ファイルとは何ですか?

Unixファイルシステムのドキュメントには「inode」という用語が含まれることがよくあります。それは何であり、どんな役割を果たしますか? DOS / Windowsファイルシステムにinodeがないのはなぜですか?

ベストアンサー1

「inode」は、Unixファイルシステムが単一ファイルに関する情報を保持するために使用するディスクデータブロックを指す非公式の用語です。従来、「inode」は、ファイルの実際の内容を保持するディスクブロックのブロック番号を保持している。伝統的に、ディレクトリエントリはファイル名、ファイルタイプなどを含む。これら2つのデータは別々です。

つまり、多くのUnixyエントリがありません。従来、ファイル名は inode の一部ではありません。ファイル名は、ファイル名とinode番号が一致するファイル(独自のinodeとコンテンツを含む)の「ディレクトリ」から取得されます。 Cプリプロセッサマクロを使用すると、コードが非常に少ない計算だけで、inode番号からディスクブロックに移動できます。

したがって、複数の名前が同じインデックスノードを参照できます。ここでハードリンクが生成されます。 「.」を持つ能力も同様です。常になりすましなしで現在のディレクトリを参照してください。ディレクトリには、常にディレクトリ自体の inode 番号と、ディレクトリが配置されているディレクトリに対応する "."と ".." ファイル名が含まれます。 「。」および「..」ファイル名は、各ディレクトリにエントリがあります。ファイルシステムコードに実際にデータがない特別なケースではありません。

Unixファイルの階層はinodeから来ています。ディスクは、基本的に512バイト、1KB、4KBなど、特定のサイズの「ブロック」の線形配列です。 Inode 0は常に指定されたディスクブロックに配置されるため、Unixカーネルはファイルシステムのルートを見つけるために「inode 0」を知っているだけで、「/」をinode 9に関連付けることができます。 Inode 0もディレクトリファイルです。 「usr」、「bin」、「tmp」、「dev」などはinode 0にエントリがあります。したがって、inodeを使用すると、ディスク上のデータブロックの線形リストを階層にマッピングできます。

Inode はディスクに配置されます。元のUnixファイルシステムでは、ディスクの最初の1/3または1/4がinodeでした。残りは必要に応じてファイルに割り当てられるデータブロックで、ディスクブロック番号は inode で終わります。長年にわたり、さまざまなファイルシステム(BSD FFSなど)は、ディスク上の物理的な構造を記述しようとするinode領域をディスク上の他の場所に配置しようとしました。

Winodws NT "NTFS"ファイルシステムには、inodeに直接似たエントリ、つまり基本ファイルテーブルのエントリがあります。 NTFSは先祖DEC VMS Files-11からこれを受け継いだようです。 Files-11「ファイルヘッダー」は$ MFTのものとほぼ同じように見えます。

私は他のWindows / DOSファイルシステム(FAT、FAT32など)には全く慣れていませんが、ファイル割り当てテーブルのレコードはディレクトリエントリとinodeの組み合わせと似ています。私の考えでは、命名と階層とディスクブロックデータの組み合わせがFATファイルシステムを非常に脆弱にするようです。プログラムがディスク上の個々の inode データをシャットダウンしたファイルを「lost+found」に入れることはできません。ファイル割り当てテーブルが破損すると、ファイルデータのブロックメンバーも失われます。ファイルのファイルメンバーシップも失われるからです。目次。

おすすめ記事