
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
答え1
拡張パーティションと論理パーティションは、msdosパーティションテーブルにのみ意味があります。唯一の目的は、4つ以上のパーティションを持つことを可能にすることです。 GPTには「デフォルト」パーティションのみがあり、その数は通常128個に制限されています(ただし、ディスクラベル形式による理論上限はありません)。 GPTでは、パーティションは重複することはできません(拡張パーティションを含むすべての論理パーティションとはっきりと重複すると予想されるmsdosと比較)。
GPTの次の点は、パーティションに名前がある可能性があることです。しかし、ここで混乱が発生します。 mkpart コマンドは、GPT を使用するか msdos パーティションテーブルを使用するかによって意味が異なります。
msdosパーティションテーブルの場合、mkpartの2番目の引数はパーティションタイプ(デフォルト/論理/拡張)、GPTの場合は2番目の引数はパーティション名です。あなたの場合は「基本」です。それぞれ「拡張」。 「論理的」。したがって、parted は 2 つの GPT パーティションを作成します。最初のパーティションは「デフォルト」と命名され、2番目のパーティションは「拡張」と命名されます。作成したい3番目のパーティション(「論理」パーティション)は「拡張」パーティションと重複するため、partedは操作の実行を拒否します。
つまり、拡張パーティションと論理パーティションはGPTでは意味がありません。必要な数の「一般」パーティションを作成し、適切な名前を指定するだけです。