地址:蘭州市城關區科技街88號
電話:(86)0931-8265989
傳真:(86)0931-8260768
手機:13909315556
郵箱:ygb@jrhdec.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信息完全一致。