在aix環境下,若因維護誤操作、存儲mapping錯誤等,不小心将lv誤删除,這種損失通常是巨大的。删除後的不當保護及恢複操作可能使資料無法恢複,也可能增加處理的時間與算法複雜度。如何有效保護現場,并選擇正确的資料恢複方案是非常重要的。
aix的存儲層有太多文章描述,做為鋪墊,簡要描述一下。pv相當于實體磁盤(對于存儲,是存儲映射過來的卷,對于作業系統而言,等同于實體硬碟),若幹個pv組成一個vg,意味着可以将容量不同的存儲空間合起來統一配置設定。為了實作這個目的,aix把同一個vg的所有pv按相同大小的存儲顆粒進行空間編排,這個存儲顆粒就是pp。而配置設定空間時,以若幹個pp(可能是不同pv上的),做為使用集合,這個集合就是lv。
aix的lvm層vgda區域有一個固定的pp到lv的映射表,稱為ppmap。每個pv的所有pp從第一個(pp#1)開始,以固定大小的32個位元組記錄本pp歸屬于哪個lv。删除aix中vg的某個lv,底層上最根本的就是釋放這個lv原先占用的pp,也就是清0之前所有占用pp的32位元組ppmap條目,另外還會做一些諸如lv名稱的清理、lv裝置摘要資訊的清理等工作。
lv被删除後,不建議貿然嘗試用mklv等操作試圖進行災難恢複。雖然mklv本質上不會清除pp内容區,但有些情況會損壞資料,比如:如果故障前後的pp配置設定表不相同,但前面pp表配置設定正确,這樣,檔案系統可能可以識别,甚至于可以挂上。不過,麻煩的是,挂上後某些結構可能會出現錯誤,以至于被系統自動修正,事情就會變得更糟。即便是隻讀方式mount,也不是最優選的做法。
如果時間允許,aix lv删除後的恢複方案大緻為:
1、保持vg狀态,不建立任何lv。
2、使用備份手段,對vg中所有的pv做完整鏡像。
3、在鏡像中進行資料提取恢複。或保護鏡像後以分析好的ppmap,重建丢失的lv。
上述方案的宗旨為:所有操作盡可能可回溯。
【如何完整鏡像故障卷】
來說說如何對aix中的pv做完整鏡像(從目前的資料恢複技術看,多數處理和分析過程首選是windows環境,是以,鏡像方案盡量兼顧鏡像出來的資料可以在windows下直接通路):
第一種方法:如果存儲自身有卷鏡像功能,可以嘗試之。
第二種方法:如果aix環境中有足夠空間,放得下需要鏡像的pv,可以将pv鏡像成檔案(或lv)。如果是檔案,可以通過ftp等手段傳出來。(不建議此方法)
第三種方法:另外建構一台nfs server,以nfs的方式用dd将pv鏡像到nfs上。當然如果aix上可以挂載cifs,甚至于直接可以鏡像到windows的共享檔案夾下。但windows下如果生成大檔案,有可能會越來越慢,可以盡量使用windows2008或選擇其他方案。
第四種方法:建議的方案。具體為建構塊裝置mapping至aix環境,直接以塊裝置至塊裝置的方法進行鏡像。可選擇的塊裝置有fc lun,iscsi等。如果不具備fc環境的支撐,至少iscsi(可以是軟iscsi)是足夠好的方案。
以windows端做iscsi target,aix環境做iscsi initiator為例,下面為詳細過程:
1、在配置網絡環境,保證aix與windows網絡可通。
2、在windows上搭建iscsi target,以 下圖starwind為例,建立了一個名稱為pv0的iscsi磁盤。
圖一:

3、傳回aix平台,确定是否安裝iscsi initiator:
lsdev |grep iscsi,如果提示“iscsi0 available iscsi protocol device” 表示iscsi用戶端已經安裝,裝置号是iscsi0。也可以用lslpp -l|grep -i iscsi 确認是否已經安裝了iscsi軟體包。如未安裝,先安裝iscsi initiator。
4、修改aix環境中/etc/iscsi/targets檔案,在最後增加一行(本例中windows iscsi target的ip是192.168.1.9,iqn見上圖)。192.168.1.9 3260 iqn.2008-08.com.starwindsoftware:tel-pv0
5、在aix平台執行cfgmgr -l iscsi0 (見步驟3中的裝置号),重新掃描iscsi裝置。
6、lspv 檢視是否識别到iscsi裝置。本例結果如下:
圖二:
可以看到hdisk3已經認到,可以使用lsattr -el hdisk3 檢視裝置詳細情況,指令結果為:
圖三:
可以看到明确的iscsi裝置細節,還可以通過bootinfo -s hdisk3檢視目标iscsi容量是否正确(機關為mb,本例為示範,僅建立了個大小為4gb的iscsi存儲卷)。
圖四:
7、使用dd指令對故障存儲做完整鏡像(建議使用塊裝置路徑進行鏡像):ddif=/dev/rhdisk0 of=/dev/rhdisk3 bs=4096k conv=noerror,sync。
【aix lv誤删除資料恢複方案】
在完整備份故障pv後,就可以着手恢複資料了。大緻有3種方案可對資料進行恢複
方案一:
分析得到原lv的ppmap,之後通過mklv -m <指定的ppmap檔案>的方式重建與原先lv相同的配置設定表,以激活原lv,進而恢複資料。
方案二:
分析得到原lv的ppmap,直接通過第三方軟體(北亞開發有windows端的jfs2檔案系統解釋軟體)進行jfs2檔案系統解釋。如果是裸裝置(raw),可完整讀出後再重新按塊寫回。
方案三:
如果原lv中存儲的是oracle資料庫,可以針對oracle資料檔案的特征,以碎片的方式,從所有pp中提取并組合好所有的特定資料檔案,再災難方式恢複oracle系統。