lvm vgchange 장치 매퍼 ioctl 다시 로드에 실패했습니다. 사용 가능한 데이터가 없습니다.

lvm vgchange 장치 매퍼 ioctl 다시 로드에 실패했습니다. 사용 가능한 데이터가 없습니다.

내 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를 사용하십시오.

관련 정보