私は次の記事が存在することを知っています。 ハードリンクが同じファイルシステム内でのみ機能するのはなぜですか? しかし残念ながら私の関心を引き付けることはできませんでした。
https://www.kernel.org/doc/html/latest/filesystems/ext4/directory.html 私はGalvinのオペレーティングシステムの概念を読んで、Linuxカーネルドキュメントなどの非常に便利なリソースを見つけました。
ファイルシステムには、同じinode番号を参照する多くのディレクトリエントリがあります。これらのディレクトリエントリをハードリンクと呼びます。これは、ハードリンクが他のファイルシステム上のファイルを参照できない理由です。
著者は最初からこう言う。しかし、私はその理由を理解していません。
inodeに含まれる情報:
- モード/権限(保護)
- 所有者ID
- グループ番号
- ファイルサイズ
- ファイルへのハードリンク数
- 最後のアクセス時間
- 最後の修正
- 索引ノードが最後に変更された時刻
https://www.grymoire.com/Unix/Inodes.html
inodeにはこの情報が含まれているので、ハードリンクが他のファイルシステム上のファイルを参照するのに何が問題になりますか?
ハードリンクが異なるファイルシステムを参照すると、どのような問題が発生しますか?
ハードリンク関連:
「ハードリンク」という用語は誤解を招く。より良い用語は「ディレクトリエントリ」です。
ディレクトリは(少なくとも)一対のファイル名とinodeを含むファイルの種類です。ディレクトリの各エントリは「ハードリンク」です。、シンボリックリンクを含む。新しい「ハードリンク」を作成するときは、既存のディレクトリエントリと同じinodeを参照するディレクトリに新しいエントリを追加するだけです。
これは、オペレーティングシステムでディレクトリの概念がどのように見えるかを可視化する方法です。上記のテキストによると、各項目はハードリンクです。私が見た唯一の問題は、複数のファイルシステムが同じ範囲のinodeを持つことができるということです(しかし、オペレーティングシステムではinodeが制限されているので、そうは思いません)。
また、inode自体にファイルシステムに関する新しい情報を追加するのはなぜ良いのでしょうか?本当に便利ではないでしょうか?
ベストアンサー1
「ハードリンク」は、単に同じ基本データ構造を参照するファイルシステム階層内の2つ以上の項目の場合です。あなたの写真はこれを完全に示しています!
ここにあるすべてがそれです。まるで「パン:3ページ参照」と「ベーカリー:3ページ参照」というインデックスが最後にある料理本と同じです。 3ページのコンテンツには2つの名前があります。
同じページを指すインデックスエントリを必要なだけ持つことができます。何ですかいいえうまくいくのは、他の本の内容のインデックスエントリがあるということです。他の本はまったくありません。存在する現在、書籍ではページの引用は機能しません。特に、他の本の異なるバージョンは、時間の経過とともに異なる番号が付けられた可能性があるためです。
単一のファイルシステムは独自の一貫性のみを保証できるため、常に破損しない限り、他のファイルシステムのinodeなどの「プライマリストレージシステムの詳細」を参照することはできません。したがって、別のファイルシステムに格納されているディレクトリエントリを参照するには、パスを介して参照する必要があります。 UNIXはシンボリックリンクを介してこれを達成するのに役立ちます。
私が見た唯一の問題は、複数のファイルシステムが同じ範囲のinodeを持つことができるということです(しかし、オペレーティングシステムではinodeが制限されているので、そうは思いません)。
これは事実でも論理でもありません。私のハードドライブを送ることができます。そうですね。ハードドライブのファイルシステムに、コンピュータ上の多くのファイルシステムの1つですでに使用されているinode番号がないことを確認するにはどうすればよいですか?
また、inode自体にファイルシステムに関する新しい情報を追加するのはなぜ良いのでしょうか?本当に便利ではないでしょうか?
いいえ。ファイルシステムを「ストレージメディアのバイト」の抽象化と考えてください。ファイルシステム自体は独立ファイルで構成されるデータを含むデータ構造で、完成のために外部データに依存することはできません。これに違反すると、不一致だけが発生します。独立性は、ファイルシステムBについて知らなくてもファイルシステムAのinode番号を変更できることを意味するからです。 BがAに依存すると、Bは破壊されます。