Запись на диск с использованием `pv` кажется быстрой и медленной в конце
Я записывал образ kubuntu на мою флешку с помощью этой команды
pv /home/manuel/Downloads/torrents/kubuntu-16.10-desktop-amd64.iso > /dev/sdb
Тем не менее, выходной индикатор выполнения pv
был наполовину заполнен с самого начала. Следовательно, казалось, что передача началась бы с невероятной скоростью и существенно замедлилась.
1,49GiB 0:03:03 [8,31MiB/s] [===============// //===============>] 100%
Это делает использование pv
Команда довольно бесполезна.
Как я могу отключить эту функцию кэширования, которая, кажется, была активирована?
1 ответ
Я нашла ваше сообщение, когда искала похожую проблему, пытаясь записать изображение на SD-карту (через USB-устройство чтения / записи). Используя pv, он будет показывать 100% почти сразу, но потом потребуется несколько минут, чтобы его завершить.
Я нашел решение своей проблемы, используя dd, pv и pipe, и установил запись dd в прямой режим. Это также значительно улучшило скорость записи. Я не знаю, есть ли какие-либо недостатки использования этого метода (я прочитал изображение и выполнил контрольную сумму - и все выглядит нормально).
В моем примере используется изображение raspbian (2017-09-07-raspbian-stretch-lite.img) размером 1854590976 байт (1,8 ГБ). Я показал несколько других методов, и вы можете увидеть разницу во времени.
Итак, используя dd | PV | дд с прямым режимом, это заняло всего 2 минуты 57 секунд:
dd if=2017-09-07-raspbian-stretch-lite.img ibs=1M status=none | pv -s 1854590976 | dd of=/dev/sdX obs=1M oflag=direct status=none
(установка статуса на ноль останавливает дд испортить экран PV).
Использование pv само по себе показывает 100% сразу, но затем фактически потребовалось 8 минут 28 секунд:
pv 2017-09-07-raspbian-stretch-lite.img > /dev/sdX
Использование dd само по себе без просмотра прогресса заняло 8 минут 15 секунд:
dd if=2017-09-07-raspbian-stretch-lite.img of=/dev/sdX bs=1M
Используя тот же самый dd выше, но добавление oflag=direct делает это за 2 минуты 54:
dd if=2017-09-07-raspbian-stretch-lite.img of=/dev/sdX bs=1M oflag=direct
Я пробовал множество разных комбинаций, которые либо намного медленнее (некоторые занимают до 12 минут!), Либо снова показывают 100% сразу.
Одним из предостережений от использования pv таким способом является то, что вам нужно сначала узнать размер изображения и указать его с помощью опции -s. Если вы пишете такие вещи, как я, достаточно легко определить размер файла одновременно.
Надеюсь, это кому-нибудь поможет.
Согласно с...
dd if=2017-09-07-raspbian-stretch-lite.img of=/dev/sdX bs=1M oflag=direct
Я изменил это немного...
dd if=/dev/zero | pv -tearp -s 1820g | dd of=/dev/sda bs=100M oflag=direct
Непосредственный ответ дд: suggest iflag=fullblock
Так я и сделал...
dd if=/dev/zero | pv -tearp -s 1820g | dd of=/dev/sda bs=100M iflag=fullblock
Скорость записи прыгнула с 56,3 MiB/s
в 122MiB/s
Это означало время, необходимое для заполнения жесткого диска емкостью 2 ТБ.
был сокращен от 9 до 4 часов.
Оборудование:
ASUS x77vg
4GB Memory
Linux Mate 18.3
HDD: Seagate ST2000LM015-2E81 - Size: 1863GiB
Надеюсь, что это помогает кому-то...