Ho risposto a questa domanda , supponendo che il *.img
file 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?
Ho risposto a questa domanda , supponendo che il *.img
file 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:
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 fdisk
es. 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
Secondo la documentazione per i file sysfs della coda :
# cat /sys/block/sda/queue/hw_sector_size
512
loopN
posto 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.
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.
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