Запись dd на флэш-накопитель USB вызывает массивные чтения

В настоящее время я восстанавливаю USB-накопитель с dd-изображением, которое я создал ранее. Однако наблюдается очень низкая скорость записи около ~ 7 Мбайт / с, хотя палка обычно намного быстрее.

Осмотрев немного, я заметил, что с USB-накопителя считывается большое количество данных, что объясняет низкую производительность записи. В то время ничего не было, кроме dd.

Отредактированная строка:

 sdd: busy 101% | read 18020 | write 613 | MBr/s 7.04 | MBw/s 7.1 

Я заметил подобное поведение при записи непосредственно в массив md с помощью dd. Однако при записи в смонтированную файловую систему с dd этого не происходит.

Поэтому мой вопрос заключается в том, почему читается с USB-накопителя при прямом написании блочного устройства и может ли это предотвратить повышение производительности записи?

  • Как установить Linux на флеш-диск с файловой системой NTFS?
  • Мощность USB 7 USB теряется через несколько секунд / минут
  • Как разместить загрузочный ISO на USB-накопителе?
  • Доступны ли резервные копии сервера для флеш-накопителей?
  • Выполнить программу при удалении USB-накопителя
  • Как переформатировать unmountable / unrecognized / unformatted USB-накопитель?
  • Как удалить все драйверы и другие файлы, связанные с устройством USB Mass Storage?
  • Как подключить две компьютеры к USB?
  • 2 Solutions collect form web for “Запись dd на флэш-накопитель USB вызывает массивные чтения”

    Таким образом, на 100% не понятно, что может произойти, но мое подозрение заключается в том, что вы пишете небольшие блоки (512 байт) на USB-устройстве, а затем dd-проверки, чтобы убедиться, что байт написан правильно – это приводит к LOTS чтения и Писать, читать и писать.

    Настройка размера вашего блока на «правильный» размер не является тривиальной, но есть несколько указаний на то, как это сделать. В общем, я обнаружил, что размер блока размером 64 КБ является хорошим компромиссом на большинстве фронтов, но ваши файловые системы могут вносить изменения в это, если вы используете что-либо экзотическое (например, zfs ).

    Попробуйте что-то вроде этого: lbzcat image-dd.bz2 | dd of=/deb/sdX bs=64k lbzcat image-dd.bz2 | dd of=/deb/sdX bs=64k

    Для более продолжительной дискуссии ознакомьтесь с этой записью .

    Для меня dd использует кеш страницы по умолчанию. Я думаю, что это нормально для систем с кешем страницы. Кэш страницы требует, чтобы запоминающее устройство считывалось, что может вызвать медленную скорость записи.

    Для меня есть 3 способа обойти это и получить полную скорость:

    1. Установите размер блока dd на 4096 или несколько. (Не читается)
    2. Установите размер блока dd на достаточно большое число. Для меня это было около 1 миллиона и выше. Я получил полную скорость около 1 миллиона. (Очень мало читает)
    3. Не используйте кеш страниц, oflags=direct параметр dd oflags=direct . Установите размер блока dd на достаточно большой кратный 512. Для меня это было около bs=120k и выше. (Не читается)

    Что-то примечание, размер моего системного блока для всех устройств хранения и размер страницы составляет 4096 байт. Найдено с:

     blockdev --getbsz /dev/sd? getconf PAGESIZE 

    Также размер сектора составляет 512 байт. fdisk и, возможно, parted могут рассказать вам размер сектора.

    Давайте будем гением компьютера.