Пошук розміру сектору розділу


24

Я відповів на це запитання , припускаючи, що *.imgфайл має розмір сектора 512.

Як запитувати пристрій чи зображення пристрою, щоб знайти правильний розмір сектора?

Відповіді:


26

fdisk -l (це нижчий показник L в параметрі) покаже, серед інших відомостей, і розмір сектора.

$ sudo fdisk -l

Disk /dev/sda: 150.3 GB, 150323855360 bytes
255 heads, 63 sectors/track, 18275 cylinders, total 293601280 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device Boot      Start         End      Blocks   Id  System
   /dev/sda1   *          63      208844      104391   83  Linux
   /dev/sda2          208845   209712509   104751832+  83  Linux

Це показує, що розмір сектора становить 512 байт.

EDIT: Більш нові версії, fdiskнаприклад, fdisk(з пакета util-linux 2.20.1), також покажуть вам логічний та фізичний розміри сектору. Наприклад, відповідний вихід з "WDC WD10EFRX 1TB-накопичувача":

Disk /dev/sdn: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Так було 4096 байт, а не 512 байт.
Hibou57

26

Відповідно до документації для файлів sysfs черги :

# cat /sys/block/sda/queue/hw_sector_size
512

1
Це не працюватиме для довільних файлів зображень. Як ядро ​​повинно знати про них?
Крістіан Піетш

1
@ChristianPietsch довільні файли зображень зазвичай монтуються через петлеві пристрої, тому це буде працювати для них. Просто не забудьте використовувати loopNзамість sdX. Тим не менш, це досить безглуздо в певному сенсі, оскільки файли зображень насправді не мають секторів, і ця інформація просто повідомить вам розмір сектору пристрою, який зараз встановлений.
Руслан

1

Можна просто використовувати file(1)команду і робити математику сам. Це працює, навіть якщо у вас є лише зображення системи FAT.

Наприклад:

$ sudo file -s /dev/sda5 | tr , '\n'
/dev/sda5: DOS/MBR boot sector
 code offset 0x58+2
 OEM-ID "mkfs.fat"
 sectors/cluster 64
 reserved sectors 64
 Media descriptor 0xf8
 sectors/track 63
 heads 255
 hidden sectors 147632128
 sectors 536870912 (volumes > 32 MB)
 FAT (32 bit)
 sectors/FAT 65536
 serial number 0x9f981691
 unlabeled

Цей розділ має 64 сектори на кластер. Кількість байтів у кожному секторі становить 512, оскільки це за замовчуванням, тому розмір кластера становить 32 КБ.

Зауважте, що розмір сектору може бути більше 512 (специфікація FAT обмежує його до 4096, але ви можете піднятись вище). Коли це станеться, ви побачите додаткове поле "Байти / сектор" у висновку.

$ sudo mkfs.fat -S 4096 -s 16 /dev/sda5
mkfs.fat 4.1 (2017-01-24)

$ sudo file -s /dev/sda5 | tr , '\n'
/dev/sda5: DOS/MBR boot sector
 code offset 0x58+2
 OEM-ID "mkfs.fat"
 Bytes/sector 4096
 sectors/cluster 16
 Media descriptor 0xf8
 sectors/track 63
 heads 255
 hidden sectors 147632128
 sectors 67108864 (volumes > 32 MB)
 FAT (32 bit)
 sectors/FAT 4096
 serial number 0xb059d826
 label: unlabeled

Зробіть матч ще раз, 4096 байт × 16 секторів = 64 КБ на кластер.


0

спасибі вище відповідей, про fdisk, що показує розмір фізичного сектору, і про / sys шлях ... але одна примітка ... Лукас у книзі Absolute FreeBSD .... майже кожен hdd буде брехати про розмір сектору, так що у випадку Linux

/sys/block/sda/queue/hw_sector_size

завжди, наскільки я можу зрозуміти, показуватиме 512 для кращої продуктивності, добре враховувати фізичний розмір сектора, реальний, який дійсно використовується в апаратній логіці. Він показаний fdisk, і він присутній в

cat /sys/block/sdc/queue/physical_block_size 
4096
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.