Criar partição alinhada usando parted


68

Estou particionando um disco rígido não SSD com parted porque eu quero uma tabela de partição GPT.

parted /dev/sda mklabel gpt

Agora, estou tentando criar as partições alinhadas corretamente, então uso o seguinte comando para saber onde o primeiro setor começa:

parted /dev/sda unit s p free

Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End         Size        File system  Name      Flags
        34s    488397134s  488397101s  Free Space

Podemos ver que ele começa no setor 34 (esse é o padrão quando essa tabela de partição é usada).

Então, para criar a primeira partição, tentei:

parted /dev/sda mkpart primary 63s 127s

para alinhá-lo no setor 64, pois é um múltiplo de 8, mas mostra:

Aviso: A partição resultante não está alinhada corretamente para obter o melhor desempenho.

Os tamanhos do setor lógico e físico do meu disco rígido são de 512 bytes:

cat /sys/block/sda/queue/physical_block_size
512

cat /sys/block/sda/queue/logical_block_size 
512

Como crio partições alinhadas corretamente? O que estou fazendo errado?


Tem certeza de que os números do setor começam em zero?
— Burton Samograd

11
Eu tentei também parted /dev/sda mkpart primary 64s 128s(no caso de começar em 1), mas ele retorna o mesmo aviso.
— Marc

Parece que há um comando para verificar se um valor está alinhado: gnu.org/software/parted/manual/html_node/align_002dcheck.html . Talvez tente isso com vários valores usando um loop for e cuspa os valores que estão ok?
— Burton Samograd

Burton, eu não sabia sobre esse comando, mas ele não pode ser usado até ter uma partição.
— Marc

Desculpe por isso, não li a descrição com atenção suficiente.
— Burton Samograd

Respostas:


68

Para alinhar a partição, partedvocê pode usar a --alignopção Os tipos de alinhamento válidos são:

  • nenhum - use o alinhamento mínimo permitido pelo tipo de disco.
  • cilindro - Alinha partições aos cilindros.
  • minimal - Use o alinhamento mínimo, conforme fornecido pelas informações de topologia do disco. Esse valor e o opt usarão as informações de layout fornecidas pelo disco para alinhar os endereços da tabela de partição lógica aos blocos físicos reais nos discos. O valor mínimo é o alinhamento mínimo necessário para alinhar a partição corretamente aos blocos físicos, o que evita a degradação do desempenho.
  • ideal Use o alinhamento ideal, conforme fornecido pelas informações de topologia do disco. Isso se alinha a um múltiplo do tamanho do bloco físico, de maneira a garantir o desempenho ideal.

Outra dica útil é que você pode definir o tamanho com porcentagens para alinhar. Comece em 0% e termine em 100%. Por exemplo:

parted -a optimal /dev/sda mkpart primary 0% 4096MB


5
O comando não deve terminar 0% 100%? De onde 4096MBvem?
— N

4
O valor 4096MB é usado aqui apenas um exemplo para mostrar a capacidade de misturar% e números de tamanhos específicos
— semelhante a

3
Apenas uma observação, eu tive que colocar as '0%'aspas no meu shell para executar o comando corretamente.
— Adam Eberlin

@lik você tem sugestão para este post unix.stackexchange.com/questions/248939/...
— AnkurTank

11
Nevermind o acima, eu só notei o separaram printusa kB como 1000 bytes ...
— jiggunjer

9

Minha solução foi usar o gdisk, que pode executar o alinhamento de partições automaticamente em 2048 setores (1024 KB) por padrão, embora possa ser alterado no menu de especialistas.


7

No Arch Wiki :

Ao criar uma partição, o parted pode avisar sobre o alinhamento inadequado da partição, mas não sugere o alinhamento adequado. Por exemplo:

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                     

O aviso significa que a partição startnão está alinhada.

Digite Ignorepara prosseguir de qualquer maneira , imprima a tabela de partição em setores para ver onde é iniciada e remova / recrie a partição com o setor inicial arredondado para aumentar as potências de 2 até o aviso parar. Como exemplo, em uma unidade flash com setores de 512B, a Parted queria que as partições iniciassem em setores com um múltiplo de 2048, que é um alinhamento de 1 MB.

Além disso, logo acima desta seção, eles afirmam que as unidades binárias IEC mais precisas de KiB, MiB, GiB etc. são aceitáveis ​​para unidades e também KB, MB, GB, etc.

Pessoalmente, meu comando exato que resolveu isso foi:

mkpart hd ext4 1024KiB 8470MB

Não reclamou, acho que queria alinhamentos de 1 MB.


Não, eu tentei 1048576KiB, sem dados.
— Behrooz 15/03

5

Uma pequena correção. Pelo que entendi, os discos GPT não têm mais tipos de partição, são todos "primários". O comando 'mkpart primary' não cria uma partição primária como nos discos do msdos, apenas cria uma partição chamada primária. Você também pode usar o comando

(parted) mkpart Parted-FUN! 21476MB 4000787MB
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start    End        Size       File system  Name         Flags
 1      1.05MB   17181MB    17180MB    ext4         raid-var
 2      17181MB  21476MB    4295MB                  raid-swap
 3      21476MB  4000786MB  3979310MB               Parted-FUN!

Isso pode causar confusão se você tentar criar partições lógicas, eu sei que isso aconteceu comigo.

(parted) mkpart extended 21476MB 4000787MB
(parted) mkpart logical 21476MB 1000787MB
Warning: You requested a partition from 21476MB to 1000787MB.
The closest location we can manage is 4000786MB to 4000786MB.
Is this still acceptable to you?
Yes/No? Yes
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start      End        Size       File system  Name       Flags
 1      1.05MB     17181MB    17180MB    ext4         raid-var
 2      17181MB    21476MB    4295MB                  raid-swap
 3      21476MB    4000786MB  3979310MB               extended
 4      4000786MB  4000786MB  0.00MB                  logical

Você não pode criar uma partição chamada "lógica" dentro de uma partição chamada "estendida".


obrigado, eu perdi um pouco de tempo graças a essas ferramentas bad cli, e você me fez descobrir o que está acontecendo.
— Florian Heigl

5

A resposta aceita por @lik mostra como você pode especificar o alinhamento preferido. No entanto, parted sempre usa esse alinhamento para verificar a partição resultante, mas nem sempre cria partições com esse alinhamento.

TL; DR: Quando 1MiB é o alinhamento ideal, especificar 0% funcionará para discos de 200MiB e maiores. Para discos menores ou alinhamento maior, a especificação de 0G pode funcionar onde 0% não. Veja abaixo o porquê.

O Parted tenta satisfazer as restrições de alinhamento ao criar uma partição, mas também não se desvia muito dos valores solicitados. O que conta como "demais" depende de como você especificou as posições.

Quando você especifica uma posição inicial (ou final) para o comando mkpart, ele gera internamente um intervalo de valores aceitáveis. Esse intervalo é centrado no valor que você especificar e se estende igualmente em ambos os lados pela metade do tamanho da unidade que você usou (é o que eu li no código , os comentários dizem um tamanho de unidade completo nas duas extremidades).

Por exemplo, quando você especifica "10M", ele tenta usar qualquer posição entre 9,5M e 10,5M. O mesmo vale para porcentagens, portanto, se você especificar 0%, ele usará qualquer valor entre 0% e 0,5% (não fica negativo, obviamente).

Uma exceção é que, ao usar a potência de duas unidades (como KiB para 1024, em vez de K para 1000), partimos pressupõe que você esteja tentando especificar uma posição exata e considere apenas o valor exato especificado.

Como o alinhamento ideal normalmente parece estar 1MiB, as unidades K e M geralmente não têm espaço suficiente para alcançar o alinhamento ideal. A especificação de posições em G deve ter espaço suficiente, mas% também costuma ser bom.

Portanto, é por isso que 0% geralmente funciona, embora até isso tenha limites.


Você poderia resumir um TLDR prático de sua resposta: o que exatamente deveria ser melhor feito de uma maneira diferente em comparação com a resposta aceita?
— yurkennis 30/01

Boa sugestão, eu adicionei um TL; DR. Na prática, acho que os 0% funcionarão para todos os discos, exceto os realmente pequenos, mas minha resposta adiciona um pouco de como funciona exatamente.
— Matthijs Kooijman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.