Я использую dd в простейшем виде для клонирования жесткого диска:
dd if=INPUT of=OUTPUT
Тем не менее, я прочитал на странице руководства, что dd знает параметр размера блока. Существует ли оптимальное значение для параметра размера блока, которое ускорит процедуру клонирования?
linux
hard-drive
backup
clone
фита
источник
источник
Ответы:
64k кажется хорошим выбором:
(взято отсюда ).
это совпадает с моими собственными выводами относительно буферизации чтения / записи для ускорения io-тяжелой программы-конвертера, которую я когда-то использовал в @work.
источник
ДД с радостью скопирует с помощью БС того, что вы хотите, и скопирует частичный блок (в конце).
По сути, параметр размера блока (bs), по-видимому, задает объем памяти, который использовался для чтения кусочка с одного диска перед попыткой записи этого кусочка на другой.
Если у вас много ОЗУ, то увеличение размера БС (но целиком и полностью в ОЗУ) означает, что подсистема ввода-вывода максимально используется при массовых операциях чтения и записи, используя ОЗУ. Уменьшение BS означает, что издержки ввода-вывода как доля от общей активности возрастают.
Конечно, в этом есть закон убывающей отдачи. Мое грубое приближение состоит в том, что размер блока в диапазоне от 128K до 32M, вероятно, даст такую производительность, что накладные расходы будут маленькими по сравнению с обычным вводом / выводом, и увеличение их размера не будет иметь большого значения. Причина, по которой нижняя граница составляет от 128 КБ до 32 МБ, зависит от вашей ОС, аппаратного обеспечения и т. Д.
Если бы это был я, я бы провел несколько экспериментов, рассчитывая время копирования / клонирования, используя BS 128K и снова используя (скажем) 16M. Если кто-то заметно быстрее, используйте его. Если нет, то используйте меньший BS из двух.
источник
Для тех, кто попадает сюда через Google, даже если это обсуждение немного устарело ...
Имейте в виду, что dd глуп по какой-то причине: чем проще, тем меньше способов его испортить.
Сложные схемы разбиения (например, жесткий диск с двойной загрузкой, который дополнительно использует LVM для своей системы Linux) начнут вытаскивать ошибки из дерева в таких программах, как Clonezilla. Плохо размонтированные файловые системы могут взорвать ntfsclone до небес.
Поврежденная файловая система, клонированная посекторно, не хуже оригинала. Поврежденная файловая система после неудачной «умной копии» может быть в ДЕЙСТВИТЕЛЬНО жалкой форме.
В случае сомнений используйте dd и отправляйтесь на судебную экспертизу. Для работы с криминалистическими изображениями требуются посекторные копии (на самом деле, для этого может потребоваться больше секторов, чем вы сможете выполнить с помощью dd, но это долгая история). Это медленно и утомительно, но это сделает работу правильно.
Кроме того, ознакомьтесь с опциями «conv = noerror, sync», чтобы вы могли клонировать диски, которые начинают выходить из строя - или создавать ISO-образы с поцарапанных ( кашляющих ) компакт-дисков - без того, чтобы это занимало месяцы.
источник
sync
опция? Страница людей просто говорит:"use synchronized I/O for data and metadata"
. С чем мы синхронизируемся? Это может быть много разных вещей.Как уже говорили другие, не существует универсально правильного размера блока; то, что оптимально для одной ситуации или одного устройства, может быть ужасно неэффективно для другой. Кроме того, в зависимости от работоспособности дисков может оказаться предпочтительным использовать другой размер блока, чем тот, который является «оптимальным».
Одна вещь, которая довольно надежна на современном оборудовании, состоит в том, что размер блока по умолчанию в 512 байт, как правило, почти на порядок медленнее, чем более оптимальная альтернатива. Когда я сомневался, я обнаружил, что 64K - довольно солидный современный стандарт. Хотя 64K обычно не является оптимальным размером блока, по моему опыту, он намного эффективнее, чем по умолчанию. 64K также имеет довольно солидную историю надежной производительности: вы можете найти сообщение из списка рассылки Eug-Lug около 2002 года, рекомендующее размер блока 64K, здесь: http://www.mail-archive.com/eug- lug@efn.org/msg12073.html
Для определения оптимального размера выходного блока я написал следующий скрипт, который тестирует написание тестового файла 128M с dd в диапазоне разных размеров блока, от 512 байтов по умолчанию до максимум 64M. Имейте в виду, этот скрипт использует dd внутри, поэтому используйте его с осторожностью.
dd_obs_test.sh:
Посмотреть на GitHub
Я тестировал этот сценарий только в системе Debian (Ubuntu) и в OSX Yosemite, поэтому, возможно, потребуется некоторая настройка для работы с другими версиями Unix.
По умолчанию команда создаст тестовый файл с именем dd_obs_testfile в текущем каталоге. Кроме того, вы можете указать путь к пользовательскому тестовому файлу, указав путь после имени скрипта:
Выходные данные сценария представляют собой список протестированных размеров блоков и их соответствующих скоростей передачи, например:
(Примечание: единица измерения скорости передачи данных зависит от ОС)
Чтобы проверить оптимальный размер блока чтения, вы можете использовать более или менее тот же процесс, но вместо чтения из / dev / zero и записи на диск вы будете читать с диска и записывать в / dev / null. Сценарий для этого может выглядеть так:
dd_ibs_test.sh:
Посмотреть на GitHub
Важным отличием в этом случае является то, что тестовый файл - это файл, который записывается скриптом. Не указывайте эту команду на существующий файл, иначе существующий файл будет перезаписан случайными данными!
Для моего конкретного оборудования я обнаружил, что 128 КБ был самым оптимальным размером входного блока на жестком диске, а 32 КБ был наиболее оптимальным на SSD.
Хотя этот ответ покрывает большинство моих выводов, я сталкивался с такой ситуацией достаточно много раз, когда писал об этом в блоге: http://blog.tdg5.com/tuning-dd-block-size/ Вы можете найти больше подробностей на тестах я там проводил.
Этот пост StackOverflow также может быть полезен: dd: Как рассчитать оптимальный размер блока?
источник
Да, но вы не найдете его без большого количества испытаний. Я обнаружил, что 32M является хорошим значением для использования.
источник
клонирование старого загрузочного диска в новый ssd на внешнем sata (ssd to ssd)
используя Диски (инструмент)> формат> ATA Secure Erase (2 минуты)
Тестовые прогоны:
вторая попытка после безопасного удаления с тем же результатом:
источник