我正在 debian 10.7 机器上运行 radi6(HDD) 设置。我将此 md 设备用于 LVM VG。我添加了 SSD 作为直写式缓存。不幸的是我的 bash 历史记录不包含构建的命令。然而,经过我几天的工作设置后,SSD 失效了,包括缓存设备。安装新的 debian 后,因为 root 也在 SSD 上,所以我无法启动 LVM 卷。我收到一条错误消息,例如
Couldn't find device with uuid
我正在尝试vgreduce --removemissing
- 结果是抱怨机器无法启动缓存。
我正在寻找类似的问题并找到答案 - 添加新的 PV 并使用丢失的 UUID 创建新的 LV。我做到了,然后就Couldn't find device with uuid
消失了。
但我无法启动 LVM 卷。
root@fileserver:~#lvchange -ay raid6-4T
Check of pool raid6-4T/r6_4T_files_cache failed (status:1). Manual repair required!
root@fileserver:~# lvs -a --units m
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvm-var raid6-4T Cri---C--- 35944,00m [lvm-var_cache] [lvm-var_corig]
[lvm-var_cache] raid6-4T Cwi---C--- 5036,00m
[lvm-var_cache_cdata] raid6-4T Cwi------- 5036,00m
[lvm-var_cache_cmeta] raid6-4T ewi------- 40,00m
[lvm-var_corig] raid6-4T owi---C--- 35944,00m
[lvol0_pmspare] raid6-4T ewi------- 852,00m
r6_4T_files raid6-4T Cwi---C--- 15225324,00m [r6_4T_files_cache] [r6_4T_files_corig]
[r6_4T_files_cache] raid6-4T Cwi---C--- 34172,00m
[r6_4T_files_cache_cdata] raid6-4T Cwi------- 34172,00m
[r6_4T_files_cache_cmeta] raid6-4T ewi------- 852,00m
[r6_4T_files_corig] raid6-4T owi---C--- 15225324,00m
我尝试修复:
root@fileserver:~# lvconvert --repair /dev/raid6-4T/r6_4T_files_cache
bad checksum in superblock
Repair of cache metadata volume of cache raid6-4T/r6_4T_files_cache failed (status:1). Manual repair required!
root@fileserver:~# lvdisplay
--- Logical volume ---
LV Path /dev/raid6-4T/r6_4T_files
LV Name r6_4T_files
VG Name raid6-4T
LV UUID P1oxae-VTkp-mu6p-8a5z-un2R-pXz9-YjakTI
LV Write Access read/write
LV Creation host, time fileserver, 2019-08-08 15:57:56 +0200
LV Cache pool name r6_4T_files_cache
LV Cache origin name r6_4T_files_corig
LV Status NOT available
LV Size 14,52 TiB
Current LE 3806331
Segments 1
Allocation inherit
Read ahead sectors auto
--- Logical volume ---
LV Path /dev/raid6-4T/lvm-var
LV Name lvm-var
VG Name raid6-4T
LV UUID RNqJF7-FLxx-5WvX-6ceH-NtHl-hvqd-Fus5A5
LV Write Access read only
LV Creation host, time fileserver, 2020-12-13 14:45:51 +0100
LV Cache pool name lvm-var_cache
LV Cache origin name lvm-var_corig
LV Status NOT available
LV Size 35,10 GiB
Current LE 8986
Segments 1
Allocation inherit
Read ahead sectors auto`
root@fileserver:~# vgdisplay
--- Volume group ---
VG Name raid6-4T
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 81
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 14,59 TiB
PE Size 4,00 MiB
Total PE 3825555
Alloc PE / Size 3825555 / 14,59 TiB
Free PE / Size 0 / 0
VG UUID 88lUal-4tQX-CEcf-ZNZe-rdGv-3B2x-4ZCDrp
如何粘贴带有换行符的代码? - 我知道这个帖子的格式不好。
目标是最小化 LV 上的文件系统挂载 - 保存数据后我可以重新创建设置。在最好的情况下,我们会让设置恢复生机。
我希望包含所有必要的信息 - 否则请投诉!
先谢谢了!
答案1
我无法重新激活 LVM 卷,但我能够读取数据。
root@fileserver:~# lvchange -ay raid6-4T/r6_4T_files_corig --activationmode partial
PARTIAL MODE. Incomplete logical volumes will be processed.
Do you want to activate component LV in read-only mode? [y/n]: y
Allowing activation of component LV.
Couldn't find device with uuid tOkG3t-aWGl-4PfO-DI3O-TMoG-ia1z-p4UQgP.
Couldn't find device with uuid qmDOrk-0SRI-9Z1S-PzgI-GRI8-xLrP-kC5LHd.
root@fileserver:~# mount -o noload -r /dev/mapper/raid6--4T-r6_4T_files_corig /media/data/
root@fileserver:~# lvchange -ay raid6-4T/lvm-var_corig --activationmode partial
PARTIAL MODE. Incomplete logical volumes will be processed.
Do you want to activate component LV in read-only mode? [y/n]: y
Allowing activation of component LV.
Couldn't find device with uuid tOkG3t-aWGl-4PfO-DI3O-TMoG-ia1z-p4UQgP.
Couldn't find device with uuid qmDOrk-0SRI-9Z1S-PzgI-GRI8-xLrP-kC5LHd.
root@fileserver:~# mount -o noload -r /dev/mapper/raid6--4T-lvm--var_corig /media/var/
答案2
我今天遇到了同样的问题(缓存 SSD 死了),但最终运行vgreduce --removemissing --force
并删除了关联的逻辑卷!一阵恐慌之后,我尝试使用 vgcfgrestore 从存档的 LVM 配置中恢复 LV,但由于物理卷丢失,这也一直失败。
对我来说,修复方法是编辑存档的 LVM 配置(在 /etc/lvm/archive/vgname.vg 中)并删除对有缺陷的 PV 和缓存设备/卷的任何引用。
在该文件中,您将找到对 PV(包括有缺陷的 PV)和 LV(在此示例中我们将其称为“lvname”)的引用。 LV 引用将有一个“缓存”类型的段。您还会发现一个名为“lvname_corig”的 LV,在数据 PV 上有多个段,指示非缓存数据的存储位置,以及用于缓存元数据等的更多 LV。
我解决这个问题的过程是:
- 备份原始 VG 配置文件。
- 从 lvname 复制“id”和“state”行,然后找到名为 lvname_corig 的卷并将它们粘贴到那里(注释掉该块中的 id 和 state 行)。
- 删除lvname块。
- 删除缓存的所有相关卷块(cachedatalvname_cpool、cachedatalvname_cpool_cmeta、cachedatalvname_cpool_cdata)。
- 将 lvname_corig 块重命名为 lvname。
- 删除引用有缺陷 PV 的任何其他卷(在我的例子中,有一个 lvol0_pmspare 卷)。
- 删除对有缺陷的 PV 的引用(在我的例子中,这是一个名为“pv3”的块)。
完成所有这些编辑后,用于vgcfgrestore -f filename vgname
恢复 VG/LV 配置,而无需有缺陷的缓存 PV 或任何相关的缓存卷。