2台の外部USBドライブ間で大量のデータを移動している間、ラップトップの速度が遅くなることがわかりました。私が理解したところ、十分なRAMがない限り、ファイルは/ tmpなどの中間位置に書き込まれません。私は間違っていますか?
答え1
このコピーまたはそれに対応するGUIコピーがある場合
cp -a /media/external/disk1/. /media/external/disk2/
データは、最初のディスクのファイルシステムから読み取られ、2番目のディスクに直接書き込まれます。他の保存場所への中間書き込みはありません。速度が遅くなると、両方のディスクが同じUSBコントローラを共有し、バスアクセスのために競合している可能性があります。
これに加えて、コンピュータの製造元/モデル、バストポロジなどの追加の詳細を提供する必要があります。
答え2
内部と外部の概念はありません。オペレーティングシステムは、箱の中に何があるのか、内部に何があり、外部に何があるのかわかりません。唯一の特殊ファイルシステム(少しだけ)は、読み取り専用でマウントできるルートファイルシステムです。読み取り専用ルートファイルシステムを使用すると、ほとんどすべての操作を実行できます(ただし、ルートファイルシステムの内容は変更できません)。
答え3
TL、DR:おそらくキャッシュです。
2つのリムーバブルドライブ間でデータをコピーまたは移動しても、内部ドライブにデータは保存されません。コピープログラムは、ソースドライブからデータブロックを読み取り、それをターゲットドライブに書き込み、次のデータブロックに対してプロセスを繰り返します。複雑なプログラムは複数のブロックを並列にコピーしてコピーを高速化しようとしますが、コピー中にロードが増えます。
ドライブにアクセスするには、ファイルシステムと物理ドライブアクセスの両方に少しのCPU時間が必要です。小さいファイルが多い場合はファイルシステム管理コストが低く、大きなファイルの場合は無視できます。ドライブのアクセスコストは、USBコントローラとドライバの品質によって異なります。 USBコントローラと対応するLinuxドライバは通常DMAかなり効率的ですので、ここでもCPUコストはあまりありませんが、USBについてはよくわからないので、ここでは間違っています。
コピーされるデータはキャッシュ済みディスクから読み取った他のデータと同じです。 RAMサイズと比較して大量のデータをコピーすると、コピーされたデータが頻繁にアクセスするファイルを置き換えるか、アプリケーションメモリの一部がスワップに移動します。これによりパフォーマンスが大幅に低下する可能性があります。システムは、ソースディスクから読み出されたデータが即座に書き込まれ、RAMに保持する必要がないという事実を知らないので、キャッシュ割り当てに関して最適な決定を下さない傾向がある。
Linuxで大量のデータをコピーするときは、次の方法を試してください。キャッシュなし(主なディストリビューションでパッケージとして利用可能)読み取ったデータの大部分がキャッシュに入らないモードでコマンドを実行するコマンドラインユーティリティ。たとえば、
nocache mv /media/source/dir /media/target/dir
nocache
GUIアプリケーションで実行するには、このプレフィックスを使用します。ただし、アプリケーションが正常に起動した場合にのみ該当します。一部のデスクトップ環境では、中央プロセス(kdeinitを使用するKDEなど)を介してアプリケーションを起動したり、既存のプロセスでウィンドウを開くことができます。この場合、何のnocache
効果もありません。
プライバシーが心配な場合は、このようなことが起こる可能性はありませんが、一部のデータがスワップスペースに入る可能性があります。レプリケータは、短い期間だけ、各データブロックをメモリに保持し、長い間アクセスされていないメモリ部分に対してスワップが最初に使用されるため、これが発生する可能性はほとんどありません。