Cria partição alinhada usando parted

60

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

parted /dev/sda mklabel gpt

Agora, estou tentando criar as partições corretamente alinhadas, 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, já que é um múltiplo de 8, mas mostra:

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

Os tamanhos de setor lógico e físico no 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 faço para criar partições corretamente alinhadas? O que estou fazendo errado?

    
por Marc 08.05.2012 / 20:58

5 respostas

58

Para alinhar a partição com parted , você pode usar a opção --align . Tipos de alinhamento válidos são:

  • none - Use o alinhamento mínimo permitido pelo tipo de disco.
  • cylinder - Alinhar as partições aos cilindros.
  • mínimo - Use o alinhamento mínimo conforme determinado pelas informações de topologia de disco. Este e o valor opt usarão 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 adequadamente aos blocos físicos, o que evita a degradação do desempenho.
  • ideal Use o alinhamento ideal fornecido pelas informações de topologia de disco. Isso se alinha a um múltiplo do tamanho do bloco físico de uma maneira que garante o desempenho ideal.

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

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

    
por 27.09.2012 / 10:44
7

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

    
por 09.05.2012 / 15:01
6

Do Wiki do Arch :

Ao criar uma partição, o parted pode avisar sobre o alinhamento incorreto da partição, mas não insinua sobre 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 start não está alinhada.

Insira Ignore para continuar de qualquer maneira , imprima a tabela de partições em setores para ver onde ela é iniciada e remova / recrie a partição com o setor inicial arredondado para aumentar as potências de 2 até paragens de aviso. Como um exemplo, em uma unidade flash com setores 512B, o Parted queria que as partições iniciassem em setores que eram múltiplos de 2048, o que corresponde a 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, bem como as menos precisas KB, MB, GB, etc.

Pessoalmente, meu comando exato que resolveu isso foi:

mkpart hd ext4 1024KiB 8470MB

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

    
por 08.02.2015 / 06:03
4

Uma correção menor. 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 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 fez por mim.

(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".

    
por 03.02.2015 / 00:54
3

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

O Parted tenta satisfazer as restrições de alinhamento ao criar uma partição, mas também não se desviará muito dos valores solicitados. O que conta como "muito" 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ê especifica, e se estende igualmente em ambos os lados pela metade do tamanho da unidade que você usou (é isso que eu leia o código , o comentários dizem um tamanho de unidade completo em ambas as extremidades).

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

Uma exceção é que ao usar power-of-two-units (como KiB para 1024, em oposição a K para 1000) parted assume que você está tentando especificar uma posição exata e considera apenas o valor exato especificado.

Como o alinhamento ideal geralmente parece estar alinhado com 1MiB, as unidades K e M geralmente não têm espaço suficiente para atingir o alinhamento ideal. Especificar posições em G deve ter bastante espaço, mas% geralmente também é bom.

Então, é por isso que 0% normalmente funciona, embora isso tenha limites.

    
por 28.10.2017 / 20:55

Tags