Як знайти розмір пристрою для читання блоку обладнання на жорсткому диску?


47

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



1
@Sepero дав єдину реальну відповідь.
sjas

Відповіді:


44

Команда lsblk чудово підходить для цього:

lsblk -o NAME,PHY-SeC

Результати:

NAME   PHY-SEC 
sda        512 
├─sda1     512 
├─sda2     512 
└─sda5     512 

3
Чи відрізняє це логічний розмір від фізичного розміру?
CMCDragonkai

2
Не забезпечить фактичного фізичного розміру.
sjas

7
Для мене працює, PHY-SEC показує правильний фізичний, а LOG-SEC - логічний розмір.
soger

31

Linux розкриває розмір фізичного сектору у файлах /sys/block/sdX/queue/physical_block_size. Хоча, щоб досягти найкращої продуктивності, вам, мабуть, варто зробити невелике тестування з різними розмірами та вимірюванням. Я міг би НЕ знайти в ясний відповідь в тому , що , використовуючи саме фізичний розмір блоку буде отримати результат оптимального (хоча я припускаю , що це не може бути поганим вибором).


2
У мене є система Debian Lenny (2.6.26 ядра), яка відкриває лише hw_sector_size в цьому місці, і новіша система Ubuntu Karmic (ядро 2.6.31), яка забезпечує і те, і інше. тож це дещо залежить від ядра, яке використовується.
квакш-кіхот

Не забезпечить фактичного фізичного розміру.
sjas

@sjas Ви можете розширити? Звідки ти це знаєш?
Хашим

1
@Hashim я перевірив це на старих жорстких дисках, де я мав де десь 512b і 4k розмір сектора. superuser.com/a/426015/145072 - це рішення, яке фактично працювало. все, окрім hdparmцього, ймовірно, вам бреше.
sjas

28
$ 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/


3
Це має бути прийнятою відповіддю, оскільки це єдине, що забезпечує реальну фізичну цінність.
sjas

4
hdparm -I /dev/sda | grep Sectorприємніше, оскільки він покаже як фізичний, так і логічний розміри одразу для зручного порівняння.
sjas

7

Моя не має бути повною відповіддю, але я сподіваюся, що це також допомагає.

Ось трохи від 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. У цьому випадку оптимальним розміром блоку може бути 1k (512 * 2) або 2k (512 * 4). До речі, жадібність та використання блоку розміром 5 к (512 * 10) або щось надмірне не допоможуть; врешті-решт система буде вузьким місцем на самому пристрої, і ви не зможете видалити додаткові показники з процесу резервного копіювання. (наголос додано)


Я підозрюю, що різниця у продуктивності між майже оптимальним та оптимальним розміром блоку для даної конфігурації є незначною, якщо набір даних не є величезним. Дійсно, користувач FixUnix (повідомлення від 2007 р.) Стверджував, що його оптимальні часи були лише на 5% швидшими, ніж неоптимальні. Можливо, ви можете вичавити трохи більшу ефективність, скориставшись кратним розміром кластера або розміром блоку файлової системи.

Звичайно, якщо ви переїдете занадто далеко в будь-який бік оптимального розміру блоку, ви зіткнетеся з проблемою.

Суть полягає в тому, що ви, швидше за все, отримаєте лише близько 5% продуктивності (тобто 3 хвилини на годину) з абсолютним оптимальним розміром блоку, тому подумайте, чи варто ваших витрат часу та зусиль для подальшого дослідження. Поки ви тримаєтесь подалі від екстремальних цінностей, ви не повинні страждати.


1
якась причина використання echo "p" | /sbin/fdisk /dev/sda...замість /sbin/fdisk -l /dev/sda...? другий буде більш чистим і не буде намагатися вносити будь-які зміни.
шарлатаний кіхот

Ви б найкраще запитали Марка Коліха (пов'язаний). Він створював резервну копію, і я лише цитував розділ його статті.
Марк C

1
@MarkC Використовується пов'язана стаття /sbin/fdisk -l /dev/sda | grep Units. Це може бути змінено за останні два роки. У будь-якому випадку я оновив вашу відповідь.
Боб

2
ІМО це найкорисніша відповідь головним чином через останній жирний абзац. Linux працює дуже важко, щоб оптимізувати доступ до диска, доки ви не використовуєте відповідний параметр планувальника io та брудні буфери для вашого диска, розмір блоку в 8192 байт повинен бути нормальним для будь-якої ситуації.
soger

4

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


Не могли б ви уточнити?
sjas

1
@Sjas Те, що він або вона говорить, - це, мабуть, що кожен сектор передається окремо з пов'язаним "перериванням", який повинен обробляти процесор. Більший розмір блоку означає меншу кількість переривань (і, отже, меншу кількість циклів процесора) для однакової кількості даних.
Марк C

1

Крім того, ви можете подивитися за результатами, lshwщоб перевірити інші результати (а також тому, що я, здається, не маю hdparmдоступності в своєму дистрибутиві.) Це може допомогти звузити це:

sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.