Por que a partição inicia no setor 2048 em vez de 63?

54

Eu tinha duas unidades particionadas iguais e executando duas partições RAID em cada uma.

Um morreu e eu o substituí na garantia pelo mesmo modelo.

Ao tentar particioná-lo, a primeira partição pode iniciar apenas no setor 2048, em vez de 63 anteriormente. O drive possui geometria diferente da anterior e do restante. (Menos cabeças / mais cilindros)

Unidade antiga:

$ sudo fdisk -c -u -l /dev/sdb 

Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000aa189

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *          63   174080339    87040138+  83  Linux
/dev/sdb2       174080340   182482334     4200997+  82  Linux swap / Solaris
/dev/sdb3       182482335  3907024064  1862270865   fd  Linux raid autodetect

Unidade remanufaturada recebida da garantia:

$ sudo fdisk -c -u -l /dev/sda

Disk /dev/sda: 2000.4 GB, 2000398934016 bytes
81 heads, 63 sectors/track, 765633 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d0b5d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048  ...

Por que é que?

gcb
fonte
1
A saída não indica que este é um avançado formato 4K unidade: Sector size (logical/physical): 512 bytes / 512 bytes.
bwDraco
1
Por que isso foi prejudicado?
bwDraco
1
Não concordo com o voto negativo, também não estava ciente do equívoco do alinhamento de faixas e as informações do JdeBP são úteis e relevantes para uma pergunta válida.
Garrett
Perguntas e respostas repetidas: superuser.com/q/565577/19956 , unix.stackexchange.com/q/81556/3054 .
pts
Usando unidades de disco mais recentes, recomenda-se a GPT , que usa 2048como setor de inicialização por padrão. O disco mais antigo provavelmente foi formatado com um utilitário mais antigo e usando o formato de tabela de partição não GPT. Para particionar discos "Advanced Format 4K" mais recentes, use os GPT fdiskUtilities . Para RAID, certifique-se de digitar fd00 Linux RAIDe rotular suas partições adequadamente.
TrinitronX

Respostas:

44

Como o disco antigo foi particionado com um utilitário antigo, como o Linux fdisk, que implementou inutilmente o alinhamento de faixas usando a geometria totalmente falsa que você vê relatada, e o novo disco foi ou está sendo particionado por um utilitário mais recente que (por padrão) alinha aos limites de 1MiB.

Leitura adicional

JdeBP
fonte
7
Em outras palavras, o número do setor LBA 63 corresponde ao cilindro 0, cabeçalho 1, setor 1 no formato CHS , que é o primeiro setor que você pode usar no formato MBR. No entanto, o número 63 não é divisível por 8, o que causa um problema nas unidades 4K, portanto, algumas ferramentas modernas iniciam a primeira partição em 2048, que também fornece compatibilidade futura com a GPT.
billc.cn
8
Há momentos em que alguém anseia por uma maneira de anotar comentários, especialmente comentários em que outros tentam colocar erros definitivos na boca. Essas "outras palavras" estão incorretas , e é por isso que não são o que escrevi . O primeiro setor que se pode usar (como várias pessoas têm) para uma partição primária com uma tabela de partição MBR é o LB # 2, ou mesmo o LB # 1, se não for necessário compatibilidade com coisas como o LVM da IBM. E o alinhamento 1MiB não tem nada a ver com a compatibilidade da tabela de partições EFI.
JdeBP #
Certo, acho que cometi um erro sobre a primeira parte, mas, para a segunda parte, quis dizer que, se você começar em 2048, não terá problemas em converter a unidade em GPT no futuro, daí a palavra "also" e "future" .
billc.cn
5
Isso ainda está incorreto. Um não terá nenhum problema de qualquer maneira . Faça a aritmética. Até o alinhamento original com um limite (falso) de faixa oferece espaço mais que suficiente. Esses 60 setores de 512 bytes podem conter 240 entradas da tabela de partições EFI. Novamente: O alinhamento 1MiB não tem nada a ver com a compatibilidade da tabela de partições EFI.
JdeBP
4
fdisknão é um "utilitário antigo", é mantido ativamente. Apenas NÃO use "geometria de disco falsa" via -c=dos(está desativada por padrão!). A página de manual explicitamente adverte contra fazer isso, pois o CHS está morto como disco. O link para a página do JdBP está morto, mas o histórico do alinhamento 1MiB (setor 2048) pode ser encontrado na entrada do Logical Disk Manager da Wikipedia . É uma verruga do Windows Vista: "O uso de um limite de alinhamento de 1 MiB permite uma edição mais segura da tabela de partições com o Vista Disk Mgt".
David Tonhofer
36
fdisk -c=dos

Você usou a tabela de partição antiga do DOS ao criar sua partição. Versões mais recentes fdiskdo não usam o modo de compatibilidade dos por padrão.

Mike
fonte
3
A resposta aceita tem algumas informações valiosas, mas esta resposta tem a gema que eu precisava para solucionar meu problema.
Jcbwlkr
fdisk não me deixou recriar uma partição a partir de setor 2048 sem este argumento - Eu fuiFirst sector (3072-314572799, default 3072):
tomfanning
5
Isso é crítico se você estiver tentando redimensionar uma partição, que com o fdisk significa excluí-la e recriá-la; você precisa que a partição comece no mesmo local.
mcr
não funciona mais com fdisk from util-linux 2.28: /
akostadinov 28/09
1
encontrou-o fdisk -c=dos -u=cylinders /dev/sdbno gist - gist.github.com/jkullick/febf46756435f1fa99dc56f00782de03
akostadinov
7

Talvez seja útil adicionar um comentário aqui. Para a partição LUKS, diz-se para excluir e recriar a partição no mesmo local, mas maior antes da chamada cryptsetup resize. Mas quando você criou sua partição há muito tempo, ela começa no setor 63. Usando o fdisk, a partição será recriada no deslocamento errado, resultando em uma partição perdida.

Consegui recuperá-lo usando fdisk -c=dospara poder criar partição do setor 63, sem problemas.

Adrien Clerc
fonte
1

Não sei por que começou no 63, mas de acordo com o fdisk, o tamanho do seu setor é 512.

Portanto, se você deseja que suas partições e, assim, os clusters sejam alinhados, seu deslocamento inicial deve ser divisível por 512. 2048 é bastante comum atualmente.

Se você preferir setores desalinhados, sempre poderá fazer com que o GPart mova sua partição de volta para 63.

Editar:

Opa. Não viu que você tem um RAID. Você provavelmente deve postar seu RAID e tamanho da faixa.

surfasb
fonte
1
63 é 111111 em binário. O BIOS dos PCs, número do setor, é / foi codificado em seis bits, resultando em um número máximo de 111111 (63) setores por faixa. Esse máximo ainda é usado para geometria CHS virtual.
Chris Reid
1

Embora eu saiba que a pergunta real foi respondida, uma solução rápida para o problema do primeiro cilindro 63 vs 2048 é algo como:

sfdisk -d /dev/sdb | sfdisk --force /dev/sda

(se você tiver certeza de que possui unidades do mesmo tamanho)

Você pode então continuar adicionando as várias partições de volta aos RAIDs, onde recebeu reclamações sobre as partições não serem do mesmo tamanho devido à diferença no cilindro de partida 63/2048, descartando os eventuais tamanhos de partição.

Jason Byrne
fonte
você deve explicar o que faz, destino de origem?
Pawel Cioch 03/04
0

A opção 1 MiB (tamanho de bloco emulado de 2048 * 512 bytes) é uma excelente opção para várias configurações de armazenamento de hardware. Como as estruturas de dados do sistema de arquivos geralmente estão alinhadas com o ponto de início da partição, isso pode ser importante para maximizar a velocidade de leitura / gravação do armazenamento.

Por exemplo:

O RAID pode usar faixas de dados com tamanho entre 16 e 256 KiB. 1 MiB é um múltiplo inteiro disso, portanto, iniciar a partição em 1 MiB é compatível com o modelo RAID subjacente.

Os SSDs normalmente têm um tamanho de bloco de apagamento de 128 a 256 páginas NAND, que, dependendo da unidade, podem ser 256 KiB ou 512 KiB. Então, aqui novamente, iniciar a partição em 1 MiB é compatível com as características de armazenamento SSD subjacentes.

Os HDDs que rodam no formato Advance 512e têm um tamanho de bloco físico de 4 KiB e, novamente, 1 MiB é um múltiplo inteiro (embora um tanto grande) disso.

Portanto, se você tiver um drive AF e estiver particionando como GPT, poderá ficar perfeitamente satisfeito com sua primeira partição começando no bloco LBA 40 (um múltiplo inteiro dos 8 blocos lógicos em cada bloco físico do seu HDD), quase nenhum real. o armazenamento mundial é perdido apenas iniciando no bloco LBA 2048 (1 MiB), que é apenas um valor mais flexível para o padrão de particionamento de software, pois é adequado para praticamente qualquer configuração de hardware.

Ryan Feeley
fonte