Я знаю, что делать что- dd if=/dev/hda of=/dev/hdb
то значитглубокая копия жесткого диска. Я слышал, что люди смогли ускорить процесс, увеличив количество байтов, которые считываются и записываются за один раз (по умолчанию: 512
) с помощью bs
опции.
Мой вопрос:
- Что определяет идеальный размер байта для копирования с жесткого диска?
и
- Почему это определяет идеальный размер байта?
решение1
КакКрис С.написал вэтот ответоптимальный размер блока зависит от оборудования. По моему опыту, он всегда больше, чем 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
К сожалению, идеальный размер будет зависеть от вашей системной шины, контроллера жесткого диска, самого диска и драйверов для каждого из них. Единственный способ найти идеальный размер — продолжать пробовать разные размеры. Честно предупреждаю, что некоторые устройства поддерживают только один размер блока, хотя это бывает редко, и обычно драйверы в любом случае компенсируют разницу.
Я обнаружил, что размер блока 2^15 или 2^16 лучше всего подходит для моих дисков WDC (кэш 8 МБ) SATA, подключенных к контроллеру Adaptec SAS RAID, 4x PCIe, 64-битной FreeBSD 8.0-STABLE. Но для моего дешевого старого флеш-накопителя размеры 2^10 кажутся самыми быстрыми.
«Идеальный размер» почти всегда равен степени двойки.
решение3
Я могу поручиться за заслуги измерения результата выполнения теста на используемом устройстве до того, как тратить время. Я по глупости не стал этим заниматься, и после измерения, а затем корректировки размера блока сократил длительность DD для передачи 590 Гб вдвое. То же значение BS сократило бы время только на 20% при использовании другой комбинации caddy/drive.