web-dev-qa-db-ja.com

PCからPendriveへのファイルのコピーがUbuntu 16.04で最後に停止する

Copying stucks

なぜ私だけに起こっているのかわかりません。いつでもcopyingbiggerまたは時々 PCからpendriveへの<1GBより小さいファイルは、文字通り最後に行き詰まります。

now this stucks

5

それはあなたに起こっているだけではありません:-)問題は、Linuxがどのように機能するかと、Ubuntuが提供するデフォルト設定が原因です。ファイルコピーツールは、ソースファイルのチャンクを読み取ってから宛先に書き込み、書き込みが完了するたびにプログレスバーを更新します。ただし、処理を高速化するために、Linuxはバックグラウンドで作業を行いながら、書き込まれる予定のデータを受け取り、書き込まれたプログラムにすぐに通知します。 Linuxでは、この目的のためにシステムメモリの一部を使用できます。最近のメモリサイズは通常、ファイル全体よりも大きいため、実際にはコピーが始まったばかりのときに、プログラムはすべてを書き込んだと考えることができます。ただし、プログラムがファイルを閉じようとすると、Linuxは操作の完了を待機させます。 (そうでない場合、プログラムは半分書き込まれたファイルで何かをしようとするかもしれません)

これは、USBなどの低速のデバイスに大きなファイルを書き込むときに最もよく見られますが、他の状況でも表示され、コンピューターがロックしているように見えることがあります。

私が問題を「修正」するために行うことは、より少ないデータをバッファリングするようにLinuxに指示することです。そうすれば、アプリケーションは実際の進捗状況をこれほど先に進めることができません。これには、カーネルパラメータの変更が含まれます。これは、慎重に行う必要があるパワーユーザーの作業です。 /etc/sysctl.confに「vm.dirty_bytes = 15000000」を追加する必要があります

echo vm.dirty_bytes=15000000 | Sudo tee -a /etc/sysctl.conf

その後、再起動します。

これにより、バッファサイズが15MBに設定されます。これは、私が選んだ数値であり、おおよそ「高速のUSB2デバイスへの0.5秒の書き込み」に変換されます。必要に応じて、大きい(または小さいが、多すぎない)を選択できます。

この設定の短所は、大量のファイルコピーを同時に実行する場合など、高スループット操作の実行速度が低下する可能性があることです。また、ラップトップドライブがより頻繁にスリープモードから抜け出す可能性もあります。

2
dataless