web-dev-qa-db-ja.com

dd関数は完了時にフリーズしているようです

次のコマンドを使用して、USBメモリにISOをコピーしようとしています。

Sudo dd bs=4M if=lubuntu-17.04-desktop-AMD64.iso of=/dev/sdc status=progress 

かなり簡単です。 isoはサイズが912M大きいです。プログラムを終了せずに、出力テキストがここでフリーズするのはなぜですか?

956301312 bytes (956 MB, 912 MiB) copied, 11.216 s, 85.3 MB/s

ctr-cを使用してプログラムの実行を停止することもできません。

11
Natjo

表示されている動作は、操作後のディスク上のデータの同期のみddです。 IOオペレーションを最適化するために、Linuxは多くの場合、要求されたよりも大きなチャンクでデータを読み取り(先読み)、それらを組み合わせることができるように書き込みを遅らせます(ダーティキャッシュ)。オペレーションの最後に、 ddはディスク上のファイルを同期するか、カーネルが暗黙的に同期し、すべての書き込みが完了するまでプロセスはアクティブなままです。

マシンに他に大量のIO=操作がない場合、/proc/meminfoの "Dirty:"値を確認することで、書き込むデータの量を見積もることができます。これは、ディスクへの書き込みが保留されているデータの合計量です。

システムがいつでもメモリに書き込まれずに残すことができるデータの量は、次のsysctl調整ノブで制御できます。デフォルトでは、比率のみが使用されます。値はパーセント(比率)またはバイトで定義できます。

vm.dirty_background_ratio
vm.dirty_ratio
vm.dirty_background_bytes
vm.dirty_bytes

これらのパラメータの公式ドキュメントは次の場所にあります。

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

16