丢失 LVM 元数据,但文件系统仍然有效

丢失 LVM 元数据,但文件系统仍然有效

设置如下:

  • 70TB JBOD 作为 SAN 的一部分,分为 5 个 LUN(4x15TB 和 1x10TB)。
  • 运行 Centos 7 的文件服务器通过 iSCSI 连接到 5 个 LUN,使用iscsiadm,跨越两个网络路径,总共 10 条路径。
  • 用于dm-multipath将这些 iSCSI 路径聚合到单个设备中,即/dev/mapper/mpath*
  • pvcreate使用上述设备构建物理卷dm-mutipath
  • 使用所有物理卷构建单个卷组。
  • 构建多个逻辑卷以满足所需容量。
  • 使用 将逻辑卷格式化为 XFS mkfs.xfs

现在,SAN 出现了问题,需要进行维护(升级控制器固件),因此我重新启动了文件服务器,以确保 SAN 恢复在线时不会出现任何问题。

重启后,我能够重新连接到 SAN 并挂载文件系统。它们运行正常。

但是,重新启动文件服务器后,我注意到这些文件系统的 LVM 信息没有出现,即pvdisplay,,vgdisplay并且lvdisplay仅报告文件服务器上的本地磁盘。

这些 VG 和 LV 确实出现在/dev

/dev/vg_${VG}
/dev/vg_${VG}/${LV1}_lv
/dev/vg_${VG}/${LV2}_lv
/dev/disk/by-id/dm-name-${VG}-${LV1}_lv
/dev/disk/by-id/dm-name-${VG}-${LV2}_lv
/dev/mapper/vg_${VG}-${LV1}_lv
/dev/mapper/vg_${VG}-${LV1}_lv

它们确实出现了,pvs -a但是没有范围:

[root@file-server /]# pvs -a
PV                                     VG     Fmt  Attr PSize   PFree
/dev/centos/home                                   ---       0     0
/dev/centos/root                                   ---       0     0
/dev/centos/swap                                   ---       0     0
/dev/mapper/mpatha                                 ---       0     0
/dev/mapper/mpathb                                 ---       0     0
/dev/mapper/mpathc                                 ---       0     0
...
/dev/sda                                           ---       0     0
/dev/sda1                                          ---       0     0
/dev/sda2                              centos lvm2 a--  273.80g 4.00m
/dev/sdb                                           ---       0     0
/dev/sdc                                           ---       0     0
/dev/sdd                                           ---       0     0
/dev/sde                                           ---       0     0
...
/dev/vg_${VG1}/${LV1}_lv               ---       0     0
/dev/vg_${VG1}/${LV2}_lv                  ---       0     0

它们也出现在dmsetup info -c

[root@file-server /]# dmsetup info -c
Name                              Maj Min Stat Open Targ Event  UUID
mpathe                            253   6 L--w    1    1      1 mpath-27f3164e4727f3bc5
mpathd                            253   5 L--w    1    1      1 mpath-2b3c12e7d9acc5f25
mpathc                            253   4 L--w    1    1      1 mpath-232eb560378e8ec53
mpathb                            253   7 L--w    1    1      1 mpath-218029135ad1e514a
mpatha                            253   3 L--w    1    1      1 mpath-20123b6d74acce549
vg_${VG}-${LV1}_lv    253  16 L--w    1    1      0 LVM-6DoB20ypbwcGOoRHiX0t8wKAY3oC9BXtSGzQ1wy8fGa9okuQm1NxtPCHnmt0dtO6
vg_${VG}-${LV2}_lv   253  17 L--w    1    3      0 LVM-6DoB20ypbwcGOoRHiX0t8wKAY3oC9BXtmgFlfK9Bilo3IAWxjqwR7dUA8Oq0Fu70
mpathj                            253  15 L--w    1    1      1 mpath-266772bd8af26c781
centos-home                       253   2 L--w    1    1      0 LVM-GAWmujV5zkPn9byt74PY7byRJUWi8UmYSqsQjkt2uTDQ1q5Do38GXYynZhTiLhYw
mpathi                            253  14 L--w    1    1      1 mpath-254a27729bfbfc8c6
mpathh                            253  13 L--w    1    1      1 mpath-2a0ff1a2db7f22f00
mpathg                            253  12 L--w    1    1      1 mpath-27a5ce08413f48f13
mpathf                            253  11 L--w    1    1      1 mpath-2d19e7002c7a41667
centos-swap                       253   1 L--w    2    1      0 LVM-GAWmujV5zkPn9byt74PY7byRJUWi8UmYtA03QjyV1IlWWk9Nz9cHJFKN16SJZ0T5
centos-root                       253   0 L--w    1    1      0 LVM-GAWmujV5zkPn9byt74PY7byRJUWi8UmYCMmaP0envGMf3gk8JhcyoQIQPGmjrL6w

如何恢复 LVM 元数据? 只需vgcfgrestore按照以下方法操作即可:

https://www.centos.org/docs/5/html/5.2/Cluster_Logical_Volume_Manager/mdatarecover.html

我似乎有一个备份/etc/lvm/backup

我不太愿意摆弄这个,因为万一我丢失了文件系统上的任何数据。恢复是可能的,但必须有系统停机和延迟。

编辑:来自pvslvsvgs以下的输出:

[root@dfile-server ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  273.80g 4.00m
[root@file-server ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home centos -wi-ao----  46.57g
  root centos -wi-ao---- 221.64g
  swap centos -wi-ao----   5.59g
[root@file-server ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   3   0 wz--n- 273.80g 4.00m

答案1

正如评论中所诊断的,问题与 SAN 升级无关,而是lvmetad守护进程返回了陈旧/错误的信息。

lvmetad通过停止(systemctl stop lvmetad.service; systemctl stop lvmetad.socket)并发出pvs直接分析块设备并返回正确信息,可以确认这一点。

永久修复是lvmetad通过通知缓存发生变化来更新缓存。这是通过运行pvscan --cache、重新启用lvmetadsystemctl start lvmetad.service; systemctl start lvmetad.socket)并最终运行另一个来完成的pvscan --cache

此后,正常pvs(带lvmetad活动)返回正确数据。

相关内容