Как определить размер считывания аппаратного блока для моего жесткого диска?

Я пытаюсь определить оптимальный размер для большой копии с моего жесткого диска, используя dd. Я пытаюсь выяснить, какой размер блока лучше всего использовать, и я бы предположил, что это размер аппаратного блока для этого диска.

6 ответов

Команда 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, Хотя, чтобы получить лучшую производительность, вам, вероятно, следует провести небольшое тестирование с различными размерами и размерами. Я не мог найти четкого ответа в том, что использование именно физического размера блока даст оптимальный результат (хотя я полагаю, что это не может быть плохим выбором).

$ sudo hdparm -I /dev/sda | grep -i physical
Physical Sector size:                  4096 bytes

http://wayback.archive.org/web/20150921015457/https://nxadm.wordpress.com/2010/04/30/4096-physical-block-size-drives/

Мой не предназначен для полного ответа, но я надеюсь, что это также помогает.

Вот кое-что из http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.html


3 - Определите подходящий размер блока

Для более быстрого резервного копирования это может помочь определить оптимальный размер блока дискового устройства, которое вы собираетесь сделать резервную копию. Предполагая, что вы собираетесь сделать резервную копию /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 минуты в час) при абсолютном оптимальном размере блока, поэтому подумайте, стоит ли вам потратить время и усилия на дальнейшие исследования. Пока вы держитесь подальше от экстремальных ценностей, вы не должны страдать.

Каждая передача диска генерирует прерывание, которое должен обрабатывать процессор. Типичный диск 50 Мбит / с захочет генерировать 100000 из них каждую секунду при размере блока 512 байт. Обычный процессор будет обрабатывать 10 с тысяч из них, поэтому больший (2^x) размер блока будет более удобным (4 КБ как размер блока ФС по умолчанию в большинстве случаев). системы до 64К размера ISA DMA) было бы более практичным...

Кроме того, вы можете посмотреть через вывод lshw чтобы проверить другие результаты, (а также потому, что у меня, кажется, нет hdparm доступно в моем дистрибутиве.) Это может помочь сузить его:

sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'
Другие вопросы по тегам