web-dev-qa-db-ja.com

GPTパーティションテーブルに拡張パーティションはありますか?

MBRモデルでは、4つのプライマリパーティションを作成できます。そのうちの1つは、論理パーティションにさらに細分化された拡張パーティションです。

ウィキペディアからのこのGPT回路図を考えてみましょう:

GPT

パーティションエントリの範囲はLBA 1からLBA 34です。おそらくそのスペースが足りなくなり、私はそれがかなりの量のパーティションであることを理解しています。ディスクがGPTでパーティション分割されている場合、拡張パーティションを作成することは可能ですか?可能であれば、GPTパーティションテーブルごとにいくつの拡張パーティションを作成できますか?

これがLBA1からLBA34の範囲内のパーティションエントリを持つ標準であるかどうかはわかりませんが、それを超えてパーティションエントリを拡張できる可能性がありますか?

実際には、これはかなりの量のパーティションです。私はそうするつもりはありません。

2
direprobs

128パーティションはGPTのデフォルトの制限であり、実際にはその半分の数を使用することはおそらく困難です...

Linux自体も、そのデバイス名前空間にいくつかの制限がありました。/dev/sdXの場合、15パーティションを超えないものと想定します(sdaは8,0、sdbは8,16など)。さらにパーティションがある場合は、259、X、別名ブロック拡張メジャーを使用して表されます。

もちろん、さまざまな方法でさらに多くのパーティションを作成できます。ループデバイス、LVM、さらにはGPT内のGPT。パーティションをブロックデバイスとして仮想マシンに渡すときに、これが自然に発生することがあります。仮想マシンは、パーティションを仮想ディスクドライブと見なし、そのパーティションを作成します。

パーティション内のそのようなパーティションが自動的に取得されることを期待しないでください。


コメントで@ fpmurphy1が指摘したように、私は間違っていました。gdiskexpert menuresize 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の操作を拒否します。誰もそれをしないので、それは壊れている必要がありますよね?

これは、デフォルトに固執しないとどうなるかです。

5
frostschutz

GPTでは、実質的にパーティション数に制限がないため、拡張パーティションはありません(サポートされる最小値は128パーティションで、パーティションテーブルに16,384バイトを使用するため、より多くのスペースを予約すると、パーティションを増やすことができます) )。

しかし、その後、次の制限に直面します。

  • ご使用のオペレーティングシステム(例:MSWindowsは128に制限されています)
  • パーティションの処理に使用されるツール:gdiskpartedおよびその他のいくつかのツールにも制限があります(とにかく128パーティションよりもはるかに高い)
0