さて、私はこれがLinuxに関する比較的初心者の質問であることを知っていますが、ハードリンクに関連するどのような場合でも、既存のファイルへのハードリンクを作成し、元のファイルを削除すると、データはまだ新しいファイルの下に保存されます。 ?
それでは、この場合、2番目のファイルを作成すると、実際にハードドライブで使用されるスペースが増えますか? file1 = ソース file2 = file1 へのハードリンクがあるとします。
file2 をインスタンス化して作成すると、ディスクで使用される領域が増えます。つまり、ほぼ同じ2つのファイルがあるため、使用されるスペースが2倍になります。明らかに、両方のファイルが同じinodeを共有し、file2には保存するために少しのスペースが必要であることを知っています。メタデータ)?
これにより、ファイルを削除すると、inodeが解放されるまでディスク領域は実際には回復されません。そうですか?
初歩的な質問をして申し訳ありません。明確にすべきことがあります。
答え1
inodeは同じであるため、file1とfile2は同じデータ(したがって同じメタデータ)を参照するため、データのコピーは必要ありません。
参照された inode は、file1 と file2 の両方が削除されるまで解放されません。
もう1つ明白なのは、 を作成し、 にfile1
ハードリンクしてから、どのファイルが元のものかを知らせるように求めると、その操作を確実に実行できないことです。file2
file1
簡単に言えば、ハードリンクを作成すると、元のデータとdir_entry
同じデータの2番目のコピーが作成されます。ハードリンクが占める余分なスペースは対応するサイズです。dir_entry
答え2
両方のリンク(名前)は同じファイル(インデックスノード)を指します。彼らはスペースを倍増しません。
データ(ファイル/inode)は、最後のリンクが削除され、ファイルを閉じる前にファイルを開いた可能性があるすべてのプロセスがファイルを閉じるまで解放されません。
答え3
ハードリンクはファイル名のエイリアスにすぎません。つまり、file2とfile1は同じディスクinodeを指します。
ハードリンクを作成するとディスク容量が増えますが、その量は実際のデータによって異なります。ファイルが「a」のようなバイトのみを格納する場合、ファイル名はより多くのディスク領域を占有します。ただし、通常、ファイル名文字列はファイルのデータよりはるかに短いです。したがって、ハードリンクディスク容量は無視できます。