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

おすすめ記事