ti-enxame.com

Localizando o tamanho do setor de uma partição

Eu respondi esta pergunta , assumindo que o *.img o arquivo tinha um tamanho de setor de 512.

Como faço para consultar um dispositivo, ou a imagem de um dispositivo, para encontrar o tamanho correto do setor?

26
Stefan

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: versões mais recentes de fdisk por exemplo, fdisk (do pacote util-linux 2.20.1), também mostrará 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
28
Patkos Csaba

De acordo com documentação para os arquivos sysfs da fila :

# cat /sys/block/sda/queue/hw_sector_size
512
27
Anthony Ananich

Pode-se apenas usar o comando file(1) 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.

2
Tankman六四

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
0
Hex