NetApp數(shù)據(jù)恢復(fù)環(huán)境:
NetApp某型號(hào)存儲(chǔ)陣列,包含2個(gè)機(jī)頭+1個(gè)擴(kuò)展柜,72塊SAS接口的520字節(jié)硬盤組建了3組raid。
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
NetApp故障:
工作人員誤操作刪除11個(gè)lun。
NetApp數(shù)據(jù)恢復(fù)過程:
1、將NetApp存儲(chǔ)陣列環(huán)境中所有硬盤做好標(biāo)記后取出。硬件工程師對(duì)所有硬盤進(jìn)行檢測(cè)后沒有發(fā)現(xiàn)有硬盤存在硬件故障,都可以正常讀取。將所有硬盤以只讀方式進(jìn)行扇區(qū)級(jí)全盤鏡像,鏡像完成后將所有磁盤按照原樣還原到原存儲(chǔ)中,后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進(jìn)行,避免對(duì)原始磁盤數(shù)據(jù)造成二次破壞。
2、北亞企安數(shù)據(jù)恢復(fù)工程師團(tuán)隊(duì)對(duì)該NetApp存儲(chǔ)進(jìn)行分析后,制定了NetApp存儲(chǔ)數(shù)據(jù)恢復(fù)方案:
a、分析盤序和LVM的組成方式。
b、掃描硬盤內(nèi)的所有節(jié)點(diǎn),主要是用戶節(jié)點(diǎn)。
c、在節(jié)點(diǎn)掃描結(jié)果中找到文件大小符合需求的節(jié)點(diǎn),找到索引根。
d、根據(jù)索引根內(nèi)的第一級(jí)數(shù)據(jù)指針提取本文件的所有直接數(shù)據(jù)指針(參考節(jié)點(diǎn)中0x03位置的MAP深度:0x00時(shí)直接從節(jié)點(diǎn)內(nèi)提取數(shù)據(jù),0x01時(shí)需要提取一次MAP,0x02時(shí)需要提取兩次MAP......)。完成指針提取后開始提取文件數(shù)據(jù)。
3、在盤頭位置找到超級(jí)塊。從超級(jí)塊中獲取到磁盤組名字、磁盤組的邏輯起始?jí)K號(hào)、總塊數(shù)、磁盤組中raid的編號(hào)。
NetApp超級(jí)塊:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
4、每個(gè)數(shù)據(jù)塊占8個(gè)扇區(qū),數(shù)據(jù)塊后附加64字節(jié)數(shù)據(jù)塊描述信息。根據(jù)這些信息判斷出校驗(yàn)盤。提取數(shù)據(jù)時(shí)需要剔除校驗(yàn)盤。
0x10處為FFFF表示校驗(yàn)塊,校驗(yàn)塊描述信息樣例:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
5、根據(jù)每塊磁盤8號(hào)扇區(qū)的磁盤信息以及磁盤末尾的RAID盤序表確定盤序。確定各個(gè)磁盤所屬aggr組,然后再判斷組內(nèi)盤序。數(shù)據(jù)指針跳轉(zhuǎn)時(shí)不考慮校驗(yàn)盤,所以只需要獲取到數(shù)據(jù)盤的盤序即可。
NetApp盤序表:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
6、NetApp的節(jié)點(diǎn)分布在數(shù)量眾多的數(shù)據(jù)塊內(nèi),在數(shù)據(jù)塊內(nèi)又被統(tǒng)一組織為節(jié)點(diǎn)組。每個(gè)節(jié)點(diǎn)組的前64字節(jié)記錄系統(tǒng)數(shù)據(jù),使用192字節(jié)作為一項(xiàng)來記錄各個(gè)文件節(jié)點(diǎn)。文件節(jié)點(diǎn)根據(jù)用戶級(jí)別分為2類:“MBFP”系統(tǒng)文件節(jié)點(diǎn)、“MBFI”用戶文件節(jié)點(diǎn)。通常恢復(fù)數(shù)據(jù)只需要MBFI節(jié)點(diǎn)組即可。
NetApp節(jié)點(diǎn)樣例圖:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
7、獲取目錄項(xiàng),根據(jù)其節(jié)點(diǎn)編號(hào)找到對(duì)應(yīng)節(jié)點(diǎn)。
8、掃描節(jié)點(diǎn)信息。
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
節(jié)點(diǎn)掃描類:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
節(jié)點(diǎn)掃描程序完整流程:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
在循環(huán)掃描完畢之后會(huì)將所有掃描到的MBFP、MBFI和DOC數(shù)據(jù)塊分別寫入到三個(gè)文件內(nèi),用于后續(xù)處理。
9、將ScanNode掃描到的MBFI和MBFP、Dir存入數(shù)據(jù)庫(kù)以備后續(xù)使用。
MBFI導(dǎo)入數(shù)據(jù)庫(kù)整體流程:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
函數(shù)執(zhí)行完畢后可以查看數(shù)據(jù)庫(kù)得到如下信息:
節(jié)點(diǎn)導(dǎo)入信息:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
NetApp在更改inode節(jié)點(diǎn)時(shí)不會(huì)直接覆蓋而是重新分配inode進(jìn)行寫入。單個(gè)文件的節(jié)點(diǎn)node_uid唯一不變,mbfi_usn會(huì)隨著節(jié)點(diǎn)的變化而增大(正常情況下提取某個(gè)文件時(shí)使用usn最大的節(jié)點(diǎn))。一般情況下存儲(chǔ)劃分出的單個(gè)節(jié)點(diǎn)會(huì)作為L(zhǎng)UN映射到服務(wù)器使用。根據(jù)file_size可以確定這個(gè)文件的大小,按照文件大小分組后再選取usn最大值的節(jié)點(diǎn),跳轉(zhuǎn)到MBFI文件的offset值偏移位置,取出節(jié)點(diǎn)。
節(jié)點(diǎn)樣例:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
10、獲取到要提取的文件的Node之后,開始提取塊設(shè)備文件。
程序需要讀取配置文件:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
初始化完畢后,開始提取文件的各級(jí)MAP。本案例中文件大小均大于1T,MAP層級(jí)為4,所以需要提取4次。第一級(jí)MAP默認(rèn)只占用1個(gè)塊,所以在程序內(nèi)直接提取;后三級(jí)MAP在GetAllMap函數(shù)內(nèi)進(jìn)行提取。通過塊號(hào)計(jì)算數(shù)據(jù)塊位置時(shí),由于NetApp使用JBOD組織LVM,直接用塊號(hào)除以每塊磁盤上的塊數(shù)可得到當(dāng)前塊所在的磁盤序號(hào)(計(jì)算機(jī)整數(shù)除法,丟棄小數(shù)部分);再使用塊號(hào)取余塊數(shù),得到數(shù)據(jù)塊在此磁盤上的物理塊號(hào),物理塊號(hào)乘以塊大小,得到數(shù)據(jù)塊偏移位置。
11、本案例中的塊設(shè)備5T大小的lun使用的是aix小機(jī)的jfs2文件系統(tǒng)。可以通過解析jfs2文件系統(tǒng)來提取里面的數(shù)據(jù)庫(kù)備份文件。
7扇區(qū)記錄了lvm描述信息,獲取pv大小和pv序號(hào)。類似找到vg描述區(qū),獲取lv數(shù)和pv數(shù);找到pv描述區(qū),解析pp序號(hào)和pp數(shù)。
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
LV類型及LV掛載信息區(qū)域:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
12、解析8個(gè)1T大小的lun組成的oralce ASM文件系統(tǒng),提取其中的數(shù)據(jù)庫(kù)文件。
添加8個(gè)lT大小的lun:
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
解析asm文件系統(tǒng),提取出數(shù)據(jù)庫(kù)文件。
北亞企安數(shù)據(jù)恢復(fù)—NetApp數(shù)據(jù)恢復(fù)
13、搭建小機(jī)環(huán)境,安裝oracle數(shù)據(jù)庫(kù),檢測(cè)數(shù)據(jù)庫(kù)文件和備份文件。
14、檢測(cè)數(shù)據(jù)庫(kù)文件。使用提取出的數(shù)據(jù)庫(kù)文件啟動(dòng)數(shù)據(jù)庫(kù),啟動(dòng)失敗。經(jīng)檢測(cè)該數(shù)據(jù)庫(kù)文件存在壞塊,無法使用。
15、因?yàn)橛脩舴皆O(shè)定的數(shù)據(jù)庫(kù)備份機(jī)制,所以每個(gè)數(shù)據(jù)庫(kù)存在多個(gè)備份。找到最新的數(shù)據(jù)庫(kù)備份文件來還原數(shù)據(jù)庫(kù)。經(jīng)過嘗試篩,選出最新的可用的數(shù)據(jù)庫(kù)備份文件來還原數(shù)據(jù)庫(kù)環(huán)境,然后由用戶方驗(yàn)證。
數(shù)據(jù)驗(yàn)證及數(shù)據(jù)移交:
經(jīng)過用戶方多次反復(fù)的驗(yàn)證,發(fā)現(xiàn)數(shù)據(jù)庫(kù)中少量數(shù)據(jù)缺失,但是在用戶方接受范圍之內(nèi)。用戶方認(rèn)可數(shù)據(jù)恢復(fù)結(jié)果。
審核編輯 黃宇
-
服務(wù)器
+關(guān)注
關(guān)注
13文章
9685瀏覽量
87277 -
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
635瀏覽量
18011 -
NetApp
+關(guān)注
關(guān)注
0文章
76瀏覽量
15007
發(fā)布評(píng)論請(qǐng)先 登錄
分布式存儲(chǔ)數(shù)據(jù)恢復(fù)—虛擬機(jī)上hbase和hive數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)——MySQL數(shù)據(jù)庫(kù)誤刪除表記錄的數(shù)據(jù)恢復(fù)案例

Netapp數(shù)據(jù)恢復(fù)—Netapp存儲(chǔ)誤刪除lun如何恢復(fù)數(shù)據(jù)?

服務(wù)器數(shù)據(jù)恢復(fù)—LINUX系統(tǒng)刪除/格式化的數(shù)據(jù)恢復(fù)可行性分析

【NetApp數(shù)據(jù)恢復(fù)】NetApp存儲(chǔ)數(shù)據(jù)恢復(fù)案例#服務(wù)器數(shù)據(jù)恢復(fù) #數(shù)據(jù)恢復(fù) #netapp數(shù)據(jù)恢復(fù)
使用lsof實(shí)現(xiàn)對(duì)linux文件的誤刪除恢復(fù)練習(xí)

服務(wù)器數(shù)據(jù)恢復(fù)—EVA存儲(chǔ)誤刪除VDISK的數(shù)據(jù)恢復(fù)案例

服務(wù)器數(shù)據(jù)恢復(fù)—EXT3文件系統(tǒng)下誤刪除數(shù)據(jù)的恢復(fù)案例

NetApp數(shù)據(jù)恢復(fù)—NetApp存儲(chǔ)WAFL文件系統(tǒng)下誤刪除的數(shù)據(jù)恢復(fù)案例
Oracle數(shù)據(jù)恢復(fù)—Oracle數(shù)據(jù)庫(kù)delete刪除的數(shù)據(jù)恢復(fù)方法
NetApp數(shù)據(jù)恢復(fù)—NetApp存儲(chǔ)誤刪除的數(shù)據(jù)恢復(fù)案例

虛擬機(jī)數(shù)據(jù)恢復(fù)—KVM虛擬機(jī)被誤刪除的數(shù)據(jù)恢復(fù)案例

Oracle數(shù)據(jù)恢復(fù)—Oracle刪除數(shù)據(jù)不用怕!這些數(shù)據(jù)恢復(fù)方法了解一下
服務(wù)器數(shù)據(jù)恢復(fù)—誤刪除KVM虛擬機(jī)的數(shù)據(jù)恢復(fù)案例

評(píng)論