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_tmetatp1_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 进行文件系统检查。

相关内容