地址:兰州市城关区科技街88号
电话:(86)0931-8265989
传真:(86)0931-8260768
手机:13909315556
邮箱:ygb@lzyglx.com
在AIX系统使用EMC盘阵的环境下,你可能会遇到hdiskpower与hdisk同时出现认到PVID的情况。这种情况的出现比较偶然,但也有一定的必然性。大多情况是由于使用了 chdev -l hdiskX -a pv=yes这样的命令误操作。
在这种情况下,你在importvg、varyonvg时候是会报pvid重复,从而报错,存储无法使用。
这时候需要使用一个比较笨的办法,直接在ODM库中的hdisk pvid信息改为none即可。办法虽然较笨,但是相对安全,不用对hdiskpower盘进行操作。
修改方法如下(以hdisk9为例):
1. odmget命令先拿到现有的pvid属性值的信息:
#odmget -q "name=hdisk9 and attribute=pvid" CuAt
CuAt:
name = "hdisk9"
attribute = "pvid"
value = "000181cfdfdec9960000000000000000"
type = "R"
generic = "D"
rep = "s"
nls_index = 15
2. 将上面的输入写入一个文件中,然后在文件中修改pvid的值,如新的PVID为none,则文件的内容就是
CuAt:
name = "hdisk9"
attribute = "pvid"
value = "none"
type = "R"
generic = "D"
rep = "s"
nls_index = 15
3. odmchange命令来更新ODM
假设文件放在/tmp/a
则 odmchange -o CuAt -q "name=hdisk9 and attribute=pvid" /tmp/a
此时hdisk9的PVID就会变成none,这样你去做hdiskpower的importvg时就不会再有报错。
同理你也可以将ODM库中错误的PVID信息修改成你想要的。但是这就存在很大的风险,谨慎。
在这里普及一个概念。
什么是PVID,个人理解PVID就是一个PV在ODM信息库中的唯一标识,hdiskX却不是,一块相同的盘,可以是hdisk9/hdisk10/hdisk100000 但是只要使用chdev命令第一次认到这块盘以后,他的pvid就固定下来了。一块盘的pvid生成原则是 主板序列号+形成pv时候的时间戳。这个信息是写在物理硬盘头信息里的。同时AIX ODM库里也存在。同时VGDA信息里也是存在的。这三个信息相互吻合,印证。走遍天下,都可以使用importvg来导入原有的VG信息,同时数据也都是有保障的。
在AIX操作系统中,绝对不能对于已有数据的EMC盘包括hdisk hdiskpower使用 chdev -l hdiskX -a pv=clear命令。绝对不能。为什么呢?接下来详细解释。
你对一块盘执行pv=clear后,物理硬盘头信息的pvid就会被清除,重新 pv=yes之后,生成,认到的就是一个全新的PVID,同时这个PVID是会直接写入到物理硬盘的头信息里。此时,悲剧来了,VGDA信息里依旧保留的是之前老的pvid信息,而AIX ODM与硬盘上记录的PVID已经是完全不一样一个新的PVID。操作系统就认为这块硬盘就是一块全新的硬盘,不存在于任何已知的VG中。同时你对原有的VG进行importvg varyonvg时候均会提示你VG信息不完整而报错。数据这时候就离丢不远了。
再次唠叨一下,绝对不能对于已有数据的EMC盘包括hdisk hdiskpower使用 chdev -l hdiskX -a pv=clear命令。绝对不能。
但是,如果出现这种情况,就是说,硬盘现有的pvid,AIX ODM记录的PVID信息与硬盘中记录的VGDA信息PVID不一致的时候,数据还有的救么?答案是:有的。
此时,你需要仔细核对EMC盘阵的物理信息,每一块emc的hdiskpower都是由若干个hdisk组成。但是相同物理设备的hdisk与hdiskpower都是有唯一的识别码,一个4位的16进制数,使用EMC的命令可以查看。通过这个数你可以确定他们物理关系。然后在原有的主机下得到原来的那个正确的pvid,然后使用如下方法将出错的pvid直接写回到硬盘的头信息里去,然后rmdev -Rdl hdiskpower,然后cfgmgr就可以恢复原有的PVID信息。下面要说的这个方法是直接修改硬盘头上记录的pvid信息,使用重认后,系统会自动更新pvid信息。同理,你也可以直接修改VGDA里面的pvid信息,但这将是一种将错就错的方法,个人认为风险较大。
具体方法如下:
1. 首先一定备份好VGDA信息和ODM信息:
(1) 备份VGDA信息:
# dd if=/dev/hdiskpower9 of=/tmp/vgda/hdiskpower9.dd bs=1024 count=10000
# readvgda /dev/hdiskpower9 > /tmp/vgda/readvgda.hdiskpower9
# lqueryvg -Atp hdiskpower9 > /tmp/vgda/lqueryvg.hdiskpower9.out
# lquerypv -h /dev/hdiskpower9 > /tmp/vgda/lquerypv.hdiskpower9.out
# tar -cvf vgda.tar vgda
# gzip vgda.tar
(2) 收集一份snap:
# snap -gfLc
2. 用脚本修复pvid的方法:
(1) 将脚本chpvid,以bin方式上传到服务器.
(2) 给chpvid脚本加上可执行权限(-rwxr-xr-x):
# chmod +x chpvid
# ls -al | grep chpvid
-rwxr-xr-x 1 root system 330 Sep 30 16:59 chpvid
(3) 下面我们以hdiskpower9和testvg为例,您可以参考如下的步骤:
hdiskpower9属于testvg,现在的pvid为3039333337323037,把它修复为005d25cf4ffeaf14.
#script /tmp/chpvid.script (开启一个script,所有操作完毕,执行exit.只在一个session有效.)
#lspv
hdiskpower7 none None
hdiskpower8 none None
hdiskpower9 3039333337323037 None
hdiskpower10 none None
#./chpvid 005d25cf4ffeaf14 hdiskpower9 (将hdiskpower9的pvid修复为005d25cf4ffeaf14)
然后使用rmdev -Rdl hdiskpower9,然后cfgmgr就可以恢复原有的PVID信息。至此原有的VG就可以正常importvg了。
这个分享查看VGDA信息命令
lqueryvg -Atp hdiskpower9 可以看到VGDA信息,这个信息是直接写在硬盘头信息里的。包含了这个硬盘所在的VG所有相关的盘的PVID信息。
这个命令的输出需要与lspv中的显示的PVID信息完全一致。