Dividi um disco rígido USB externo em duas partições usando o GParted. Ambas são partições primárias formatadas como FAT32 e possuem o mesmo tamanho (500 GB). Esta é a saída de file -s
:
/dev/sdb1: 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 2048, sectors 976760832 (volumes > 32 MB), FAT (32 bit), sectors/FAT 119232, reserved 0x3, serial number 0x99034dfb, label: "TOSHIBA1 "
/dev/sdb2: 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 976762880, sectors 976760832 (volumes > 32 MB), FAT (32 bit), sectors/FAT 119232, reserved 0x1, serial number 0x96cbe274, label: "TOSHIBA2 "
Em /dev/sdb2
, o que é hidden sectors
e por que é maior que sectors
? A diferença é 2048, que é o valor de hidden sectors
for /dev/sdb1
. Isso é uma coincidência? Um erro do GParted ou do file
comando? Mais importante ainda, é algo para se preocupar?
Responder1
dr.
Nada com que se preocupar.
Artigo da WikipédiaProjeto do sistema de arquivos FATmenciona "setores ocultos" algumas vezes e a descrição comum das entradas de metadados relevantes é
Contagem de setores ocultos anteriores à partição que contém esse volume FAT. Este campo deve ser sempre zero em mídias que não estão particionadas.
(com algumas peculiaridades). Esta descrição parece se adequar aos valores que você observa no seu caso particular.
Espero que as ferramentas do Linux nunca usem esse valor por padrão. No seu caso, os respectivos valores 2048
e 976762880
são válidos no contexto de /dev/sdb
, mas se você considerar /dev/sdb1
e /dev/sdb2
respectivamente, esses dispositivos não são particionados, portanto, em seu contexto, "setores ocultos" deveriam ser 0
.
É comum montar com like mount /dev/sdb1 /some/mountpoint
, mas se a partição começar no deslocamento de 2.048 setores de 512 bytes, você poderá fazer o mesmo com
mount -o offset=$((2048*512)) /dev/sdb /some/mountpoint
Portanto, não há uma indicação clara de qual contexto é o “certo” no que diz respeito ao Linux. Outra dica de que o valor dos "setores ocultos" não deveria importar é o fato de incorporar informações que pertencem à tabela de partição nas estruturas de metadados do sistema de arquivos. Hoje em dia tendemos a não misturar camadas de abstração assim. É relativamente fácil “dessincronizar” as duas informações. E como o sistema operacional precisa ler a tabela de partição para encontrar o sistema de arquivos, informações redundantes sobre o deslocamento disponíveis somente depois que você já conhece o deslocamento dificilmente são úteis.
Observe que há outra informação redundante: as tabelas de partição contêmIDs de partição(MBR) ouGUIDs de tipo de partição(GPT) que deveria corresponder aos sistemas de arquivos reais nas partições, mas pode não corresponder. No entanto, esta informação, se coerente, é bastante útil porque você pode aprender o que esperar (qual sistema operacional, possível inicialização múltipla, partições swap) examinando apenas a tabela de partições. Na prática, às vezes isso é útil para humanos e às vezes para máquinas; especialmente a UEFI precisa saber qual partição estáPartição do sistema EFI. Mas se você disser ao Linux, mount /dev/sdb1 …
ele tentará detectar o sistema de arquivos real em vez de examinar /dev/sdb
, ler a tabela de partições e usar o ID/GUID da partição.
Não sei qual foi a lógica por trás dos “setores ocultos”. No entanto, parece que existiram/existem alguns dispositivos que dependem deste valor de alguma forma. Compararman 8 mkfs.fat
:
-h number-of-hidden-sectors
Selecione o número de setores ocultos no volume. Aparentemente, algumas câmeras digitais ficam indigestas se você alimentá-las com um cartão CF sem esses setores ocultos, esta opção permite satisfazê-las. Assume0
se nenhum valor for fornecido na linha de comando.
Parece que o GParted foi em frente e tentou satisfazer até mesmo “algumas câmeras digitais” ou algo assim. Então este é umcoisa boa. Você absolutamente não precisa refazer com outra ferramenta.
Responder2
'Setores ocultos' é um nome impróprio para o deslocamento da partição, armazenado no setor de inicialização FAT ou NTFS, em uma estrutura de dados (também enganosamente) chamada deBloco de parâmetros do BIOS; aqui, 'BIOS' refere-se a um componente do MS-DOS e não ao firmware do sistema. O valor é (supostamente) o número de setores que precedem o setor de inicialização no disco. Nada mais nada menos. Para um sistema de arquivos FAT que reside em mídia não particionada e abrange todo o disco, deve ser zero.
Quando o setor de inicialização FAT ou NTFS é carregado, ele usa o valor de ‘setores ocultos’ para localizar a partição no disco. A partir daí, o setor de inicialização é capaz de localizar estruturas do sistema de arquivos e carregar um gerenciador de inicialização de estágio posterior, como IO.SYS (MSLOAD), NTLDR ou BOOTMGR. Fora isso, o valor geralmente não é usado. Então, se você não planeja inicializar a partir desse sistema de arquivos em um sistema BIOS, isso nem deveria importar... embora você nunca saiba quais implementações malucas de FAT você encontrará.