Eu respondi a essa pergunta , assumindo que o *.img
arquivo tivesse um tamanho de setor 512
.
Como faço para consultar um dispositivo, ou a imagem de um dispositivo, para encontrar o tamanho correto do setor?
Eu respondi a essa pergunta , assumindo que o *.img
arquivo tivesse um tamanho de setor 512
.
Como faço para consultar um dispositivo, ou a imagem de um dispositivo, para encontrar o tamanho correto do setor?
Respostas:
fdisk -l
(menor L no parâmetro) mostrará, entre outras informações, o tamanho do setor também.
$ 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
Isso mostra que o tamanho do setor é de 512 bytes.
EDIT: As versões mais recentes de fdisk
, por exemplo, fdisk
(do pacote util-linux 2.20.1
), também mostrarão os tamanhos do setor lógico e físico. Por exemplo, saída relevante de uma "unidade 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
De acordo com a documentação para os arquivos sysfs da fila :
# cat /sys/block/sda/queue/hw_sector_size
512
loopN
vez de sdX
. Ainda assim, é inútil em certo sentido, já que os arquivos de imagem realmente não possuem setores, e essas informações apenas informam o tamanho do setor do dispositivo atualmente montado.
Pode-se apenas usar o file(1)
comando e fazer as contas ele mesmo. Isso funciona mesmo que você tenha apenas uma imagem do sistema FAT.
Por exemplo:
$ 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
Esta partição possui 64 setores por cluster. O número de bytes em cada setor é 512, como é o padrão, portanto, o tamanho do cluster é 32 KB.
Observe que o tamanho do setor pode ser maior que 512 (a especificação FAT o limita a 4096, mas você pode ir mais alto). Quando isso acontece, você verá um campo "Bytes / setor" adicional na saída.
$ 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
Faça a correspondência novamente, 4096 bytes × 16 setores = 64 KiB por cluster.
obrigado acima das respostas, sobre o fdisk mostrando o tamanho do setor físico e o caminho sobre / sys ... mas uma nota ... de Lucas no livro Absolute FreeBSD .... quase todo disco rígido fica sobre o tamanho do setor, por isso, no caso do linux
/sys/block/sda/queue/hw_sector_size
sempre, pelo que entendi, mostrará 512 para obter melhor desempenho; é bom levar em consideração o tamanho do setor físico, real, realmente usado na lógica de hardware. Mostrado pelo fdisk, e presente em
cat /sys/block/sdc/queue/physical_block_size
4096