ネストされたパーティションテーブルを許可する方法はありますか?

ネストされたパーティションテーブルを許可する方法はありますか?

次のようなことをしたい

sudo fdisk /dev/sdb # create 2 partitions
sudo fdisk /dev/sdb1 # create 2 more

そして次のようなもので終わります。

[daffy@daffydesk ~]$ lsblk /dev/sdb
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sdb           8:16   0  27.8G  0 disk 
└─sdb1        8:17   0  13.9G  0 part
  └─sdb1p1      8:17   0   6.9G  0 part
  └─sdb1p2      8:17   0   7.0G  0 part
└─sdb2        8:17   0  13.9G  0 part

これは理論的に可能ですか?

答え1

いいえ、オペレーティングシステムがパーティションとパーティションテーブルを解釈する方法ではないため、不可能です。これは、このアプローチがまったく良くなく、分割構造の仮定も破るからです。

欲しいならもっと1983年(!)MBRスキームよりも多くのパーティション(任意の生成順序)が許可されています。最新のファームウェアでデフォルトでサポートされているGPT(20年、40年未満)を使用できます(少なくとも2010年以降)。どこでもサポートされているより良い選択肢がある場合は、古いソリューションを変更する必要はありません²。

ブロックデバイス内でスペースを分割したい場合、デバイスマッパーとLVMはこの目的のために設計されたツールです。したがって、このユースケースでは、MBRパーティションテーブルをMBRパーティションに入れることは意味がありません。

これが実際に役立つ状況の1つは、パーティションをインポートして仮想マシンのフルドライブイメージとして使用したい場合です。次に、上記のループバックデバイス方法を使用します。 lsblkがアイテムを階層化して表示するかどうかは重要ではなく、単なる表示です。しかし、実際には人々はこれをしません。 LVMまたはネットワークストレージ(CEPHなど)を介してアクセスされる通常のファイルシステム(通常のデスクトップを使用)またはブロックストレージ内のイメージファイルのみを使用します。


1正しいMBRパーティションの固定位置にボリュームブートレコードがあり、これはMBRパーティションテーブルを配置した場所と競合します。しかし、最新のオペレーティングシステムはVBRには興味がありません。また、37年前に2MBのハードドライブ用に設計されたパーティションスキームもサポートされていません。

²特定のハードウェア(1983年にIBM PC)用に完全に設計されたのは、依然としてユニバーサルパーティショニング方式であることも興味深いです。みんなテラバイトのディスクを備えたx86_64プラットフォームであろうと、4MBのフラッシュメモリを備えたMIPSルーターであろうと。

関連情報