これは重複している可能性がありますSSD 上のパーティション間でファイルを移動する
ファイルをコピーするとすぐC:\...\Downloads\
にC:\...\Desktop\
実行されます。しかし同じファイル (1.12 GB) をコピーすると、D:
かなり時間がかかります。なぜでしょうか?
答え1
まず、あなたの中心的な質問は次のとおりです。
同じディスク上のパーティション間でコピーすると時間がかかるのはなぜですか?
詳細は後述しますが、複数のパーティションを持つ単一のディスクは、ファイルシステムの観点からは「同じディスク」ではありません。ファイルシステムの観点からは、パーティションは、2 つのパーティションが存在する、より大きな親物理ディスク上の「論理的に」割り当てられた領域であっても、単なる別の「物理ディスク」です。
- ディスクにはパーティションがあり、
- パーティションにはファイルシステムがあります。
- ファイルシステムにはファイルがあります。
詳細については、以下をお読みください。
注: 私の専門分野は Linux/Unix/Mac OS X であるため、これらの用語を使用していますが、基本的な概念は Windows やあらゆる OS に適用されます。
OS/カーネルは、そのファイルに割り当てられたバイト/セクター/アドレス ポインターなどの情報を、ある FileSystem テーブルから他のパーティションの FileSystem テーブルに単純に移動しないのはなぜですか?
これは、どのセクターがどのファイルに接続されているかを制御および管理する inode テーブルが、ディスクごと、パーティションごとの構造であるためです。
したがって、何かをコピーするときに行わ
C:
れるのは、同じドライブ上のファイルへの新しいパスを示すために、ドライブC:
上の inode エントリが編集されるだけです。C:
C:
C:
ただし、からに何かをコピーする場合D:
、データをコピーし、D:
ドライブ上に新しい inode エントリを作成する必要があります。
C:
デバイスごと、パーティションごとに行うのではなく、すべてのドライブ データをメイン ドライブに保存しないのはなぜかと疑問に思うかもしれません。では、そのドライブまたはパーティションを別のマシンに移動するとどうなるでしょうか。D:
アロケーション テーブル データがなければ、ドライブはただの空き領域で未使用の領域にしか見えません。C:
このようなシナリオでドライブがクラッシュすると、ドライブが失われるだけでなく、ドライブC:
に関連付けられているより詳細なファイル システム情報も失われますD:
。
また、質問を編集して次のように述べました:
パーティション分割は物理的なものではなく論理的なものだと思います。
はい、いいえ。パーティショニング論理的であるパーティションテーブル側では、ファイルシステムレベルでは、ファイルシステムはパーティションを認識しますまるで別の物理ディスクであるかのように。
そして、あなたはこうも尋ねます:
では、なぜ OS または FileSystem コントローラーは、このメタデータを
helloKitty.txt
他のパーティション テーブルに単純にコピーしないのでしょうか?
それするメタデータをある場所から別の場所にコピーします。ただし、 上のデータはD:
からコピーされるまで存在しないため、実際のファイル データもコピーされます。また、ディスク/パーティションC:
からディスク/パーティションにコピーされるとバイトとセクターのデータが変わるため、コピーされるメタデータはファイルの内容に関する基本情報に限定されます。C:
D:
パーティションは物理的ではなく論理的であるため、バイトのポインタは変更されず、絶対的です。
パーティションは、パーティションのコンテキストでは「論理的」です。そのパーティションのファイルシステムに保存されているデータは、パーティション テーブルに上がる個々のファイルに関するデータのコンテキストでは「論理的」ではありません。それは単にその通りであり、パーティションは…Wikipediaの定義による—は以下のように説明されています。強調は私によるものです。
ディスクパーティションとは、ハードディスクドライブ(HDD)をパーティションと呼ばれる複数の論理ストレージユニットに分割する行為である。1 つの物理ディスク ドライブを複数のディスクのように扱い、各パーティションで異なるファイル システムを使用できるようにします。
答え2
ファイルシステムは、各ファイルの内容のアドレスだけではありません。パーティションのどの部分が未割り当て (「空き領域」) であるか、および合計でどのくらいの空き領域が利用可能であるかも追跡する必要があります。パーティション のファイルシステムがC:
パーティション内にファイル データを保存する場合D:
、まずファイルシステムD:
の構造を調べて空き領域を見つけ、その領域をファイルシステムで割り当て済みとしてマークして、D:
で作成された別のファイルによってデータが上書きされないようにする必要がありますD:
。後で、ファイルシステム にあると思われるファイルを削除するとC:
、ファイルシステムに再度アクセスして、その領域を空きとしてマークする必要がありますD:
。
エラー チェックには問題があります。通常、割り当て済みとしてマークされているが、実際にはファイルシステムのディレクトリ構造内のどのファイルにも含まれていない領域がある場合、これはエラーと見なされます。整合性チェッカー (Windowschkdsk
または Linux/Unixfdisk
など) は、領域を空きとしてマークするか、その領域にマップされたファイルを作成して、人間がデータを調べて手動で削除できるようにします。ただし、問題のデータが実際には他のファイルシステムのファイルの一部である場合、ファイルがまだそれを使用しているにもかかわらず、領域が空きとしてマークされます (すぐに、または誰かが「回復された」ファイルを削除したときに)。
ファイルシステムの境界を越えてファイルを安全に割り当てるには、2つのファイルシステムが互いの構造を永続的に「認識」している必要があり、複数のパーティションにまたがる単一のファイルシステムであるのと同程度にする必要があります。実際にこれをサポートするファイルシステムもあります。zfs
そしてbtrfs
これらは、ファイルシステムに組み込まれた一種の RAID のように動作します。複数のパーティション (複数のディスク上にあるものも含む) を 1 つの論理ドライブとして表示できます。ただし、パーティション (およびディスク) は相互に依存しているため、1 つだけを選択して単独で使用することはできません。
答え3
この点では、異なるパーティションは異なるディスクのようなものです。
各パーティションのブロックは連続的に割り当てられます。提案されているのは、ディスクが自動的にパーティションを再分割し、あるパーティションに属するセクターを別のパーティションに割り当てるというものです。
このアプローチではエラーが発生しやすくなり、ディスクのパフォーマンスが低下し、ジャーナリングなどの他の機能が損なわれます。