Optimal_io_size가 커서 LVM LV 정렬 불일치가 발생함

Optimal_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

s ALIGNMENT는 모두 0(올바릅니다)입니다.

On에서는 sdd2VG를 만든 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.

그러나 ALIGNMENTfor는 test-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나는 with --dataalignmentoffset 4k와 also --dataalignmentwith 1mand 로 전화했지만 4m결과는 같습니다.

나는 뛰고있어:

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
  • 16비트 값으로 표현되는 -1 = 65535. (2 16 = 65536)

그런 다음 이 값은 / 에서 다음과 같이 첫 번째 PE( )를 정렬하는 데 33553920사용됩니다 .pvcreatevgcreatepe_start

sudo pvs -o +pe_start --units b

해결 방법

전달 --dataalignment 1m하면 = 1048576B = 1MiB vgcreate가 됩니다 .pe_start

이렇게 하면 pe_start디스크 섹터와 정렬되지만 (잘못된) 정렬 오류 메시지는 계속 인쇄됩니다.

근본 원인 수정

UAS 비활성화드라이브의 OPT-IO값이 반환 되었습니다 0(다른 디스크 드라이브와 일치). 또한 smartctl드라이브에서 실행할 수도 있습니다.

--dataalignment 1m이 수정 사항을 적용하면 통과가 필요하지 않습니다.

관련 정보