Como os comandos como fdisk -l encontram o tamanho do setor?

5

O MBR do disco contém essas informações e, portanto, quando eu chamo um comando como fdisk, um código de nível do kernel, eventualmente, é executado e lê-lo de uma parte específica no MBR? Se sim, qual parte disso? O que compensar?

Se não estiver no MBR, como esses tipos de comandos podem encontrá-lo? Eles não podem lê-lo desde o início de uma partição, considerando que precisam calcular o endereço inicial dessa partição e precisam do tamanho do setor para fazer isso, não é?

Como os comandos como fdisk são implementados para encontrar essas informações? De onde eles lêem?

    
por John P 01.11.2018 / 19:49

2 respostas

8

O tamanho do setor de um dispositivo não é armazenado no MBR.

Comandos de espaço do usuário, como fdisk , usam BLKBSZGET e BLKSSZGET ioctl s para recuperar os tamanhos de setor dos discos. Esses ioctl s são manipulados pelos drivers no kernel, que recuperam as informações relevantes das próprias unidades.

(Não há muita documentação sobre o ioctl s relevante; você precisa verificar o código fonte do kernel .)

Você pode ver as informações relevantes usando outras ferramentas que consultam unidades diretamente, por exemplo, hdparm . Em um pequeno SSD, hdparm -I me diz

[...]
Logical  Sector size:                   512 bytes
Physical Sector size:                   512 bytes
Logical Sector-0 offset:                  0 bytes
[...]
cache/buffer size  = unknown
Form Factor: 2.5 inch
Nominal Media Rotation Rate: Solid State Device
[...]

Em um grande disco giratório com setores 4K, eu obtenho

[...]
Logical  Sector size:                   512 bytes
Physical Sector size:                  4096 bytes
Logical Sector-0 offset:                  0 bytes
[...]
cache/buffer size  = unknown
Form Factor: 3.5 inch
Nominal Media Rotation Rate: 5400
[...]
    
por 01.11.2018 / 20:20
2

Existem algumas perguntas, tentei rastrear a resposta para "Onde o fdisk encontra o tamanho do setor de um disco?" O melhor que encontrei é que obtém as informações de ioctl .

ioctl informações sobre Wikipédia e Página man do Linux .

link do código-fonte fdisk

    
por 01.11.2018 / 20:21