機械式HDDがデータをコピーする際にどのファイルを上書きするかを決定する方法

機械式HDDがデータをコピーする際にどのファイルを上書きするかを決定する方法

ハード ドライブのサイズ: 100 GB。さまざまなメガバイト サイズのファイルが多数含まれていましたが、それらはすべて異なる時期に追加され、時間の経過とともに蓄積され、すべて削除されました...

次に、25 GB のデータ (サイズが mbs の小さなファイル) を空のドライブにコピーしました...

削除されたファイルはどれが最初に上書きされますか? 最後に追加されたファイルですか、それとも最初に追加されたファイルですか? それとも、ドライブは 100 GB のスペース内のランダムな場所にすべてのファイルを分散させますか。

では、追加された日付に関係なく、ランダムに削除されたファイルが上書きされるのでしょうか、それとも最初に追加された削除されたファイルが最初に上書きされるのでしょうか?

答え1

ハードディスク(HDD または SSD)はファイルの概念をまったく理解していません。ハードディスクはバイトのシーケンスを保存するだけで、それだけが重要です。[1]

ハードディスクは通常パーティションに分割されており、パーティションは選択したファイルシステム(FS)でフォーマットされます。[2]ファイルの保存方法と場所を決定するファイルシステム。

あなたの質問に対する答えは次のとおりです:場合によります

ファイル システムは、ファイルがいつ作成または削除されたかをあまり気にしません。削除されると、ファイルは存在しなくなり、ファイル システムはそれをファイルとしてではなく、単なるゴミバイトとして扱います。

さらに、ファイルは連続的に保存されるわけではありません。1 つのファイルが複数のチャンクに分割され、パーティション全体に散らばる場合があります。OS が最初にスライスされたことを認識しないように、オンザフライで再構成するのはファイル システムの役割です。直感に反しますが、実際にはパフォーマンスが向上する可能性があります。制御された断片化を使用すると、HDD プラッターの外側の部分の方が読み取り/書き込み速度が速いという事実を促進し、ディスクの適切な部分に収まらないために FS がファイルを最適ではない方法で断片化せざるを得ない状況を回避することができます。

特定のファイル システムの書き込みパターンは、特定のケースでは予測可能ですが、一般的には予測できません。特定のファイルのサイズと保存順序が影響します。新しいファイルを保存するとき、ファイル システムは、使用するスペースが使用されているかどうかを考慮しません。つまり、以前に使用されたアドレスを「クリーン」なアドレスよりも優先したり、その逆を行ったりすることはありません。ファイルが削除されると、FS は、そのファイルが占めていたスペースを、一度も使用されなかったスペースとまったく同じように扱います。


[1] 現代のドライブには抽象化の層が追加されているため、これらのバイトの保存に実際に使用される領域は連続していないか、連続していない可能性があります (たとえば、HDD の不良ブロックの再マッピングや SSD のウェアレベリングのため)。ただし、質問の範囲ではそれは問題ではありません。すべてのハードディスクは、確実にアドレス指定された連続バイトを多数保存できるデバイスとして、他のハードウェアや OS に公開されているとだけ言っておきます。

[2] 最近のWindowsバージョンでは、OSパーティションにNTFSを使用し、追加パーティションにNTFSまたはFAT32を使用しています。フラッシュディスクは通常FAT32を使用しますが、exFATを使用する場合もあります。Linuxは通常ext4ファイルシステムを使用しています。AppleはHFS+を使用していましたが、現在はAPFSに移行しています。また、スケーラビリティ重視のBtrfsやオールインワンのフェイルセーフデータストレージソリューションとして設計されたZFSなど、特殊なユースケース向けのファイルシステムもいくつかあります。

答え2

このような状況では、完全にランダムではありませんが、実用的な目的においてはランダムです。ただし、ディレクトリが上書きされていても、ディスク全体を検索するプログラムによってファイルが見つかる場合があります。フロッピー ディスクの時代には、このようなことは目視で行っていましたが、最近では、ファイルに何らかの署名がある場合にのみ実行可能です。

関連情報