1台主机hdisk2的VGDA信息丢失,恢复的步骤:

 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