LUKSでLVMを設定しようとしています。私がしたことは次のとおりです。
head -c 100M /dev/zero > test-file
losetup /dev/loop0 test-file
cryptsetup luksFormat /dev/loop0
cryptsetup open /dev/loop0 cryptlvm
gdisk /dev/mapper/cryptlvm
次に、GPTと単一のパーティション8e00 LVMを置きます。
fdisk -l /dev/mapper/cryptlvm
# => /dev/mapper/cryptlvm-part1 2048 200670 198623 97M Linux LVM
しかし、
pvcreate /dev/mapper/cryptlvm-part1
# => Device /dev/mapper/cryptlvm-part1 not found.
パーティションも表示されませんlsblk
。人々は通常、パーティショナーが何かを見ることができるようにLVMでパーティションテーブルを使用することを擁護しているようです。 LUKSコンテナをスキップしても、GPTの上のパーティションにLVMを配置するのに問題はありません。
これは、パーティション(gdiskなど)にLUKSコンテナを設定し、LVMパーティションにcryptsetupを設定しようとしたときにも機能します。
私は、パーティションスキームをLUKSコンテナに入れてから、その中にある単一のパーティションでLVMを使用できると期待しました。これが不可能に見える理由についてのヒントや説明を教えていただければ幸いです。
答え1
Linuxカーネルはパーティションを処理する唯一の部分であり、パーティション内のパーティションを検索しようとしないので、ここで試しは終了します。
ただPVを作ろうまっすぐ~へ暗号化された仮想マシンマッピング。デバイスマッピングはパーティションではなくコンテナとして機能します。
[...]
# cryptsetup open /dev/loop0 cryptlvm
# pvcreate /dev/mapper/cryptlvm
Physical volume "/dev/mapper/cryptlvm" successfully created.
# pvs /dev/mapper/cryptlvm
PV VG Fmt Attr PSize PFree
/dev/mapper/cryptlvm lvm2 --- 98.00m 98.00m
その後、次の手順に進みますvgcreate
。
# vgcreate testvg /dev/mapper/cryptlvm
Volume group "testvg" successfully created
# vgs testvg
VG #PV #LV #SN Attr VSize VFree
testvg 1 0 0 wz--n- 96.00m 96.00m
通常、システム(ここではカーネル、イベント、およびユーザースペースが混在しています)が自動的にVGを検出して有効にする必要があります。結果を別のシステムに転送する場合は、次の操作が必要になることがあります。pvscan
または、vgscan
LUKSvgchange -ay ...
ボリュームを開いた後はテストしなくなりました。
あなたはする必要があります本物未知の理由で元の試行を続行するには、次のようにします。kpartx
何でもパーティションを検出します。これにより、新しいデバイスマップが作成され、この時点でpvcreate
デバイスマップ(「単純」パーティションではない)で作業します。一般的なLinuxディストリビューションではこれを実行しないため、すべて「検出」して手動で処理する必要があります。