Запись на диск с использованием `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

Надеюсь, что это помогает кому-то...

Другие вопросы по тегам