4 台の内蔵 HDD と 1 台の外付け HDD が e-SATA ケーブルで接続されたシングル Windows PC。私のマザーボードは SATA 6 ではなく、古い SATA 3 です。
ある内蔵 HDD から別の内蔵 HDD に転送する場合、または内蔵 e-SATA ドライブから外付け e-SATA ドライブに転送する場合、ファイル転送速度が大きく異なります。
例: バックアップを実行する際、外部に 1 つの大きなファイルを 1 つ保存すると、速度は 16 ~ 24 MB/秒と非常に遅くなりました。その後、別の大きなファイル (Linux ISO) を外部 HDD にバックアップすると、速度は 125 MB/秒になりました。55 MB/秒になることもあれば、90 MB/秒になることもあります。
多数の小さなファイルをまとめて処理すると転送速度が遅くなることは理解していますが、単一の大きなファイルを処理した場合に大きな差 (約 8 倍) が生じるのはなぜでしょうか。
答え1
これは、物理ハードドライブの動作によるものです。データがハードドライブに書き込まれると、パーティション テーブルに、データが保存されているファイルごとに格納されます。
これは次のように行われます。最初に利用可能な空き領域を検索し、そこに書き込みを開始します。ファイルがその領域よりも大きい場合、そこで書き込みを停止し、そのファイルの一部が保存されているパーティション テーブルにメモを作成します。次に、次の利用可能な空き領域を検索し、そこに書き込みを開始します。この方法により、ハードドライブは断片化されます。NTFS には断片化を軽減する技術がありますが、それでも断片化は発生します。
このため、大きなファイルを検索すると、ハードドライブのヘッドがファイルにアクセスする必要があるため、あちこち動き回ってしまい、読み取り速度が低下する可能性があります。
編集: また、言い忘れましたが、ファイルを削除しても空き領域は並べ替えられず、空き領域としてフラグが付けられるだけです。したがって、小さなファイルを削除すると、大きなファイルが書き込まれる小さなギャップが作成されます。NTFS はこれを可能な限り最小限に抑えようとしますが、特に非常に大きなファイルの場合は、常にそれができるとは限りません。