Я пытаюсь определить оптимальный размер для большой копии с моего жесткого диска, используя dd. Я пытаюсь выяснить, какой размер блока лучше всего использовать, и я бы предположил, что это размер аппаратного блока для этого диска.
Я пытаюсь определить оптимальный размер для большой копии с моего жесткого диска, используя dd. Я пытаюсь выяснить, какой размер блока лучше всего использовать, и я бы предположил, что это размер аппаратного блока для этого диска.
Ответы:
Команда lsblk отлично подходит для этого:
lsblk -o NAME,PHY-SeC
Результаты:
NAME PHY-SEC
sda 512
├─sda1 512
├─sda2 512
└─sda5 512
Linux выставляет размер физического сектора в файлах /sys/block/sdX/queue/physical_block_size
. Хотя, чтобы получить лучшую производительность, вам, вероятно, следует провести небольшое тестирование с различными размерами и размерами. Я мог бы не найти в ясный ответ в том , что , используя именно физический размер блока будет получить результат оптимального (хотя я предполагаю , что это не может быть плохим выбором).
hdparm
, вероятно, будет лгать вам.
$ sudo hdparm -I /dev/sda | grep -i physical
Physical Sector size: 4096 bytes
hdparm -I /dev/sda | grep Sector
лучше, так как он покажет как физические, так и логические размеры одновременно, для удобства сравнения.
Мой не предназначен для полного ответа, но я надеюсь, что это также помогает.
Вот кое-что из http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.html
Для более быстрого резервного копирования это может помочь определить оптимальный размер блока дискового устройства, которое вы собираетесь сделать резервную копию. Предполагая, что вы собираетесь сделать резервную копию / dev / sda, вот как вы можете использовать команду fdisk для определения наилучшего размера блока:
rescuecd#/> /sbin/fdisk -l /dev/sda | grep Units
Units = cylinders of 16065 * 512 = 8225280 bytes
Обратите внимание, что на выводе fdisk указано «цилиндры 16065 * 512». Это означает, что на диске 512 байт на блок. Вы можете значительно повысить скорость резервного копирования, увеличив размер блока кратным 2-4. В этом случае оптимальный размер блока может быть 1 КБ (512 * 2) или 2 КБ (512 * 4). Кстати, жадность и использование блока размером 5k (512 * 10) или чего-то чрезмерного не поможет; в конечном итоге система станет узким местом на самом устройстве, и вы не сможете выжать какую-либо дополнительную производительность из процесса резервного копирования. (выделение добавлено)
Я подозреваю, что разница в производительности между почти оптимальным и оптимальным размером блока для данной конфигурации незначительна, если набор данных не огромен. Действительно, пользователь FixUnix (сообщение от 2007 года) утверждал, что его оптимальные времена были только на 5% быстрее, чем неоптимальные. Может быть, вы можете выжать немного больше эффективности, используя кратный размер «кластера» или размер блока файловой системы.
Конечно, если вы переместитесь слишком далеко по обе стороны от оптимального размера блока, у вас возникнут проблемы.
Суть в том, что вы, скорее всего, получите только около 5% производительности (то есть 3 минуты в час) при абсолютном оптимальном размере блока, поэтому подумайте, стоит ли вам потратить время и усилия на дальнейшие исследования. Пока вы держитесь подальше от экстремальных ценностей, вы не должны страдать.
echo "p" | /sbin/fdisk /dev/sda...
вместо /sbin/fdisk -l /dev/sda...
? второй будет чище и не будет пытаться внести какие-либо изменения.
/sbin/fdisk -l /dev/sda | grep Units
. Возможно, он изменился за последние два года. В любом случае я обновил ваш ответ.
Каждая передача диска генерирует прерывание, которое должен обрабатывать процессор. Типичный диск 50 Мбит / с захочет генерировать 100000 из них каждую секунду при размере блока 512 байт. Обычный процессор будет обрабатывать 10 тысяч из них, поэтому больший (2 ^ x) размер блока будет более удобен (4 КБ как размер блока ФС по умолчанию в большинстве случаев). системы до 64К размера ISA DMA) было бы более практичным ...
Кроме того, вы можете просмотреть выходные данные, lshw
чтобы проверить другие результаты (а также потому, что я, кажется, hdparm
недоступен в моем дистрибутиве). Это может помочь сузить его:
sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'