2

ファイルシステムにまたがることができないのは、ハードリンクの条件であることを私は知っています。これは NFS マウントに適用されますか? 次のディレクトリ構造が与えられた場合、ディレクトリ B 内のファイルを指すハード リンクをディレクトリ A 内に作成できますか?

/root
    /A
    /B  <-NFS mount

たとえば、実行したいln /root/B/file.txt /root/A/linkedfile.txt

4

2 に答える 2

7

/Bは別のファイル システム (マウントされた NFS ファイル システム) であるため、 と の間にハード リンクを作成することはできません。/Aこれらは同じファイル システム上にないためです。

これは、ハードリンクがデータのコピーを作成せず、そのデータへのポインターのコピーのみを配置するため、それらは同じ「アドレス空間」にある必要があるためです。

于 2009-08-28T17:04:05.610 に答える
7

最初に、ハード リンクとは何かを正確に理解することをお勧めします。

通常、UNIX ライクなシステムでは、ディレクトリ内のファイル名は inode 番号 (基本的にはファイルの番号) を指します。「ハードリンク」とは、同じ inode 番号を持つ別のファイル名を作成することです。ここで、同じ番号のファイルを指す別の名前を付ける必要があります。

しかし、これら 2 つの名前の間には実際には直接的な関係がないことに注意してください。この関係は、Name1 と Name2 の両方の inode 番号が 12756 に設定されているということですが、「私の手にあるこれは 2 つのファイル間のリンクです」と言って我慢できるものは何もありません。これらは、ID 番号を共有する 2 つのデータベース エントリです。ID 番号を共有するファイル名に対してクエリを実行することはできますが (システム上のすべてのファイル エントリを調べているので時間がかかります)、それだけです。

したがって、「2 つのファイルシステム間のハード リンク」を作成することには何の意味もありません。2 つのファイルシステムは異なる番号付けスキーム (システム 1 の i ノード 1234 とシステム 2 の 1234 は完全に異なるファイルを指す) を持っているためです。保存する必要があるのは name+inodeNumber です。何もする必要はありません。

于 2011-10-04T21:31:39.963 に答える