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

51094
Flame

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

43
Относится к [SF]: [физический размер блока ext3 / ext4] (http://serverfault.com/q/604893/197218) Palec 9 лет назад 0
@Sepero предоставил единственный реальный ответ. sjas 9 лет назад 0

6 ответов на вопрос

43
Thomas Bratt

Команда lsblk отлично подходит для этого:

lsblk -o NAME,PHY-SeC 

Результаты, достижения:

NAME PHY-SEC  sda 512  ├─sda1 512  ├─sda2 512  └─sda5 512  
Различает ли он логический размер и физический размер? CMCDragonkai 10 лет назад 3
Не предоставит фактический физический размер. sjas 9 лет назад 2
У меня работает, PHY-SEC показывает правильный физический, а LOG-SEC показывает логический размер. soger 8 лет назад 5
30
hlovdal

Linux выставляет размер физического сектора в файлах /sys/block/sdX/queue/physical_block_size. Хотя, чтобы получить лучшую производительность, вам, вероятно, следует провести небольшое тестирование с различными размерами и размерами. Я мог бы не найти в ясный ответ в том, что, используя именно физический размер блока будет получить оптимальный результат (хотя я предполагаю, что это не может быть плохим выбором).

у меня есть система Debian Lenny (ядро 2.6.26), которая только выставляет * hw_sector_size * в этом месте, и более новая система Ubuntu Karmic (ядро 2.6.31), которая обеспечивает и то, и другое. так что это в некоторой степени зависит от используемого ядра. quack quixote 14 лет назад 2
Не предоставит фактический физический размер. sjas 9 лет назад 0
@sjas Не могли бы вы расширить? Откуда ты это знаешь? Hashim 6 лет назад 0
@Hashim Я протестировал несколько старых жестких дисков, которые у меня были, где у некоторых был 512b, а у некоторых размер сектора 4k. https://superuser.com/a/426015/145072 - это решение, которое действительно работает. все, кроме `hdparm`, скорее всего, будет вам лгать. sjas 6 лет назад 1
@sjas Очень признателен, спасибо. Hashim 6 лет назад 0
24
Sepero
$ 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/

Это должен быть принятый ответ, поскольку он является единственным, обеспечивающим реальную физическую ценность. sjas 9 лет назад 3
`hdparm -I / dev / sda | grep Sector` лучше, так как он показывает как физические, так и логические размеры одновременно, для удобства сравнения. sjas 9 лет назад 4
7
Mark C

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

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

причина использования * `echo" p "| / sbin / fdisk /dev/sda....* вместо * `/ sbin / fdisk -l /dev/sda....*? вторая будет чище и не будет пытаться вносить какие-либо изменения. quack quixote 14 лет назад 1
Вам лучше всего спросить Марка Колича (связано). Он создавал резервную копию, а я процитировал только часть его статьи. Mark C 14 лет назад 0
@MarkC В связанной статье используется `/ sbin / fdisk -l / dev / sda | grep Units`. Возможно, он изменился за последние два года. В любом случае я обновил ваш ответ. Bob 12 лет назад 1
ИМО это самый полезный ответ в основном из-за последнего выделенного абзацем пункта. Linux очень усердно работает над оптимизацией доступа к диску, поэтому, пока вы используете соответствующий планировщик ввода-вывода и параметры грязного буфера для вашего диска, размер блока 8192 байта должен подойти для любой ситуации. soger 8 лет назад 2
4
ZaB

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

Не могли бы вы уточнить? sjas 9 лет назад 0
@Sjas То, что он или она говорит, очевидно, что каждый сектор передается отдельно со связанным «прерыванием», которое должен обрабатывать процессор. Больший размер блока означает меньшее количество прерываний (и, следовательно, меньшее количество используемых циклов ЦП) для одного и того же объема данных. Mark C 7 лет назад 1
1
Eliptical View

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

sudo lshw | awk 'BEGIN /SCSI/,!//' 

Похожие вопросы