最適 io_size が大きいため、LVM LV アライメントの不整合が発生します。

最適 io_size が大きいため、LVM LV アライメントの不整合が発生します。

LVM VG と LV を作成しようとしていますが、LV が揃っていません。

私の出発点は次のとおりです。

% lsblk -t /dev/sdd
NAME   ALIGNMENT MIN-IO   OPT-IO PHY-SEC LOG-SEC ROTA SCHED       RQ-SIZE  RA WSAME
sdd            0   4096 33553920    4096     512    1 mq-deadline      60 128   32M
├─sdd1         0   4096 33553920    4096     512    1 mq-deadline      60 128   32M
├─sdd2         0   4096 33553920    4096     512    1 mq-deadline      60 128   32M
└─sdd3         0   4096 33553920    4096     512    1 mq-deadline      60 128   32M

ALIGNMENTs がすべて (正しい) であることに注意してください0

ではsdd2、VG を作成しtestてから LV を作成しますalign-me

% sudo vgcreate --pvmetadatacopies 2 --vgmetadatacopies 2 test /dev/6TBd1p2
  Physical volume "/dev/6TBd1p2" successfully created.
  Volume group "test" successfully created
% sudo lvcreate -L 64g -n align-me test
  Logical volume "align-me" created.

しかし、ALIGNMENTtest-align--me間違いです:

% lsblk -t /dev/sdd
NAME               ALIGNMENT MIN-IO   OPT-IO PHY-SEC LOG-SEC ROTA SCHED       RQ-SIZE  RA WSAME
sdd                        0   4096 33553920    4096     512    1 mq-deadline      60 128   32M
├─sdd1                     0   4096 33553920    4096     512    1 mq-deadline      60 128   32M
├─sdd2                     0   4096 33553920    4096     512    1 mq-deadline      60 128   32M
│ └─test-align--me        -1   4096        0    4096     512    1                 128 128   32M
└─sdd3                     0   4096 33553920    4096     512    1 mq-deadline      60 128   32M

次のログ メッセージも表示されます (4 回繰り返されます)。

kernel: device-mapper: table: 254:6: adding target device sdd2 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=33553920

vgcreateおよび--dataalignmentoffset 4kとを呼び出しました--dataalignment1m4m結果は同じです。

実行中:

LVM version:     2.02.182(2) (2018-10-30)
Library version: 1.02.152 (2018-10-30)
Driver version:  4.39.0

答え1

症状

  1. 価値lsblk -t OPT-IOは本当に高かった(frostschutzが指摘

  2. smartctlディスク上で実行すると、次の画面が表示されました:

    Read Device Identity failed: scsi error unsupported field in scsi command
    

原因

-1最適なIO値が読み取れない場合に返されるようです。

としてスティーブ・ディーが指摘:

  • 33553920 / 512 (論理セクターサイズ) = 65535
  • -1 を 16 ビット値で表すと 65535 になります (2 16 = 65536)。

この値は、次のように最初の PE ( ) を整列させるために33553920使用されます。pvcreatevgcreatepe_start

sudo pvs -o +pe_start --units b

回避策

渡す--dataalignment 1mと= 1048576B = 1MiBvgcreateになりますpe_start

これにより、pe_startディスク セクターに確実に位置合わせされますが、(誤った) 位置合わせ不良メッセージは引き続き印刷されます。

根本原因の修正

UASを無効にするドライブ上の値は(他のディスク ドライブと一致する)OPT-IOに戻りました。また、ドライブ上で実行できるようになりました。0smartctl

--dataalignment 1mこの修正が適用されている場合は、渡す必要はありません。

関連情報