web-dev-qa-db-ja.com

Partedで論理パーティションを作成できません

ループバックディスクでpartedコマンドをいじり、gptパーツテーブルを使用していくつかのパーティションを作成しようとしましたが、Error: Unable to satisfy all constraints on the partition.論理パーティションを作成しようとしたとき

$ 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.

ただし、msdosパーツテーブルを使用して同じパーティションを再作成しても、このようなエラーは発生しません。では、何が問題なのか考えてみてください。

% 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
3
Flint

拡張パーティションと論理パーティションは、msdosパーティションテーブルでのみ意味があります。唯一の目的は、4つ以上のパーティションを使用できるようにすることです。 GPTでは、「プライマリ」パーティションのみがあり、それらの数は通常128に制限されています(ただし、理論的には、ディスクラベル形式によって示される上限はありません)。 GPTでは、どのパーティションもオーバーラップできないことに注意してください(明らかに、拡張パーティションが含まれているすべての論理パーティションとオーバーラップすると予想されるmsdosと比較してください)。

GPTの次の点は、パーティションに名前を付けることができることです。混乱が生じます。mkpartコマンドは、GPTを使用するかmsdosパーティションテーブルを使用するかによって、セマンティクスが異なります。

Msdosパーティションテーブルでは、mkpartの2番目の引数はパーティションタイプ(プライマリ/論理/拡張)ですが、GPTでは2番目の引数はパーティション名です。あなたの場合、それは「プライマリ」または「プライマリ」です。 「拡張」または「論理的」。そのため、partedは2つのGPTパーティションを作成しました。最初の名前は「primary」で、2番目の名前は「extended」です。作成しようとした3番目のパーティション(「論理」パーティション)は「拡張」とオーバーラップするため、partedはそれを拒否します。

つまり、拡張パーティションと論理パーティションはGPTでは意味がありません。 「通常の」パーティションを好きなだけ作成し、適切な名前を付けます。

10
Petr Uzel