HP EVA存儲VxFS文件系統破壞數據恢複分析

 

近期接手一個怪異的數據恢復案例,基本環境是:HP-UX小型機連接HP EVA存儲,從EVA上劃分1TB的邏輯卷(LUN)給HP-UX小型機使用,LVM邏輯結構是一個VG中只包含1TB的物理硬盤(PV),在這個VG中劃分出13個LV。
故障現象:這個小機是生產環境下使用的,某天下午3點多鐘發現客戶端訪問不了,檢查服務器,發現oracle數據庫所在的文件系統全部mount不上,oracle數據庫因此全部停止。由於數據庫備份是半個月之前的,丟掉的十幾天的數據,如果不能及時找回來,接下來的補救工作將是十分繁重的,因爲這涉及到整個工廠的生產業務。
客戶首先請到HP原廠資深工程師從美國進行遠程分析,經過徹夜分析,發現存儲本身沒有問題,損壞的oravg是邏輯層的問題,從LVM深層次分析,發現LVM信息全部被破壞,唯一的辦法是重構LVM信息,而且重構的前提是有oravg信息備份。運氣還好,找到前一個月的VG備份信息oravg.conf.old文件,通過vgrestore命令,把VG新息還原到了出問題的PV上,最後結果,4個LV能mount上,如下:
/dev/oravg/lv102_64 Good
/dev/oravg/lvK12 Bad
/dev/oravg/lvK12_102_64 Good
/dev/oravg/lvmirrlogA Bad
/dev/oravg/lvmirrlogB Bad
/dev/oravg/lvoraarch` Bad
/dev/oravg/lvoriglogA Bad
/dev/oravg/lvoriglogB Bad
/dev/oravg/lvsapreorg Bad
/dev/oravg/lvsapdata1 Good
/dev/oravg/lvsapdata2 Good
/dev/oravg/lvsapdata3 Bad
/dev/oravg/lvsapdata4 Bad
其餘9個LV沒能正常mount,按照用戶的說法,在這一個月時間內,這個VG內的LV沒有進行過擴容或者收縮,那麼這個VG信息備份文件oravg.conf.old提供的信息是正常的,不正常的就是LV上的數據了。
因爲用戶需要恢復的重要數據是oracle數據庫,如果我能把oracle數據庫表空間文件提取出來,那數據恢復就能取得成功。我們把重點工作放在/dev/oravg/lvsapdata3和/dev/oravg/lvsapdata4這兩個LV上,按照oracle數據庫頁面特徵對整個1TB的邏輯捲進行掃描收集信息,把收集到的信息進行二次整理,找出丟失掉的oracle表空間文件。分析的結果是我們在整個1TB的LUN中找到兩套Oracle實例,一套實例名稱 是K13,一套實例名稱是K12,K13的實例保留的相對完整,K12受破壞比較嚴重。經過跟客戶覈實發現,K13數據庫實例是一個月之前他們做的一個測試系統,測試完成以後,就把數據遷移到生產系統K12實例上了,然後把K13實例全部刪除掉。
從收集到的oracle數據庫頁面分佈結果看,K12數據庫實例受損嚴重,要完整恢復幾乎不可能,就算要50%恢復也不理想,所以最後就宣佈數據恢復失敗。
造成數據嚴重破壞的原因我們一直在討論,造成破壞的現象是:數據遭受破壞地方,幾乎是被符合oracle數據頁面結構的數據寫入的,數據寫入的方式不是在文件系統環境中寫入,而是跳出文件系統層面直接以dd的方式或者以oracle裸設備方式寫入。就我個人角度出發,要麼是惡意的數據破壞操作,用某個oracle表空間文件dd到某些文件系統;要麼是oracle本身的bug,在申請數據空間的時候出現指針錯誤而寫入錯誤的地方。
一下附加oravg信息:
# vgdisplay -v /dev/oravg
--- Volume groups ---
VG Name /dev/oravg
VG Write Access read/write
VG Status available
Max LV 2047
Cur LV 13
Open LV 13
Cur Snapshot LV 0
Max PV 2048
Cur PV 1
Act PV 1
Max PE per PV 1023975
VGDA 2
PE Size (Mbytes) 1
Unshare unit size (Kbytes) 1024
Total PE 1023975
Alloc PE 765952
Current pre-allocated PE 0
Free PE 258023
Total PVG 0
Total Spare PVs 0
Total Spare PVs in use 0
VG Version 2.2
VG Max Size 1023975m
VG Max Extents 1023975
Cur Snapshot Capacity 0p
Max Snapshot Capacity 1023975m
---Logical volumes ---
LVName /dev/oravg/lvK12
LVStatus available/syncd
LVSize (Mbytes) 20480
Current LE 20480
Allocated PE 20480
UsedPV 1
LVName /dev/oravg/lvoraarch
LVStatus available/syncd
LVSize (Mbytes) 30720
Current LE 30720
Allocated PE 30720
UsedPV 1
LVName /dev/oravg/lvmirrlogA
LVStatus available/syncd
LVSize (Mbytes) 2048
Current LE 2048
Allocated PE 2048
UsedPV 1
LVName /dev/oravg/lvmirrlogB
LVStatus available/syncd
LVSize (Mbytes) 2048
Current LE 2048
Allocated PE 2048
UsedPV 1
LVName /dev/oravg/lvoriglogA
LVStatus available/syncd
LVSize (Mbytes) 2048
Current LE 2048
Allocated PE 2048
UsedPV 1
LVName /dev/oravg/lvoriglogB
LVStatus available/syncd
LVSize (Mbytes) 2048
Current LE 2048
Allocated PE 2048
UsedPV 1
LVName /dev/oravg/lvsapreorg
LVStatus available/syncd
LVSize (Mbytes) 10240
Current LE 10240
Allocated PE 10240
UsedPV 1
LVName /dev/oravg/lvsapdata3
LVStatus available/syncd
LVSize (Mbytes) 163840
Current LE 163840
Allocated PE 163840
UsedPV 1
LV Name /dev/oravg/lvsapdata4
LVStatus available/syncd
LVSize (Mbytes) 184320
Current LE 184320
Allocated PE 184320
UsedPV 1
LVName /dev/oravg/lvsapdata1
LVStatus available/syncd
LVSize (Mbytes) 163840
Current LE 163840
Allocated PE 163840
UsedPV 1
LVName /dev/oravg/lvsapdata2
LVStatus available/syncd
LVSize (Mbytes) 163840
Current LE 163840
Allocated PE 163840
UsedPV 1
LVName /dev/oravg/lvK12_102_64
LVStatus available/syncd
LVSize (Mbytes) 10240
Current LE 10240
Allocated PE 10240
UsedPV 1
LVName /dev/oravg/lv102_64
LVStatus available/syncd
LVSize (Mbytes) 10240
Current LE 10240
Allocated PE 10240
UsedPV 1
---Physical volumes ---
PVName /dev/dsk/c12t0d1
PVName /dev/dsk/c14t0d1Alternate Link
PVName /dev/dsk/c4t0d1 Alternate Link
PVName /dev/dsk/c6t0d1 Alternate Link
PVName /dev/dsk/c24t0d1 Alternate Link
PVName /dev/dsk/c26t0d1Alternate Link
PVName /dev/dsk/c20t0d1Alternate Link
PVName /dev/dsk/c22t0d1Alternate Link
PVStatus available
TotalPE 1023975
FreePE 258023
Current pre-allocated PE 0
Autoswitch On

Proactive Polling On
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章