장치 매퍼 테이블 정렬이 일관되지 않음

장치 매퍼 테이블 정렬이 일관되지 않음

일지에서 다음과 같은 내용을 받았습니다.

Jan 27 18:23:08 tara kernel: device-mapper: table: 254:2: adding target device sdb2 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=33553920
Jan 27 18:23:08 tara kernel: device-mapper: table: 254:2: adding target device sdb2 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=33553920
Jan 27 18:23:08 tara kernel: device-mapper: table: 254:3: adding target device sdb2 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=34393292288
Jan 27 18:23:08 tara kernel: device-mapper: table: 254:3: adding target device sdb2 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=34393292288

이것을 어떻게 설명합니까?

  • 여기서 정렬에 정확히 어떤 문제가 있나요?
  • 숫자는 어디에서 오는가 start=?

정렬을 일관되게 하려면 어떻게 해야 합니까?


추가 정보:

[ravi@tara ~]$ uname -a
Linux tara 4.8.17-1-MANJARO #1 SMP PREEMPT Mon Jan 9 10:24:58 UTC 2017 x86_64 GNU/Linux
[ravi@tara ~]$ lsblk
NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                   8:0    0  3.7T  0 disk
sdb                   8:16   0  3.7T  0 disk
├─sdb1                8:17   0  200M  0 part
└─sdb2                8:18   0  3.7T  0 part
  ├─usb-eMMC_backup 254:2    0   32G  0 lvm
  └─usb-ark         254:3    0  3.6T  0 lvm  /ark
sdc                   8:32   1  7.5G  0 disk
└─sdc1                8:33   1  7.5G  0 part
mmcblk0             179:0    0 29.1G  0 disk
├─mmcblk0p1         179:1    0  200M  0 part /mnt/esp
└─mmcblk0p2         179:2    0 28.9G  0 part
  ├─lvm-root        254:0    0   24G  0 lvm  /
  └─lvm-swap        254:1    0  4.9G  0 lvm  [SWAP]
mmcblk0boot0        179:8    0    4M  1 disk
mmcblk0boot1        179:16   0    4M  1 disk
mmcblk0rpmb         179:24   0    4M  0 disk
[ravi@tara ~]$

답변1

이 경고는 검사에 정의된 대로 파티션과 LVM 장치가 잘못 정렬되었을 수 있음을 나타냅니다.blk_stack_limits. 출력 값을 확인 lsblk -t /dev/sdb하고 캡처된 정렬 불량 유형을 확인할 수 있습니다 blk_stack_limits(예: 물리적은 논리적 블록 크기의 배수, opt 및 min I/O는 물리적 블록 크기의 배수 등).

2019-03-03 업데이트:@derobert가 의견에서 지적했듯이 이 경우 경고는 정확합니다. PV는 물리적 블록 크기 4,096의 배수가 아닌 바이트 33,553,920에서 시작합니다. 이 문제를 해결하려면 4,096의 배수에서 시작하도록 PV/파티션을 이동하거나 다시 생성해야 합니다(예: / 또는 에 --dataalignment전달 ).vgcreatepvcreate--offsetcryptsetup

안타깝게도 수정이 시작된 후에도 "일관되지 않은 정렬" 메시지가 계속 인쇄됩니다. Sven Eschenberg는 dm-crypt 목록의 긴 게시물에서 이러한 검사 중 일부가 잘못된 경고를 생성할 수 있다는 결론을 내렸습니다. 특히 sdbUSB 디스크인 경우 최적의 I/O 크기는 물리적 섹터 크기의 배수가 아닐 수 있습니다. 예를 들어 physical_block_size4,096과 optimal_io_size33,553,920을 보고하는 4k USB3 디스크가 있습니다. 이 값은 정확하고(드라이브에서 보고한 대로) 합리적이며(USB 제한으로 인해) 장치 매퍼 매개변수를 기반으로 하지 않습니다.

문제는 논리에서 blk_stack_limits최적의 I/O 크기가 물리적 섹터 크기의 배수라고 가정하지만 일부 장치의 경우 그렇지 않다는 것입니다. 이것이 유일한 문제라면 경고를 무시해도 됩니다.

2019-03-03 업데이트: 불행하게도 일부 도구는 잘못 정렬된 PV/파티션을 생성할 수 있습니다. 관련 문제/수정 사항:

답변2

동맹을 맺으세요드라이브를 최적으로 사용하십시오. 소프트웨어에서 이 오류가 발생하고 더 큰 캐시를 사용하여 보상하는 경우가 있습니다. 확인하십시오.

cat /sys/block/sd?/queue/optimal_io_size

다시 포맷해야 하는 문제(GPT/LVM 레이어일 수 있음)를 해결하려면 pvcreate의 --dataalignment 및 --dataalignmentoffset을 확인하세요.

답변3

설명하다

첫 번째 값 은 대상 장치(위 ) 에 있는 첫 번째 LV의 첫 번째 PE의 오프셋 start=입니다 .33553920/dev/sdb2

이는 다음을 통해 확인할 수 있습니다.

sudo pvs -o +pe_start --units b 

VG에 두 개의 LV( 및 LV ) 가 포함되어 있으므로 또 다른 start=중복 값이 ​​있습니다 . 왜 각각 중복되는지 모르겠습니다.sdb2usb-eMMC_backupusb-ark

이유

정렬 불일치는 다음과 같이 나눌 수 pe_start없기 때문에 존재합니다 PHY-SEC.

lsblk -t /dev/sdb

PHY-SEC4096이고 33553920 % 4096 != 0입니다.

pe_start정렬되지 않은 경우(기본 PE 크기는 4MiB) VG의 모든 LV가 잘못 정렬됩니다.

해결하다

pe_start디스크 섹터 크기로 균등하게 나눌 수 있는 VG를 만들어야 합니다 .

전달된 값 --dataalignment 1m은 = 1048576B = 1MiB vgcreate입니다 .pe_start

그래도 받으면 어떻게 되나요 alignment inconsistency?

기본 파티션이 정렬되어 있다고 가정하면 (잘못된) 정렬 메시지가 계속 생성될 수 있습니다. 바라보다이 답변특히 USB 연결 SATA(UAS)를 사용할 때 가능한 원인과 해결 방법에 대해 알아보세요.

관련 정보