ソリッドステートディスクにデータが書き込まれたときに何が起こるかは、非常に複雑で、基盤となるテクノロジーに依存しているため、いくつかの記事に値します(ここでの要約)。簡単に言えば、SSDは一般にメモリにゼロビットを書き込むことができません。代わりに、メモリのセクション全体を消去(消去)する必要があります。その後、データを書き込むだけでデータを保存できます。通常、彼らは512バイトのブロックを書き込みますが、4096である8ブロックのページを消去します。これ、および各書き込み/消去サイクルがメモリの物理的な消耗を引き起こし、メモリが最終的に消耗するという事実は、SSDを非常に異なったものにします磁気HDDを回転させるよりも。
それはさておき、SATAドライブ(およびAFAIK SASドライブ)は、あるセクターから別のセクターにデータをコピーするためのネイティブコマンドを実装しません。(または、SATAまたはSAS仕様では少なくとも何も必要としないため、OSはそのようなコマンドが使用可能であることを期待できません。)したがって、パーティション全体のファイルコピーには、1つのドライブセクターからホストメモリへのデータの読み取りと書き込みが含まれます別のセクターのドライブに戻ります。
これは、OSに関する限り、ドライブは番号の付いた論理セクタのセットであり、ドライブでできることは、セクタからの読み取りとセクタへの書き込みだけだからです。OSはドライブにセクターを再マップするように指示できません。
さらに、ファイルシステム(HFS +、NTFS、ext3など)は、論理ブロックのセットに順序を課すデータ構造のセットです。これらのデータ構造は、「ファイル」、「ファイル名」、「ディレクトリ」、「許可」などを実装します。そのため、あるディレクトリから別のディレクトリにファイルを移動しても、コピーされません。ファイルが存在するディレクトリを示すファイルシステムデータのみが更新されます。
パーティションの概念は、単一のファイルシステムが要求するドライブ上の論理セクタのセットであるということです。その結果、ファイルシステムはパーティション外のセクターにアクセスできない可能性があります。大部分はこれは安全機能ですが、ファイルシステムのデータ構造はすべて、ファイルシステムの所有権の下にあるドライブのすべてのセクターを考慮して構築されているため、セクターを追加または削除することは簡単ではありませんそれらの構造に。これが、パーティションのサイズを調整するために特別なルーチンを実行する必要がある理由であり、また、ファイルシステムが連続したセクターセットでの実行を要求する理由です。
そのため、ファイルコピーを、あるファイルシステムから別のファイルシステムにセクターを転送するだけとして実装することは、非現実的で危険です。回転する磁気ドライブでは、パフォーマンスが悪夢になります。これは、ドライブが不良セクタを例外として除外しますが、一般的に、連続番号の読み取りおよび書き込み速度を最適化するようにセクタを物理的に配置するためです。セクター。
さらに、2つのファイルシステムがディスク上にファイルデータを同じ方法で保存しない場合があります。つまり、実用的であっても、セクターのスワップは機能しません。NTFSなど、まったく同じファイルシステムタイプであっても、一方は暗号化または圧縮を使用し、もう一方は使用しないか、または両方がデータを暗号化しますが、キーは異なります。ファイル内のデータがディスクに保存されているものとまったく同じである必要はありません。保存する必要があるのは、データの可逆変換だけです。これにより、ファイルシステムは、ディスク上のデータ。したがって、両方のファイルシステムがまったく同じ変換を使用していない限り、単にセクターを交換してもファイルデータを転送するという目標は達成されません。
これらのすべての理由から、SSDのパーティション間の移動を最適化する機能を実装するのは、OSライターとファイルシステムライターにとってあまり利益がないため、あまりにも多くの作業です。そのため、パーティション間の移動は読み取りと書き込みになります。
SSDの中では、少し異なる話です。OSは、ある場所から別の場所にデータをコピーすることをドライブに通知しませんでしたが、SSDへの書き込みは非常に高価(および複雑)であるため、SSDコントローラーは書き込みを最小限に抑えるために多くの作業を行います。一部のSSDは、ストレージに書き込まれているセクターが既に格納されているセクターと一致したことを検出し、その物理メモリをコピーするのではなく、2つの異なる論理セクターにマッピングするようにマークすることを試みます。 OSはできませんでした。
しかし、それに頼らないでください。
mv
、抽象化レイヤーを大幅に混在させて協力する必要があります。