Não é possível criar partição lógica com o Parted

3

Eu estava brincando com o comando parted em um disco de loopback e tentei criar algumas partições usando a tabela de partes gpt, mas continuo recebendo Error: Unable to satisfy all constraints on the partition. ao tentar criar uma partição lógica

$ sudo parted /dev/loop0
(parted) mktable gpt
(parted) mkpart primary 1MiB 201MiB
(parted) mkpart extended 201MiB -0MiB
(parted) unit MiB print
Model: Loopback device (loop)
Disk /dev/loop0: 102400MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start    End        Size       File system  Name      Flags
 1      1.00MiB  201MiB     200MiB                  primary
 2      201MiB   102400MiB  102199MiB               extended

(parted) mkpart logical 202MiB 1024MiB
Error: Unable to satisfy all constraints on the partition.

No entanto, recriar as mesmas partições usando a tabela de partes do msdos não apresenta esse erro. Então, alguma ideia do que está errado?

% sudo parted /dev/loop0
GNU Parted 2.3
Using /dev/loop0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable msdos                                                    
(parted) mkpart primary 1MiB 201MiB
(parted) mkpart extended 201MiB -0MiB                                   
(parted) mkpart logical 202MiB 1024MiB                                 
(parted) unit MiB print                                                   
Model: Loopback device (loop)
Disk /dev/loop0: 102400MiB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start    End        Size       Type      File system  Flags
 1      1.00MiB  201MiB     200MiB     primary
 2      201MiB   102400MiB  102199MiB  extended               lba
 5      202MiB   1024MiB    822MiB     logical
    
por Flint 30.10.2012 / 07:59

1 resposta

10

As partições estendidas e lógicas só fazem sentido com a tabela de partições msdos. Sua única finalidade é permitir que você tenha mais de 4 partições. Com o GPT, existem apenas partições 'primárias' e seu número é geralmente limitado a 128 (no entanto, em teoria, não há limite superior implícito no formato do disklabel). Observe que, no GPT, nenhuma das partições pode se sobrepor (compare com msdos em que se espera que a partição estendida se sobreponha a todas as partições lógicas contidas, obviamente).

A próxima coisa sobre o GPT é que as partições podem ter nomes, e aí vem a confusão: o comando mkpart tem semânticas diferentes dependendo se você usa a tabela de partições GPT ou msdos.

Com a tabela de partições msdos, o segundo argumento para mkpart é o tipo de partição (primário / lógico / estendido), enquanto que com o GPT, o segundo argumento é o nome da partição. No seu caso é 'primário' resp. 'extended' resp. 'lógico'. Então o parted criou duas partições GPT, primeiro nomeadas 'primary' e a segunda com o nome 'extended'. A terceira partição que você tentou criar (a 'lógica') se sobreporia à 'estendida', então o parted se recusa a fazê-lo.

Em suma, as partições estendidas e lógicas não fazem sentido no GPT. Apenas crie quantas partições "normais" desejar e dê a elas nomes próprios.

    
por 30.10.2012 / 09:59