Trovare la dimensione del settore di una partizione


24

Ho risposto a questa domanda , supponendo che il *.imgfile avesse una dimensione settoriale di 512.

Come eseguire una query su un dispositivo o sull'immagine di un dispositivo per trovare la dimensione del settore corretta?

Risposte:


26

fdisk -l (che è una L inferiore nel parametro) mostrerà, tra le altre informazioni, anche la dimensione del settore.

$ 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

Ciò dimostra che la dimensione del settore è di 512 byte.

EDIT: le versioni più recenti di fdiskes. fdisk(Dal pacchetto util-linux 2.20.1), mostreranno anche le dimensioni del settore logico e fisico. Ad esempio, uscita rilevante da un "WDC WD10EFRX 1 TB drive":

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

Quindi erano 4096 byte, non 512 byte.
Hibou57,

26

Secondo la documentazione per i file sysfs della coda :

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

1
Questo non funzionerà con file di immagine arbitrari. Come dovrebbe sapere il kernel su di loro?
Christian Pietsch,

1
@ChristianPietsch file immagine arbitrari vengono normalmente montati mediante dispositivi loop, quindi questo sarà lavorare per loro. Assicurati di usare al loopNposto di sdX. Tuttavia, è piuttosto inutile in un certo senso, dal momento che i file di immagine non hanno davvero alcun settore e queste informazioni ti diranno solo le dimensioni del settore del dispositivo attualmente montato.
Ruslan,

1

Si può semplicemente usare il file(1)comando e fare la matematica da solo. Funziona anche se hai solo un'immagine del sistema FAT.

Per esempio:

$ 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

Questa partizione ha 64 settori per cluster. Il numero di byte in ciascun settore è 512, poiché è il valore predefinito, pertanto la dimensione del cluster è 32 KB.

Si noti che la dimensione del settore può essere maggiore di 512 (la specifica FAT la limita a 4096 ma è possibile aumentare). Quando ciò accade, vedrai un ulteriore campo "Byte / settore" nell'output.

$ 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

Effettuare nuovamente la corrispondenza, 4096 byte × 16 settori = 64 KiB per cluster.


0

grazie sopra le risposte, su fdisk che mostra le dimensioni del settore fisico e il percorso / sys ... ma una nota ... di Lucas nel libro Absolute FreeBSD .... quasi ogni hdd mentirà sulle dimensioni del settore, quindi in caso di Linux

/sys/block/sda/queue/hw_sector_size

mostrerò sempre 512 per migliorare le prestazioni, è bene tenere conto delle dimensioni del settore fisico, reali, che sono realmente utilizzate nella logica hardware. È stato mostrato da fdisk ed è presente in

cat /sys/block/sdc/queue/physical_block_size 
4096
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.