내 LVM이 일관되지 않은 상태인 것 같습니다.
[~] # vgchange -a y
device-mapper: reload ioctl on (252:16) failed: No data available
device-mapper: reload ioctl on (252:16) failed: No data available
10 logical volume(s) in volume group "vg1" now active
RAID-5(Linux 멀티 디스크)가 충돌하여 재구축 후 더 이상 활성화할 수 없습니다. 어떡해.
일부 진단 결과에 대한 추가 정보가 필요하면 알려주십시오.
[~] # pvs -v --segments
Using physical volume(s) on command line.
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/md1 vg1 lvm2 a-- 21.80t 0 0 36864 lv544 0 linear /dev/md1:0-36863
/dev/md1 vg1 lvm2 a-- 21.80t 0 36864 16384 tp1_meta6 0 linear /dev/md1:36864-53247
/dev/md1 vg1 lvm2 a-- 21.80t 0 53248 5662624 [tp1_tierdata_2_fcorig] 0 linear /dev/md1:53248-5715871
/dev/sdf vg1 lvm2 a-- 7.28t 6.78t 0 16384 tp1_meta1 0 linear /dev/sdf:0-16383
/dev/sdf vg1 lvm2 a-- 7.28t 6.78t 16384 16384 tp1_meta2 0 linear /dev/sdf:16384-32767
/dev/sdf vg1 lvm2 a-- 7.28t 6.78t 32768 16384 tp1_meta3 0 linear /dev/sdf:32768-49151
/dev/sdf vg1 lvm2 a-- 7.28t 6.78t 49152 16384 tp1_meta4 0 linear /dev/sdf:49152-65535
/dev/sdf vg1 lvm2 a-- 7.28t 6.78t 65536 16384 tp1_meta0 0 linear /dev/sdf:65536-81919
/dev/sdf vg1 lvm2 a-- 7.28t 6.78t 81920 16384 tp1_meta5 0 linear /dev/sdf:81920-98303
/dev/sdf vg1 lvm2 a-- 7.28t 6.78t 98304 16384 tp1_meta7 0 linear /dev/sdf:98304-114687
/dev/sdf vg1 lvm2 a-- 7.28t 6.78t 114688 16384 [tp1_tmeta] 0 linear /dev/sdf:114688-131071
/dev/sdf vg1 lvm2 a-- 7.28t 6.78t 131072 1776649 0 free
[~] # vgs -v
Using volume group(s) on command line.
VG Attr Ext #PV #LV #SN VSize VFree VG UUID VProfile
vg1 wz--n- 4.00m 2 12 0 29.08t 6.78t 1VJkVt-vfPX-vBAv-KtuC-kKDU-1CDd-1RBuel
[~] # lvs -v
Using logical volume(s) on command line.
target_name:thin-pool
LV VG #Seg Attr LSize Maj Min KMaj KMin Pool Origin Data% Meta% Move Cpy%Sync Log Convert LV UUID LProfile
lv1 vg1 1 Vwi---t--- 21.00t -1 -1 -1 -1 tp1 TuCexj-MyZA-uIkX-kzVp-KBWt-dHVQ-Iq6t27
lv288 vg1 1 Vwi---t--- 2.00t -1 -1 -1 -1 tp1 f0jKvz-Jm4G-JZ8l-8ysp-2RDS-cDWJ-Ue0VCR
lv544 vg1 1 -wi-a----- 144.00g -1 -1 252 0 SHXwIE-iAMG-5ctO-g0RG-55P9-jeke-df3S4n
tp1 vg1 1 twi-aot--- 21.60t -1 -1 252 6 0.00 0.02 Hk25P5-gQkc-pJHw-jKfL-U9cB-2vBF-74lr2L
tp1_meta0 vg1 1 -wi-a----- 64.00g -1 -1 252 8 foHo1k-gciB-VJcM-9CRV-ySC0-0I9A-rshk3A
tp1_meta1 vg1 1 -wi-a----- 64.00g -1 -1 252 9 8bloJL-stWn-1O3r-j5jQ-vlqv-DpNe-waeIef
tp1_meta2 vg1 1 -wi-a----- 64.00g -1 -1 252 10 AvXCmL-zVIg-xTCm-ZtOz-1VGT-EEBU-cugNA8
tp1_meta3 vg1 1 -wi-a----- 64.00g -1 -1 252 11 EVcMvv-S0BC-N0Xh-5Pzj-3Rrj-RkFb-ZTgMw8
tp1_meta4 vg1 1 -wi-a----- 64.00g -1 -1 252 12 YCgXIz-eZxy-N2Wz-8Exl-9dJw-syIb-dVeux4
tp1_meta5 vg1 1 -wi-a----- 64.00g -1 -1 252 13 H35ozg-XyJ3-rjPP-ipTz-DIDV-JNPA-fSg54E
tp1_meta6 vg1 1 -wi-a----- 64.00g -1 -1 252 14 fl5ACi-7uNv-h5Fw-71NI-G8nT-93sz-VgMdR5
tp1_meta7 vg1 1 -wi-a----- 64.00g -1 -1 252 15 ap8Nds-GACe-9dXu-BZ6J-H1df-HwOc-pQ7VnX
답변1
해결책을 검색하던 중 다음 스레드를 발견했습니다.https://charles-gagnon.medium.com/repair-a-thin-pool-a42f41169541. 불행하게도 설명된 단계로는 내 문제를 해결할 수 없었기 때문에 이 스레드는 실제로 도움이 되지 않았지만 작성자는 다음과 같이 언급했습니다.카이 밍홍이것이 그에게 도움이 됩니다. 그래서 나도 그에게 연락했고 그는 문제 해결을 도와주었습니다.
먼저 내 질문의 기본 구조와 사례를 이해해야 합니다.
볼륨 그룹이 있습니다VG1이 시간은/dev/md1:
[~] # pvdisplay
--- Physical volume ---
PV Name /dev/md1
VG Name vg1
PV Size 21.80 TiB / not usable 2.50 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 5715872
Free PE 0
Allocated PE 5715872
PV UUID C6femQ-nMRN-d8F0-f2pk-BRVA-pQuH-Dv3skX
이 볼륨 그룹에는 많은 논리 볼륨이 있지만 문제의 논리 볼륨은 다음과 같습니다.TP1:
--- Logical volume ---
LV Name tp1
VG Name vg1
LV UUID Hk25P5-gQkc-pJHw-jKfL-U9cB-2vBF-74lr2L
LV Write Access read/write
LV Creation host, time MAML-NAS01, 2021-08-03 13:01:08 +0200
LV Pool metadata tp1_tmeta
LV Pool data tp1_tierdata_0
LV Status available
# open 3
LV Size 21.60 TiB
Allocated pool data 32.45%
Allocated pool chunks 14697037
Allocated metadata 0.69%
Current LE 5662224
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 4096
Block device 252:6
이 논리 볼륨은 볼륨 그룹 내에 저장된 단순한 데이터 블록이 아닙니다. 볼륨 그룹의 정의된 영역을 동적으로 채우는 씬 프로비저닝 공간입니다. 이 씬 프로비저닝된 공간 내에서 논리 볼륨을 생성할 수 있습니다(제 경우에는레벨 1그리고LV288). 이러한 씬 프로비저닝 공간은 두 개의 논리 볼륨으로 구성됩니다.tp1_tmeta그리고tp1_tierdata_0. 하나의 논리 볼륨은 데이터를 저장하는 데 사용되고 다른 논리 볼륨은 논리 구조를 저장하는 데 사용됩니다.
제 경우에는 RAID-5가 충돌했습니다(/dev/md1), 따라서 또한tp1_tmeta논리 볼륨.
첫 번째 단계는 메타데이터 덤프(파일 크기 약 100MB)를 생성하는 것입니다. 메타데이터 스냅샷 오프셋 8388565는 QNAP LVM에만 해당됩니다.
thin_dump /dev/mapper/vg1-tp1_meta0 --metadata-snap=8388565 -o dump.txt
Metadata-snap 명령줄 매개변수에 유의하십시오. 메타데이터 풀은 반복 스냅샷을 수행합니다. 풀이 충돌하면 해당 스냅샷으로 롤백할 수 있습니다.
두 번째 단계에서는 풀을 복원합니다.
/sbin/pdata_tools thin_restore -i dump.txt -o /dev/mapper/vg1-tp1_meta6
내 경우에는 복원했습니다.vg1-tp1_meta6이는 유일하게 열려 있는 메타데이터 풀이기 때문입니다./dev/md1(내 질문 참조).
그런 다음 이것이 이제 풀 메타데이터임을 tp1에 알려야 합니다.
lvconvert vg1/tp1 --poolmetadata vg1/tp1_meta6
lvconvert --thinpool vg1/tp1 --poolmetadata vg1/tp1_meta6
lvconvert vg1/tp1 --swapmetadata --poolmetadata vg1/tp1_meta6
lvconvert --type tier-thin-pool --thinpool vg1/tp1 --poolmetadata vg1/tp1_meta6
~ 후에vg1-tp1_meta6논리 볼륨은 tp1에 바인딩되어 숨겨집니다. 이제 씬 논리 볼륨과 그 안에 있는 논리 볼륨을 활성화할 수 있습니다.
내 경우에는 복구 명령(다른 스레드에서 자주 언급됨)이 호출될 때마다 복구를 위해 또 다른 메타데이터 장치를 생성했지만, 내 경우에는 메타데이터를 복구할 수 없어 충돌이 발생했습니다(롤백할 필요 없음). 그래서 삭제해야 했어요/dev/sdf내 볼륨 그룹에서:
vgsplit vg1 vg2 /dev/sdf
제 경우에는 내부 논리 볼륨도 손상되었습니다. 논리 볼륨 lv1 및 lv288은 ext4를 사용하여 포맷되었으며 여기서 파일 시스템 검사를 수행해야 합니다. 파일 시스템 검사에는 e2fsck_64를 사용하십시오.