datavg包含hdisk1 hdisk4 hdisk2,
hdisk2的VGDA信息丢失,(判断方法:lqueryvg -Atp hdisk2,无法得到结果)
导致hdisk2中的LV全部不能MOUNT。
#lsvg -p datavg
hdisk1 active datavg
hdisk2 missing datavg
hdisk4 active datavg
exportvg 以后,rmdev -dl hdisk2,此时hdisk2的PVID也没有了 lspv
hdisk2 none None
要恢复hdisk2中的LV信息,首先要把hdisk2想办法加入到datavg中。 # chdev -l hdisk2 -a pv=yes
此时,hdisk2又恢复了以前的PVID了。 # synclvodm datavg
将把hdisk2加入到datavg中,(因为系统的ODM库中,知道PVID=hdisk2是DATAVG的PV) # lspv
hdisk2 0002039490ef datavg
# exportvg datavg (从ODM库中删除VGDA的信息)
# importvg -y datavg hdisk4 (不要HDISK2,因为此时HDISK2的VGDA是坏的) importvg 的时候,系统会再次做synclvodm,这次将会把系统ODM中VGDA的信息同步到hdisk2上。 # lsvg -p datavg hdisk1 active datavg hdisk2 active datavg hdisk4 active datavg
此时,HDISK2上的VGDA信息又恢复了。里面的LV可以读写了。不过对于HDISK2上的文件系统,需要做 个fsck
手工修改PVID
如果某人对硬盘做过"chdev -l hdiskX -a pv=clear"的话,那么即使再使用"chdev -l hdisk* -a pv=yes"也无法获得原来的PVID了,这样就会导致原来的VG没法使用了。一般我们会使用recreatvg来修复,但是这样的话不仅lv name,fs name都改了,甚至mount point都需要改掉,数据虽然保住了,但是非常的麻烦。
下面提供一个手工修改PVID的办法,以达到恢复数据的目的: 1. 首先取得硬盘VGDA区中的PVID。例如:
#lqueryvg -p hdisk* -P
000d097d5f36f79f 2 0
2. 将pvid转换成8进制,注意两个字符为一组。例如:
\00\015\011\0175\0137\066\0367\0237 3. 用dd将此PVID写入硬盘:
#echo "\00\015\011\0175\0137\066\0367\0237\c" | dd of=/dev/hdiskX bs=1 seek=128 count=8
4. 检查是否成功写入:
#dd if=/dev/hdiskX bs=1 skip=128 count=8 | od -x 5. 删除该盘,再重新认一遍:
#rmdev -dl hdiskX;cfgmgr –v 6. 最后再importvg
原文地址:http://blog.51cto.com/sf1314/2085901