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

这里设置:

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

现在,存在一个需要维护(升级控制器固件)的SAN问题,因此我重新启动了文件服务器,以确保SAN恢复联机时没有任何问题。

重新启动后,我可以重新连接到SAN并挂载文件系统。 他们正常运作。

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

这些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有一个/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 

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

这通过停止lvmetadsystemctl stop lvmetad.service; systemctl stop lvmetad.socket )并通过发布pvs来确认,该pvs直接分析块设备,返回正确的信息。

永久性的修复是通过通知它改变了一些东西来更新lvmetadcaching。 这是运行pvscan --cache ,重新启用lvmetadsystemctl start lvmetad.service; systemctl start lvmetad.socket ),最后运行另一个pvs --cache

之后,正常的pvs (带有lvmetad激活)返回正确的数据。