내 시스템에 문제가 있습니다(내부 전원 코드 결함). 시스템을 백업 및 실행하고 어레이를 재구축하는 등 명령 pvs
(및 vgs
) lvs
이 보고 No device found for PV <UUID>
하지만 논리 볼륨이 소위잃어버린물리 볼륨은 DM 장치가 존재하고 매핑되어 있기 때문에 성공적으로 마운트될 수 있습니다 /dev/mapper
.
PV 장치는 md-raid RAID10 어레이이고 괜찮아 보이지만 출력에 표시되지 않아 혼란스럽습니다 pvs
.
일부 내부 테이블이 동기화되지 않은 문제인 것 같습니다. 올바르게 매핑하려면 어떻게 해야 합니까(재부팅하지 않고 문제가 해결될 것 같습니다)?
고쳐 쓰다:
다시 시작해도 문제가 해결되지 않았습니다. 이 문제는 750b 디스크(/dev/sdk)에서 구축된 RAID10 Far-2 어레이 및 750b 디스크에서 구축된 RAID0 어레이(/dev/md90)에 대해 "누락된" PV(/dev/md99)를 구성함으로써 발생한다고 생각합니다. 250GB 디스크(/dev/sdh) 및 500GB 디스크(/dev/sdl). 출력에서 pvscan -vvv
lvm2 서명은 /dev/sdh에 있지만 /dev/md99에는 없는 것으로 나타납니다.
Asking lvmetad for VG f1bpcw-oavs-1SlJ-0Gxf-4YZI-AiMD-WGAErL (name unknown)
Setting response to OK
Setting response to OK
Setting name to b
Setting metadata/format to lvm2
Metadata cache has no info for vgname: "b"
Setting id to AzKyTe-5Ut4-dxgq-txEc-7V9v-Bkm5-mOeMBN
Setting format to lvm2
Setting device to 2160
Setting dev_size to 1464383488
Setting label_sector to 1
Opened /dev/sdh RO O_DIRECT
/dev/sdh: size is 488397168 sectors
/dev/sdh: block size is 4096 bytes
/dev/sdh: physical block size is 512 bytes
Closed /dev/sdh
/dev/sdh: size is 488397168 sectors
Opened /dev/sdh RO O_DIRECT
/dev/sdh: block size is 4096 bytes
/dev/sdh: physical block size is 512 bytes
Closed /dev/sdh
/dev/sdh: Skipping md component device
No device found for PV AzKyTe-5Ut4-dxgq-txEc-7V9v-Bkm5-mOeMBN.
Allocated VG b at 0x7fdeb00419f0.
Couldn't find device with uuid AzKyTe-5Ut4-dxgq-txEc-7V9v-Bkm5-mOeMBN.
Freeing VG b at 0x7fdeb00419f0.
/dev/md99(PV여야 함)에 대한 유일한 참조는 이를 장치 캐시에 추가할 때입니다.
업데이트 2:
중지 하고 반복하여 시스템이 동일한 UUID를 가진 2개의 PV를 발견했기 때문에 어떤 PV를 사용할지 혼동하는 것이 문제인지 lvm2-lvmetad
확인합니다.pvscan
Using /dev/sdh
Opened /dev/sdh RO O_DIRECT
/dev/sdh: block size is 4096 bytes
/dev/sdh: physical block size is 512 bytes
/dev/sdh: lvm2 label detected at sector 1
Found duplicate PV AzKyTe5Ut4dxgqtxEc7V9vBkm5mOeMBN: using /dev/sdh not /dev/md99
/dev/sdh: PV header extension version 1 found
Incorrect metadata area header checksum on /dev/sdh at offset 4096
Closed /dev/sdh
Opened /dev/sdh RO O_DIRECT
/dev/sdh: block size is 4096 bytes
/dev/sdh: physical block size is 512 bytes
Incorrect metadata area header checksum on /dev/sdh at offset 4096
Closed /dev/sdh
Opened /dev/sdh RO O_DIRECT
/dev/sdh: block size is 4096 bytes
/dev/sdh: physical block size is 512 bytes
Closed /dev/sdh
Incorrect metadata area header checksum on /dev/sdh at offset 4096
Telling lvmetad to store PV /dev/sdh (AzKyTe-5Ut4-dxgq-txEc-7V9v-Bkm5-mOeMBN)
Setting response to OK
이 구성은 일시적이므로 디스크 사용량을 다시 조정하는 것이 좋겠다고 생각했습니다.
누군가가 보기 장치의 순서를 명시적으로 재정의하는 방법을 말해주지 않는 한 pvscan
?
답변1
filter
가장 먼저 확인해야 할 것은 및 의 global_filter
옵션 입니다 /etc/lvm/lvm.conf
. PV가 있는 장치를 필터링하지 않도록 하세요.
캐시는 cache_dir
동일한 파일의 옵션으로 설정됩니다. 내 Debian 컴퓨터에서는 기본값이 입니다 /run/lvm
. 캐시(있는 경우)는 이 디렉터리에 있어야 합니다. 설정 하면 obtain_device_list_from_udev
캐시가 사용되지 않을 것이라고 생각합니다.
마지막으로 use_lvmetad
설정되었는지 확인합니다. 그렇다면 LVM 메타데이터 데몬을 다시 시작해야 할 수도 있습니다.
답변2
pvscan
RAID 어레이의 구성 요소 장치와 RAID 어레이 자체에서 동일한 UUID가 표시되어 문제가 발생한 것 같습니다 . 이는 일반적으로 장치가 직접적인 구성 요소라는 점을 인식하면 피할 수 있다고 생각합니다. 제 경우에는 장치가 RAID 장치의 구성 요소가 직접적으로는 아니지만 RAID 장치가 PV여야 하는 상황을 만들었습니다.
내 솔루션은 LV를 백업하고 어레이를 강제로 다운그레이드한 다음 다중 레벨 RAID를 사용하지 않도록 디스크를 재구성하는 것이었습니다. 다시 재부팅하면 장치 문자가 변경됩니다. 500Gb = /dev/sdi, 250Gb = /dev/sdj, 750Gb = /dev/sdk
# mdadm /dev/md99 --fail --force /dev/md90
# mdadm /dev/md99 --remove failed
# mdadm --stop /dev/md90
# wipefs -a /dev/sdi /dev/sdj # wipe components
# systemctl stop lvm2-lvmetad
# pvscan -vvv
# pvs
..... /dev/md99 is now correctly reported as the PV for VG b
# fdisk /dev/sdi
...... Create 2 partitions of equal size, i.e. 250Gb
# fdisk /dev/sdj
...... Create a single 250Gb patitiion
# mdadm /dev/md91 --create -lraid5 -n3 /dev/sdi1 /dev/sdj1 missing
# mdadm /dev/md92 --create -lraid1 -n2 /dev/sdi2 missing
# pvcreate /dev/md91 /dev/md92
# vgextend b /dev/md91 /dev/md92
# pvmove /dev/md99
# vgreduce b /dev/md99
# pvremove /dev/md99
# mdadm --stop /dev/md99
# wipefs -a /dev/sdk
# fdisk /dev/sdk
..... Create 3 250Gb partitions
# mdadm /dev/md91 --add /dev/sdk1
# mdadm /dev/md92 --add /dev/sdk2
이야기의 교훈:
파일 시스템에 너무 많은 수준의 간접 참조를 도입하지 마십시오!
답변3
루트로서 다음 명령을 사용하면 문제가 해결됩니다.
pvscan --cache
pvscan