chdev -l hdiskX -a pv=clear
chdev -l hdiskX -a pv=yes
之后虽然数据还在,但是PVID被更改。如果能找回原来的PVID,并覆盖掉pv=yes后新的PVID,就能找回数据。整个过程分为三个步骤:
1,找到原来的PVID
2,覆盖新的PVID
3,更新ODM

对于老手,这些操作不是很复杂,但是对于我等新手就比较麻烦了。因此我写了个工具,来帮助完成某些工作。
其实说穿了也不神奇,每个PV的头部都记录了PVID,其位置是固定。每个PV的VGDA中都有PVID列表,记录了属于该VG的所有PV的PVID。VGDA的位置是随着VG的版本不同而不同的。根据VGDA中的PVID列表,一个个去找哪些PVID在系统中是还有的,那么剩下最后一个就是pv=clear前的PVID。将这个PVID写回PV头部。这就完成了第1和第2步。第3步通过odmchange修改ODM中的PVID,修改回原来的PVID

附件解开后是chkvgda.exe可执行文件。

测试流程:
#lspv
......
hdisk4          00c10fea8e2b48ca                    testvg          active
hdisk5          00c10feac82cdafb                    testvg          active
hdisk6          00c10fead24d2663                    testvg          active
hdisk7          00c10fead24d2831                    testvg          active

#lsvg -l testvg
testvg:
LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT
jfs2test            jfs2       2     2     2    open/syncd    /tmp/jfs2test
loglv00             jfs2log    1     1     1    open/syncd    N/A

#lslv -m jfs2test
jfs2test:/tmp/jfs2test
LP    PP1  PV1               PP2  PV2               PP3  PV3
0001  0001 hdisk4            
0002  0001 hdisk5

#ll /tmp/jfs2test
total 10400
drwxr-xr-x   2 root     system          256 Jan 01 02:25 lost+found
-rw-r-----   1 root     system      5324800 Jan 01 02:26 test.tar

#umount /tmp/jfs2test
#varyoffvg testvg

#chdev -l hdisk4 -a pv=clear
hdisk4 changed

#lspv
......
hdisk4          none                                None            
hdisk5          00c10feac82cdafb                    testvg         
hdisk6          00c10fead24d2663                    testvg         
hdisk7          00c10fead24d2831                    testvg

#chdev -l hdisk4 -a pv=yes
hdisk4 changed

#lspv
hdisk4          00c10fea8e521b10                    None            
hdisk5          00c10feac82cdafb                    testvg         
hdisk6          00c10fead24d2663                    testvg         
hdisk7          00c10fead24d2831                    testvg

#varyonvg testvg
0516-008 varyonvg: LVM system call returned an unknown error code (3).

#exportvg

#importvg -y testvg hdisk5
PV Status:      hdisk4  00c10fea8e521b10        INVPVID
                hdisk5  00c10feac82cdafb        PVACTIVE
                hdisk6  00c10fead24d2663        PVACTIVE
                hdisk7  00c10fead24d2831        PVACTIVE
                        00c10fea8e2b48ca        NONAME
varyonvg: Volume group testvg is varied on.
0516-510 synclvodm: Physical volume not found for physical volume identifier 00c10fea8e2b48ca0000000000000000.
0516-548 synclvodm: Partially successful with updating volume group testvg.
testvg
PV Status:      hdisk5  00c10feac82cdafb        PVACTIVE
                hdisk6  00c10fead24d2663        PVACTIVE
                hdisk7  00c10fead24d2831        PVACTIVE
                        00c10fea8e2b48ca        NONAME
varyonvg: Volume group testvg is varied on.

#lspv
hdisk4          00c10fea8e521b10                    None            
hdisk5          00c10feac82cdafb                    testvg          active
hdisk6          00c10fead24d2663                    testvg          active
hdisk7          00c10fead24d2831                    testvg          active

#lsvg -l testvg
testvg:
LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT
jfs2test            jfs2       2     2     2    closed/syncd  N/A
loglv00             jfs2log    1     1     1    closed/syncd  N/A

#dd if=/dev/hdisk4 of/tmp/hdisk4 bs=4m count=1
#dd if=/dev/hdisk5 of/tmp/hdisk5 bs=4m count=1
#dd if=/dev/hdisk6 of/tmp/hdisk6 bs=4m count=1
#dd if=/dev/hdisk7 of/tmp/hdisk7 bs=4m count=1

将/tmp/下的hdisk4~hdisk7下载到本地的testvg目录中,testvg目录和chkvgda.exe在相同一个目录中。至少要有3个hdisk的头部,只支持svg
执行chkvgda两次,第一次会产生信息说hdisk4的pvid不正确,告知了正确的PVID,并修复。第二次就正常了,没有报错信息

将hdisk4上传到机器上,例如/tmp/hdisk4,并用dd覆盖掉/dev/hdisk4的头部
#dd if=/tmp/hdisk4 of=/dev/hdisk4 bs=4m count=1

#odmget -q "name=hdisk4 and attribute=pvid" CuAt > /tmp/CuAt.txt

#编辑/tmp/CuAt.txt,修改回正确的PVID

#odmchange -o CuAt -q "name=hdisk4 and attribute=pvid" /tmp/CuAt.txt

#lspv
hdisk4          00c10fea8e2b48ca                    None            
hdisk5          00c10feac82cdafb                    testvg          active
hdisk6          00c10fead24d2663                    testvg          active
hdisk7          00c10fead24d2831                    testvg          active

#exportvg

#importvg -y testvg hdisk5
testvg

#

#lsvg -l testvg
testvg:
LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT
jfs2test            jfs2       2     2     2    closed/syncd  /tmp/jfs2test
loglv00             jfs2log    1     1     1    closed/syncd  N/A

#mount /tmp/jfs2test

#df -k
......
/dev/jfs2test      131072    125524    5%        5     1% /tmp/jfs2test

[ 本帖最后由 mike79 于 2009-1-1 23:27 编辑 ]

pv=clear后的修复相关推荐

  1. 服务器断电重启修复,WIN取消100M隐藏分区、异常断电后绕过修复模式

    1,安装win系统时取消100M的前置隐藏分区的办法: 安装系统时,进行到安装Windows界面时,不使用图形界面的新建(E)进行分区,直接按快捷键Shift+F10打开CMD命令行,输入以下命令进行 ...

  2. linux反复出现文件系统损坏,Linux日常维护之文件系统损坏后的修复

    Linux文件系统损坏后的修复技巧详细介绍 在日常运维中,经常会遇到文件系统损坏的问题,如下图: Linux不正常关机,有时候再次启动时会报文件系统损坏,如何修复文件? 首先会让你输入root用户的密 ...

  3. 工具:语雀导出MarkDown文档后图片修复

    微信公众号:乌鸦安全 扫取二维码获取更多信息!  01  描述 在比较早的时候,我比较纠结记笔记的产品,最初的时候是在使用Typora在本地写Markdown文档,后来试用了一下印象笔记,但是它的缺点 ...

  4. 如何使用计算机蠕虫病毒软件,incaseformat蠕虫病毒是什么?电脑若中病毒后如何修复。...

    原标题:incaseformat蠕虫病毒是什么?电脑若中病毒后如何修复. 昨天开始 国内各家安全大厂都发出预警 提醒电脑用户"incaseformat"蠕虫病毒 已再度开始发作 什 ...

  5. 怎样恢复安装计算机,计算机安装双系统后如何修复系统引导 修复系统引导的方法...

    知友提出问题:电脑双系统怎么用,我装的是win8和win7.win8安装在C盘上,可以正常使用,我把win7安装在一个新分区的盘符上G盘,为什么开机没有win7系统选择项启动,只有一个win8和GHO ...

  6. grub引导项修复详解_重新安装win7后,修复Grub启动项

    重新安装win7后,修复Grub启动项 发布时间:2010-09-14 22:14:00来源:红联作者:null925 [i=s] 本帖最后由 null925 于 2010-9-14 22:18 编辑 ...

  7. 记csdn打不开或打开缓慢后的修复--如何查找dns并修改hosts文件

    记csdn打开缓慢后的修复–如何查找dns并修改hosts文件 问题: CSDN文章打开的十分缓慢,经常出现无法打开页面的错误提示 (以前用的好好的,现在不知道公司局域网改了什么东西,导致我的电脑打开 ...

  8. laravel清理缓存(config:clear)后导致程序崩溃

    laravel清理缓存(config:clear)后导致程序崩溃 前情提要:导致这个错误的可能性有很多,如此不人性化的提示是因为在config:clear后laravel重载出错,然后尝试从log输出 ...

  9. linux错误关机修复工具,Linux_Linux文件系统损坏后的修复技巧详细介绍, Linux不正常关机,有时候再 - phpStudy...

    Linux文件系统损坏后的修复技巧详细介绍 Linux不正常关机,有时候再次启动时会报文件系统损坏,如何修复文件? 首先会让你输入root用户的密码. 1)出错的时候如果告诉你是哪一块硬盘的分区有问题 ...

最新文章

  1. angular4 note
  2. c语言作业 龟兔赛跑,c语言龟兔赛跑
  3. IDEA使用Maven打包时如何去掉测试阶段
  4. ELK技术栈—Logstash—基础介绍
  5. Android—Window、WindowManage、屏幕绘制及刷新
  6. “这张图告诉你什么?”
  7. 最全android Demo
  8. Visual Studio中相对路径中的宏定义,你不了解的宏定义都在这里!
  9. 论文发表在什么期刊上_设计论文发表【期刊论文】设计论文发表
  10. BZOJ3680 吊打XXX
  11. windows批量上传文件到linux,windows上传文件到linux云服务器上
  12. 2021华为软挑赛题_思路分析——实时更新,做多少更多少(八)
  13. BI—SSIS初步认识
  14. 微信机器自动问答机器人
  15. 以太坊存储项目Swarm (代币bzz)1.0 主网正式上线
  16. 大数据模型案例库-涵盖多行业,超百个实战项目案例
  17. Keil_V5 MDK编译时出现:关于core_cm3.c的错误
  18. BZOJ1050 旅行comf(kruskal)
  19. 设计模式--创建型设计模式
  20. 安装Debian系统

热门文章

  1. ElasticSearch实践(三)Rest API简介
  2. jpa 原生sql 查询返回一个实体_spring data系列之jpa
  3. uFrame近况(2016年4月8日更新)
  4. 上海大学计算机网络实验报告3,上海大学计算机组成原理实验报告(全)
  5. oracle按用户采集信息,oracle 11g 手动收集用户统计信息
  6. 使用TensorFlow.js进行人脸触摸检测第2部分:使用BodyPix
  7. 使用Github Actions构建、发布和部署NuGet软件包
  8. CentOS 7.7(1908)发布
  9. android平台java编程规范_Android Java类编写规范+优化建议
  10. jpa初学 hibernate学习