MBRモデルでは、4つのプライマリパーティションを作成できます。そのうちの1つは、論理パーティションにさらに細分化された拡張パーティションです。
ウィキペディアからのこのGPT回路図を考えてみましょう:
パーティションエントリの範囲はLBA 1からLBA 34です。おそらくそのスペースが足りなくなり、私はそれがかなりの量のパーティションであることを理解しています。ディスクがGPTでパーティション分割されている場合、拡張パーティションを作成することは可能ですか?可能であれば、GPTパーティションテーブルごとにいくつの拡張パーティションを作成できますか?
これがLBA1からLBA34の範囲内のパーティションエントリを持つ標準であるかどうかはわかりませんが、それを超えてパーティションエントリを拡張できる可能性がありますか?
実際には、これはかなりの量のパーティションです。私はそうするつもりはありません。
128パーティションはGPTのデフォルトの制限であり、実際にはその半分の数を使用することはおそらく困難です...
Linux自体も、そのデバイス名前空間にいくつかの制限がありました。/dev/sdXの場合、15パーティションを超えないものと想定します(sdaは8,0、sdbは8,16など)。さらにパーティションがある場合は、259、X、別名ブロック拡張メジャーを使用して表されます。
もちろん、さまざまな方法でさらに多くのパーティションを作成できます。ループデバイス、LVM、さらにはGPT内のGPT。パーティションをブロックデバイスとして仮想マシンに渡すときに、これが自然に発生することがあります。仮想マシンは、パーティションを仮想ディスクドライブと見なし、そのパーティションを作成します。
パーティション内のそのようなパーティションが自動的に取得されることを期待しないでください。
コメントで@ fpmurphy1が指摘したように、私は間違っていました。gdisk
、expert menu
、resize partition table
を使用して制限を変更できます。これは、ドライブの開始と終了にパーティション化されていないスペース(4つの追加パーティションエントリ用の512バイトセクター)がある場合、既存のパーティションテーブルに対しても実行できます。ただし、これがどれほど広くサポートされているかはわかりません。 parted
や私が試した他のパーティショナーにはオプションがないようです。
また、gdisk
で設定できる上限は65536
のようですが、バグがあります。
Expert command (? for help): s
Current partition table size is 128.
Enter new size (4 up, default 128): 65536
Value out of range
その後...
Expert command (? for help): s
Current partition table size is 128.
Enter new size (4 up, default 128): 65535
Adjusting GPT size from 65535 to 65536 to fill the sector
Expert command (? for help): s
Current partition table size is 65536.
え?あなたが言うことは何でも。
しかし、そのパーティションテーブルを保存しようとすると、gdisk
が数分間ループに陥ります。
Expert command (? for help): w
--- gdisk gets stuck here ---
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22253 root 20 0 24004 11932 3680 R 100.0 0.1 1:03.47 gdisk
--- unstuck several minutes later ---
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Your option? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/loop0.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
そして、正常に完了した操作についてparted
が言わなければならないことは次のとおりです。
# parted /dev/loop0 print free
Backtrace has 8 calls on stack:
8: /usr/lib64/libparted.so.2(ped_assert+0x45) [0x7f7e780181f5]
7: /usr/lib64/libparted.so.2(+0x24d5e) [0x7f7e7802fd5e]
6: /usr/lib64/libparted.so.2(ped_disk_new+0x49) [0x7f7e7801d179]
5: parted() [0x40722e]
4: parted(non_interactive_mode+0x92) [0x40ccd2]
3: parted(main+0x1102) [0x405f52]
2: /lib64/libc.so.6(__libc_start_main+0xf1) [0x7f7e777ec1e1]
1: parted(_start+0x2a) [0x40610a]
You found a bug in GNU Parted! Here's what you have to do:
Don't panic! The bug has most likely not affected any of your data.
Help us to fix this bug by doing the following:
Check whether the bug has already been fixed by checking
the last version of GNU Parted that you can find at:
http://ftp.gnu.org/gnu/parted/
Please check this version prior to bug reporting.
If this has not been fixed yet or if you don't know how to check,
please visit the GNU Parted website:
http://www.gnu.org/software/parted
for further information.
Your report should contain the version of this release (3.2)
along with the error message below, the output of
parted DEVICE unit co print unit s print
and the following history of commands you entered.
Also include any additional information about your setup you
consider important.
Assertion (gpt_disk_data->entry_count <= 8192) at gpt.c:793 in function
_parse_header() failed.
Aborted
したがって、parted
は、8192を超えるパーティションエントリを持つGPTの操作を拒否します。誰もそれをしないので、それは壊れている必要がありますよね?
これは、デフォルトに固執しないとどうなるかです。
GPTでは、実質的にパーティション数に制限がないため、拡張パーティションはありません(サポートされる最小値は128パーティションで、パーティションテーブルに16,384バイトを使用するため、より多くのスペースを予約すると、パーティションを増やすことができます) )。
しかし、その後、次の制限に直面します。
128
に制限されています)gdisk
、parted
およびその他のいくつかのツールにも制限があります(とにかく128
パーティションよりもはるかに高い)