이것 LUKS
/ dm-crypt
/cryptsetup
FAQ 페이지설명하다:
2.15 dm-crypt 또는 LUKS 파티션의 크기를 조정할 수 있나요?
예, 가능합니다. dm-crypt나 LUKS는 파티션 크기를 저장하지 않기 때문입니다.
나는 혼란스럽다:
크기 정보가 저장되지 않은 경우 "크기 조정"이란 무엇입니까?
암호화된 볼륨을 열거나 닫을 때 "크기 조정"을 어떻게 기억합니까?
답변1
그것은 관하여온라인크기를 조정합니다.
예를 들어, LVM을 사용하고 1G 크기의 LV를 생성하고 그 위에 LUKS를 배치하면 다음과 같습니다.
# lvcreate -L1G -n test VG
# cryptsetup luksFormat /dev/mapper/VG-test
# cryptsetup luksOpen /dev/mapper/VG-test lukstest
# blockdev --getsize64 /dev/mapper/VG-test
1073741824
# blockdev --getsize64 /dev/mapper/lukstest
1071644672
따라서 LUKS 장치는 VG 테스트 장치와 거의 동일한 크기입니다(1G에서 LUKS 헤더에 사용되는 2MiB를 뺀 크기).
이제 LV를 높이면 어떻게 될까요?
# lvresize -L+1G /dev/mapper/VG-test
Size of logical volume VG/test changed from 1.00 GiB (16 extents) to 2.00 GiB (32 extents).
Logical volume test successfully resized.
# blockdev --getsize64 /dev/mapper/VG-test
2147483648
# blockdev --getsize64 /dev/mapper/lukstest
1071644672
LV는 이제 2G 크기이지만 LUKS 장치는 원래 열렸던 크기이기 때문에 여전히 1G에 갇혀 있습니다.
luksClose
그렇게 하면 2G luksOpen
도 됩니다. LUKS는 크기를 저장하지 않기 때문에 기본적으로 장치를 열었을 때의 장치 크기로 설정됩니다. 따라서 종료했다가 켜거나 다시 시작하면 크립트 맵이 새 장치 크기로 업데이트됩니다. 그러나 컨테이너 내부의 모든 항목을 언로드/중지한 후에만 컨테이너를 종료할 수 있으므로 이는 기본적으로오프라인 크기 조정.
하지만 LUKS에 마운트된 파일 시스템이 있고 사용 중이며 크기 조정을 위해 마운트 해제하고 싶지 않을 수도 있습니다. 바로 cryptsetup resize
여기서 파일 시스템이 필요합니다.온라인크기 조정 작업.
# cryptsetup resize /dev/mapper/lukstest
# blockdev --getsize64 /dev/mapper/lukstest
2145386496
cryptsetup resize
마운트 해제하지 않고 활성 암호화 맵을 새 장치 크기로 업데이트한 다음 후속 작업을 수행 resize2fs
하거나 마운트된 파일 시스템 자체를 온라인으로 확장할 수 있습니다.
재부팅하거나 다시 설치해도 괜찮다면 cryptsetup resize
자동으로 오프라인 상태가 되므로 그럴 필요가 없습니다. 하지만 네가 하고 싶다면온라인, 이것이 유일한 방법입니다.
축소( cryptsetup resize --size x
)할 때 크기 조정은 일시적입니다. LUKS는 장치 크기를 저장하지 않으므로 다음 번 luksOpen에서는 장치 크기를 다시 사용합니다. 따라서 수축은 지원 장치도 그에 따라 수축하는 경우에만 작동합니다.
성공적으로 축소하려면 거꾸로 작업해야 합니다. 성장은 먼저 파티션을 늘리고, 그 다음 LUKS, 그 다음 파일 시스템을 늘리는 것입니다. 수축은 먼저 파일 시스템을 축소한 다음, 파티션을 축소하는 것입니다.
크기 조정이 작동하지 않으면 지원되는 장치의 크기가 조정되지 않았기 때문일 가능성이 높습니다. 예를 들어 드라이브를 사용할 때 커널이 파티션 테이블에 대한 변경 사항을 거부할 수 있습니다. 모든 장치 레이어가 예상한 크기를 가지고 있는지 blockdev를 통해 확인하세요.