Вопрос или проблема
Мне регулярно нужно записывать образ .wic
на SD-карту. Я попробовал два инструмента: dd
в Linux и balenaEtcher.
balenaEtcher завершает работу за примерно 2 минуты, в то время как моя команда dd
работает 5 минут.
Вот команда dd
, которая работает правильно, но занимает слишком много времени:
dd if=sdimage.wic of=/dev/mmcblk0 bs=4M status=progress oflag=sync
Может кто-нибудь подсказать, как добиться оптимальной скорости с dd
? Я полагаю, это как-то связано с размером блока (bs), но не уверен, как выбрать его значение.
Ответ или решение
Когда речь идет о клонировании образов дисков, таких как образ SD-карты формата .wic
, многие пользователи сталкиваются с различиями в скорости между инструментами, такими как dd
и balenaEtcher. Ваш опыт с использованием команды dd
, которая занимает около 5 минут в сравнении с 2 минутами, необходимыми для balenaEtcher, может быть объяснен несколькими факторами.
1. Архитектура инструментов
dd
— это низкоуровневый инструмент, который копирует данные из одного файла в другой, используя указанные вами параметры. Он не включает в себя механизмы оптимизации, которые могут ускорить процесс записи. BalenaEtcher, с другой стороны, разработан с акцентом на производительность и производит оптимизацию процесса записи, используя различные акты и алгоритмы, которые позволяют значительно сокращать время выполнения.
2. Размер блока (bs)
Вы правильно отметили, что размер блока, указанный в команде dd
, может влиять на скорость выполнения. В вашем случае вы используете bs=4M
, что является довольно разумным размером блока, однако можно провести эксперимент с другими значениями, такими как bs=16M
или bs=32M
. На некоторых системах более крупные значения могут сократить время выполнения за счет уменьшения количества операций ввода-вывода.
3. Опции в dd
Опция oflag=sync
заставляет dd
дожидаться завершения записи каждого блока, прежде чем продолжить, тем самым увеличивая время выполнения. Попробуйте убрать эту опцию и посмотрите, как это повлияет на скорость. Однако учтите, что это приведет к меньшей надежности в случае несчастного случая, так как данные могут не быть записаны в должный момент.
4. Характеристики носителя
Разные SD-карты имеют различные характеристики записи и чтения. Некоторые из них могут поддерживать более высокие скорости записи с определенными размерами блоков. Поэтому стоит проверить характеристики вашей SD-карты и, возможно, провести тесты на других картах, чтобы определить примерно одинаковые условия.
5. Программная оптимизация
BalenaEtcher использует многоуровневый подход для проверки и записи данных, что также может способствовать увеличению скорости выполнения. Он может осведомляться об ошибках чаще и более эффективно использовать многоядерные процессоры, позволяя распределять нагрузку по нескольким ядрам, что, несомненно, может увеличить скорость записи.
Заключение
Для достижения оптимальной скорости с помощью dd
, стоит поэкспериментировать с размером блока, избегать использования опции oflag=sync
, проверять характеристики вашей SD-карты, а также рассмотреть возможность использования других инструментов, если ваша цель — максимальная скорость и эффективность записи. BalenaEtcher предоставляет согласованный и оптимизированный опыт, в то время как dd
требует большей настройки и понимания его работы для достижения аналогичных результатов.