ファイルはコンテンツブロック、inode、その両方、ファイル名、またはその他の項目で定義されますか?基本的にファイルの定義は何ですか?
例えば
2つのハードリンクは同じinodeとコンテンツブロックを共有できますが、ファイル名は異なります。同じファイルと見なされますか、それとも別のファイルと見なされますか?
inodeは違いますが、コンテンツブロックには同じファイルがありますか?同じファイルと見なされますか?
ありがとうございます。
答え1
私は、デバイスファイルやUnixドメインソケットなどの従来のファイルではなく、「一般的な」ファイルについて話しているとします。
ファイルには名前、メタデータ、データがあると言いたいです。
これはファイル名、inode、ブロックに直接対応します。
2つのハードリンクファイル名は、単一のファイルの2つの名前にすぎないと思います。
私はUnix、Linux、または* BSDで非常に珍しい介入なしに同じデータブロックを参照する2つのinodeを持つことができるとは思いません。 suidプログラムは、ディスク上のデバイスファイルを開き、同じデータブロックを指すように2つのinodeを操作できますが、これが自然に起こるかどうか疑問に思います。
答え2
ファイル名は inode の検索に使用されます。他の人はいません。索引ノードは、ファイルへの主な参照点です。ファイルサイズがゼロまたはinodeのブロックリスト部分に収まるほど小さく、ファイルシステムにこれらの最適化が適用されている場合、ファイルにデータブロックがまったくない可能性があります。 inodeを指す2つのハードリンクがある場合でも、複数の名前を持つファイルはまだ1つです。これにより、開いているファイルの名前の変更や削除などの操作を実行できます。これにより、デフォルトの識別子がファイル名であり、使用中のファイルを置き換えるには、アップグレードするたびに再起動する必要があるWindowsとは異なり、実行中のシステムでソフトウェアを簡単にアップグレードできます。