我有一台Lenny服务器,它已经将SAN连接configuration为名为“datavg”的VG的唯一PV。
昨天,我已经更新了Debian补丁盒,并重新启动。
重启后,它没有启动,说它找不到/ dev / mapper / datavg-datalv。
这就是我所做的:
– 在救援模式下启动并在/ etc / fstab中注释挂载
– 重新启动到完全用户模式。 (安装点是/ data,只有postgresql无法启动)
– 做了vgdisplay,lvdisplay,pvdisplay来查看卷组发生了什么事情。 (datavg完全丢失)
之后,我注意到,从Linux可以看到LUN,并且LVM分区也是可见的:
# ls -la /dev/mapper/mpath0* brw-rw---- 1 root disk 254, 6 2009-11-23 15:48 /dev/mapper/mpath0 brw-rw---- 1 root disk 254, 7 2009-11-23 15:48 /dev/mapper/mpath0-part1
– 然后,我尝试了pvscan以查明是否可以findPV。 不幸的是,它没有检测到作为PV的分区。
– 我在分区上运行pvck,但没有find任何标签:
# pvck /dev/mapper/mpath0-part1 Could not find LVM label on /dev/mapper/mpath0-part1
– 然后,我想知道LUN是否可能是空的,所以我做了几MB的DD。 在这里,我可以看到LVM标题:
datavg { id = "removed-hwEK-Pt9k-Kw4F7e" seqno = 2 status = ["RESIZEABLE", "READ", "WRITE"] extent_size = 8192 max_lv = 0 max_pv = 0 physical_volumes { pv0 { id = "removed-AfF1-2hHn-TslAdx" device = "/dev/dm-7" status = ["ALLOCATABLE"] dev_size = 209712382 pe_start = 384 pe_count = 25599 } } logical_volumes { datalv { id = "removed-yUMd-RIHG-KWMP63" status = ["READ", "WRITE", "VISIBLE"] segment_count = 1 segment1 { start_extent = 0 extent_count = 5120 type = "striped" stripe_count = 1 # linear stripes = [ "pv0", 0 ] } } } }
请注意,这是来自pvck无法findLVM标签的分区!
– 我决定写一个新的LVM标签到分区,并从备份文件恢复参数。
pvcreate --uuid removed-AfF1-2hHn-TslAdx --restorefile /etc/lvm/backup/datavg /dev/mapper/mpath0-part1
– 然后我运行了一个vgcfgrestore -f / etc / lvm / backup / datavg datavg
– 之后,我出现了一个pvscan。
– 通过vgchange -ay datavg,我激活了VG,LV可用。
– 当我尝试安装LV时,没有find任何文件系统。 我尝试了几种方式恢复,但没有成功。
– 做了受影响的LV的DD后,我试图重新创build超级块
mkfs.ext3 -S /dev/datavg/backupdatalv
– 但是这个结果不能被装载:
# mount /dev/datavg/backupdatalv /mnt/ mount: Stale NFS file handle
事实上,这可能发生的第一个地方是不是很好,至less可以说,所以我想找出一切,我可以对这个故障。
我的问题:
– 修补程序和重新启动后,LVM标签如何消失?
– 为什么在回收PV之后文件系统不在那里? (pvcreate命令是否垃圾数据?)
– LV中的ext3文件系统是否仍可挽救?
– 有什么我可以做,以防止这个问题?
在此先感谢,Ger。
我曾遇到类似的问题。 在我们的例子中,有人创build了一个分区来保存PV,但是当他们运行pvcreate命令时,他们忘记了指定分区,而是使用了整个设备。 系统运行良好,直到重新启动,LVM无法再findPV。
所以在你的情况下,有人可能在创build时运行“pvcreate / dev / mapper / mpath0”,而不是“pvcreate / dev / mapper / mpath0-part1”? 如果是这样,则需要从包含PV的磁盘中删除分区表。
从pvcreate(8)手册页删除分区表:
dd if = / dev / zero of = PhysicalVolume bs = 512 count = 1
如果设备上有分区表,内核中的LVM代码将不会识别整个设备的PV。 一旦我们删除了分区表,PV就被识别了,我们可以再次访问我们的数据。