新しくフォーマットされた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に分けることができるので、他の質問で言及されている誤った警告です。この問題は解決されました。