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
LUKS vgchange -ay ...
볼륨을 연 후에는 더 이상 테스트하지 않았습니다.
당신은해야진짜알 수 없는 이유로 원래 시도를 계속하려면 다음을 사용할 수 있습니다.kpartx
무엇이든 파티션을 감지합니다. 그러면 새 장치 맵이 생성되며, 이 시점에서 pvcreate
장치 맵("단순" 파티션이 아님)에서 작업하게 됩니다. 일반적인 Linux 배포판에서는 이 작업을 수행하지 않으므로 모두 "감지"하고 수동으로 처리해야 합니다.