
Я пытаюсь скопировать ISO-образ на USB-накопитель с помощью этой команды:
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
.
решение1
Поведение, которое вы видите, заключается только в dd
синхронизации данных на диске после операции. Для оптимизации операций ввода-вывода Linux часто считывает данные большими порциями, чем запрашивалось (упреждающее чтение), и откладывает запись, чтобы их можно было объединить (грязный кэш). В конце операции либо dd
синхронизирует файл на диске, либо ядро делает это неявно, и процесс остается активным, пока не будут завершены все записи.
Если на машине нет других массовых операций ввода-вывода, вы сможете оценить, сколько данных осталось записать, посмотрев на значение «Dirty:» /proc/meminfo
— это общий объем данных, ожидающих записи на диск.
Количество данных, которые система может оставить незаписанными в памяти в любой момент времени, можно контролировать с помощью следующих ручек настройки sysctl. По умолчанию используются только соотношения. Вы можете определить значение в процентах (соотношение) или байтах.
vm.dirty_background_ratio
vm.dirty_ratio
vm.dirty_background_bytes
vm.dirty_bytes
Официальную документацию по этим параметрам вы найдете здесь: