Я знаю, что выполнение dd if = / dev / hda of = / dev / hdb делает глубокую копию жесткого диска. Я слышал, что люди смогли ускорить процесс, увеличив количество байтов, которые читаются и записываются за один раз (512) с помощью опции «bs».
У меня вопрос:
От чего зависит идеальный размер байта для копирования с жесткого диска?
и
Почему это определяет идеальный размер байта?
Как говорит Крис С., оптимальный размер блока зависит от оборудования. По моему опыту, он всегда больше, чем 512 байт по умолчанию. Если вы работаете с необработанными устройствами, геометрия вышележащей файловой системы не будет иметь никакого эффекта. Я использовал приведенный ниже сценарий, чтобы «оптимизировать» размер блока dd.
#!/bin/bash
#
#create a file to work with
#
echo "creating a file to work with"
dd if=/dev/zero of=/var/tmp/infile count=1175000
for bs in 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 8M
do
echo "Testing block size = $bs"
dd if=/var/tmp/infile of=/var/tmp/outfile bs=$bs
echo ""
done
rm /var/tmp/infile /var/tmp/outfile
К сожалению, идеальный размер будет зависеть от вашей системной шины, контроллера жесткого диска, конкретного диска и драйверов для каждого из них. Единственный способ найти идеальный размер - это пробовать разные размеры. Справедливое предупреждение, что некоторые устройства поддерживают только один размер блока, хотя это бывает редко, и обычно драйверы все равно компенсируют разницу.
Я считаю, что размер блока 2 ^ 15 или 2 ^ 16 лучше всего подходит для моих дисков SATA WDC (8 МБ кэш-памяти), подключенных к RAID-контроллеру Adaptec SAS, 4x PCIe, 64-битной FreeBSD 8.0-STABLE. Но для моего дешевого старого флеш-накопителя размеры 2 ^ 10 кажутся самыми быстрыми.
«Идеальный размер» почти всегда равен степени двойки.
Я могу поручиться за то, что измерил результат выполнения теста на используемом устройстве, прежде чем тратить время впустую. Я тупо не заморачивался и после измерения, а затем корректировки размера моего блока, вдвое сократил мою DD-длительность передачи 590 ГБ. То же значение BS сократило бы время только на 20%, если бы использовалась другая комбинация кэдди / накопитель.