假如某个LV的LVCB被破坏:
dd if=/dev/zero of=/dev/sjhlv bs=512 count=1 --破坏lvcb的内容。
#umount /lvcbtest
#mount /lvcbtest
可以看到虽然lvcb被清空,但LV及其上的FS都没有问题,依然可以正常使用。说明MOUNT不需要LVCB。
要恢复LVCB首先需要--把逻辑卷标志写到从逻辑卷开始的9个字节中。
#echo "AIX LVCB " | dd of=/dev/sjhlv bs=1 count=9
9+0 records in
9+0 records out
然后执行synclvodm写入LVCB。假如不做上一步synclvodm会报错:0516-622 synclvodm: Warning, cannot write lv control block data.
#synclvodm -vP sjhvg sjhlv
synclvodm: Physical volume data updated.
synclvodm: Logical volume sjhlv updated.
--用VGDA的数据同步ODM,ODM多的VGDA不管,不更新。然后会把ODM库中关于这个LV的参数写入LV卷头4KB中。最后我们看到一些信息还是没有恢复,比如:label = ,machine id = ,fs =等。LVCB的信息存在三份,分别在lv的头部,VGDA,ODM。我猜测VGDA,ODM只含有LVCB的部分信息。VGDA也没有LVCB关于type的条目信息。
#chfs -a log=/dev/loglv02 /lvcbtest命令会写入LVCB的“fs = vfs=jfs2:log=/dev/loglv02 : options=rw:account=false ”的信息
--用chfs命令按照ODM数据库中的其它内容,进行恢复。到现在位置还有label,time created条目没有恢复。
#putlvcb -L /lvcbtest sjhlv命令会写入LVCB的“label = /lvcbtest ”的信息。
--The putlvcb command writes the control block information into block 0 of the logical volume lvname. Only the fields specified are written. putlvcb can be used to write a new control block or update an existing one.
然后:
#varyoffvg sjhvg
#exportvg sjhvg
在其他机器上importvg试试看,这个LV有没有问题。
#importvg -y sjhvg hdisk7
sjhvg
经测试一切OK。LVCB完全恢复!
添加新评论3 条评论
2015-06-05 17:19
2011-11-01 23:26
2011-03-07 16:52