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(올바릅니다)입니다.

위에서 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

나는 그것을 and 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은 정말 매우 높습니다 (Frost Schutz가 지적함)

  2. smartctl디스크에서 실행하면 다음이 표시됩니다.

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

이유

-1최적의 IO 값을 읽을 수 없는 경우 반환되는 것으로 보입니다.

~처럼스티브 디가 지적했다.:

  • 33553920 / 512(논리 섹터 크기) = 65535
  • -1은 16비트 값으로 표현 = 65535입니다. (2 16 = 65536)

그런 다음 33553920해당 값을 사용하여 다음과 같이 첫 번째 PE( )를 정렬합니다.pvcreatevgcreatepe_start

sudo pvs -o +pe_start --units b

해결책

전달된 --dataalignment 1mvgcreatepe_start= 1048576B = 1MiB입니다.

이렇게 하면 pe_start디스크 섹터가 정렬되지만 여전히 (잘못된) 정렬 오류 메시지가 인쇄됩니다.

근본 원인 수정

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

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

관련 정보