dmsetup luksFormat이 일관되지 않은 정렬을 생성합니다.

dmsetup luksFormat이 일관되지 않은 정렬을 생성합니다.

새로 포맷된 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/sdkLinux가 정렬 요구 사항을 알고 있는지 확인하십시오.

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으로 나눌 수 있으므로 다른 질문에서 언급된 잘못된 경고입니다. 이 문제는 해결되었습니다.

관련 정보