새로 포맷된 LUKS 볼륨을 잠금 해제할 때 커널 로그에 경고가 표시됩니다.
kernel: device-mapper: table: 253:14: adding target device sdk1 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=33553920
또 다른 질문에 따르면,오류 경고가 가능합니다., 따라서 이것이 실제 경고임을 확인합니다. 33553920은 4096으로 나눌 수 없습니다. 추가로 luksDump를 사용하여 다음을 확인했습니다.
cryptsetup luksDump /dev/sdk1 | grep 'Payload offset'
Payload offset: 65535
8의 배수가 아님(4096 ¼ 512 = 8)
lsblk -t /dev/sdk
Linux가 정렬 요구 사항을 알고 있는지 확인하십시오.
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sdk 0 4096 33553920 4096 512 1 cfq 128 128 32M
└─sdk1 0 4096 33553920 4096 512 1 cfq 128 128 32M
dmsetup은 자체적으로 정렬을 처리하도록 문서화되어 있는데 왜 정렬 오류가 발생합니까? 이 문제를 피할 수 있는 luksFormat에 대한 매개변수가 있습니까?
답변1
dmsetup은 실제로 물리적 블록 크기의 배수인지 확인하지 않고 최적의 I/O 크기를 기반으로 정렬을 계산하는 것처럼 보입니다. 오류 경고 질문에서 언급했듯이 이 최적의 I/O 크기는 USB 제한으로 인해 의미가 있습니다.
따라서 해결책은 간단합니다. --align-payload
감지된 값 무시를 사용하는 것입니다. 값 8이 작동하고 가능한 가장 작은 헤더를 생성해야 합니다. cryptsetup이 이를 인식하지 못하는 경우 기본값은 2048로 문서화되어 있습니다. 그래서 저는 기본값을 사용합니다:
cryptsetup luksFormat /dev/sdk1 --align-payload 2048 --verify-passphrase --hash sha512 -s 512
이후 페이로드 오프셋은 이제 4096(luksDump에서)이고 커널 경고가 계속 생성됩니다.
kernel: device-mapper: table: 253:14: adding target device sdk1 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=2097152
...하지만 2097152는 4096으로 나눌 수 있으므로 다른 질문에서 언급된 잘못된 경고입니다. 이 문제는 해결되었습니다.