web-dev-qa-db-ja.com

ファイルのダウンロード/コピーは同時に断片化を促進しますか?

ハードドライブパーティションに複数のファイルを同時に書き込むと、断片化が促進されますか?これらのファイルはハードドライブにインターレースで書き込まれますか?

例:

  • Webから複数のファイルを同時にダウンロードする
  • さまざまなソースから同じパーティションにファイルをコピーする
  • いくつかの急流をダウンロードする

これはさまざまなOS間で異なりますか?ファイル全体に事前にスペースを割り当てることは、アプリケーション固有の機能ですか?

10
Jonathan

これは、使用中のファイルシステム、ある程度のオペレーティングシステム、およびファイルを開いているプログラムに大きく依存します。新しいファイルを作成するときに正しい量のストレージを要求するのはアプリケーション次第であり、これらのアプリがどのくらいのスペースを持っているかわからない場合に従うオープンアンドエクステンドの動作に影響を与えるのはオペレーティングシステムとファイルシステムの機能ですをお願いする。

プログラムがオペレーティングシステムに4.2GBのファイルを要求すると、OSは4.2GBの空き容量の塊を見つけます。それが失敗すると、ファイルを保存するのに十分な空き領域フラグメントがプログラムに与えられます。ここにはいくつかの変数がありますが、これは単純化されています。

プログラムがオペレーティングシステムに4KBのファイルを要求すると、OSはそれを提供します。プログラムが4.2GBのスペースを取得するまで、新しい連続した4KBセグメントを要求し続ける場合(ファイルをダウンロードしていて、プログラムがその大きさを認識していなかった場合)、OSは喜んでスペースを提供します。これは、ファイルシステムとOSが違いを生む場合です。

たとえば、XFSはエクステントベースであるため、追加されたスペースは、それができなくなるまで連続します。また、XFSは、断片化をさらに最小限に抑えることができる一定のスペースで新しいファイルを事前に割り当てるように構成できます(仮想マシンのストレージボリュームやDVD ISOボリュームで役立ちます)。

EXT2/3、NTFS、およびReiserは、それができなくなるまで連続して割り当てます。次に、新しいフラグメントを開始します。ただし、各フラグメントのサイズは4KBになる可能性があります。

最悪の場合を考えてみましょう。 2つの並列4.2GBファイルが、同じディレクトリに一度に4KBずつ並列に保存されます。一部のOS/FSの組み合わせは、ファイルを互いに近くの同じディレクトリに保持しようとするため、「同じディレクトリ」は最悪の場合の一部です。一部のOS/FSの組み合わせでは、これにより2つのファイルがディスク上で完全にインターリーブされます。新しく開いたファイルを別の空きセグメントに保持しようとする他の人にとっては、断片化がまったくないか、ほとんどない可能性があります。

XFSについて少し説明します(ext4とbtrfsでもこれを実行できると思います)。この場合、インターリーブは4KBではなく、ボリュームをマウントするときに割り当てサイズの値を設定したものになります。 256MBに設定すると、100万を超える代わりに17のフラグメントを含む4.2GBのファイルが得られます。メディアサーバーのような大きなファイルを保存するボリュームに役立ちます。たくさんのちっぽけなファイルといくつかの大きなファイルを格納するボリュームには役立ちません。

このため、Bittorrentクライアントは、新しいダウンロードを開始するときにスパースファイルを開くか、開始する前に指定された合計サイズを割り当てるだけです。

同じパーティションの異なる部分から(または他のパーティションからでも)ファイルをコピーする場合、コピープロセスは理論的にはコピーされたファイルの大きさを知っているため、最初からOSに適切なサイズのスペースを要求します。新しいファイルの割り当てを追加する必要はありません。

7
SysAdmin1138