次のようなことをしたい
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ルーターであろうと。