Netapp存儲數(shù)據(jù)恢復(fù)環(huán)境:
北京某公司一臺netAPP存儲,72塊SAS硬盤劃分了若干個(gè)lun。
Netapp存儲故障:
工作人員誤操作刪除了12個(gè)lun。
Netapp存儲數(shù)據(jù)恢復(fù)過程:
1、將故障存儲中所有磁盤編號后取出,以只讀方式做全盤鏡像后按照編號還原到原存儲中,后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進(jìn)行,避免對原始磁盤數(shù)據(jù)造成二次破壞。
2、基于鏡像文件分析底層數(shù)據(jù),找到盤頭位置的超級塊。北亞企安數(shù)據(jù)恢復(fù)工程師通過分析超級塊信息獲取磁盤組的起始塊信息、磁盤組名稱、邏輯組起始塊號、raid編號等信息。
分析超級塊:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
通過分析得知每個(gè)數(shù)據(jù)塊占8個(gè)扇區(qū),數(shù)據(jù)塊后附加64字節(jié)數(shù)據(jù)塊描述信息。根據(jù)這些信息判斷出作為校驗(yàn)盤的磁盤,在后續(xù)的數(shù)據(jù)恢復(fù)過程中需要踢出這些磁盤。
校驗(yàn)塊描述信息樣例:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
3、依據(jù)每塊磁盤8號扇區(qū)的磁盤信息以及磁盤末尾的RAID盤序表確定盤序。首先確定各個(gè)磁盤所屬aggr組,然后再判斷組內(nèi)盤序。數(shù)據(jù)指針跳轉(zhuǎn)時(shí)不考慮校驗(yàn)盤,只需要確定數(shù)據(jù)盤的盤序即可。
分析盤序表:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
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ù)用戶級別可分為兩類:系統(tǒng)文件節(jié)點(diǎn)(MBFP)和用戶文件節(jié)點(diǎn)(MBFI),數(shù)據(jù)恢復(fù)一般只需要MBFI節(jié)點(diǎn)組。
服務(wù)器節(jié)點(diǎn)樣例圖:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
頭部信息64字節(jié),此頭部為數(shù)據(jù)文件的節(jié)點(diǎn)文件塊頭部,大小為64字節(jié)。
根據(jù)更新序列值獲取到最新節(jié)點(diǎn)。解析節(jié)點(diǎn)中節(jié)點(diǎn)類型、邏輯塊號、文件數(shù)量、文件大小、所占塊數(shù)量和數(shù)據(jù)指針。
獲取節(jié)點(diǎn)在節(jié)點(diǎn)文件中的邏輯塊號,從0開始計(jì)數(shù)。
4、獲取目錄項(xiàng),根據(jù)其節(jié)點(diǎn)編號找到對應(yīng)節(jié)點(diǎn)。
獲取服務(wù)器內(nèi)對應(yīng)節(jié)點(diǎn)截圖:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
5、通過北亞企安自主開發(fā)的程序提取服務(wù)器數(shù)據(jù)。
a、掃描節(jié)點(diǎn)信息。
掃描服務(wù)器節(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)掃描完畢之后將所有掃描到的MBFP、MBFI和DOC數(shù)據(jù)塊分別寫入到三個(gè)文件內(nèi),用于后續(xù)處理。
b、將節(jié)點(diǎn)信息導(dǎo)入到數(shù)據(jù)庫。
此模塊主要負(fù)責(zé)將ScanNode掃描到的MBFI和MBFP、Dir存入數(shù)據(jù)庫以備后續(xù)使用。
MBFI導(dǎo)入數(shù)據(jù)庫整體流程:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
函數(shù)執(zhí)行完畢后查看數(shù)據(jù)庫,得到如下信息:
節(jié)點(diǎn)導(dǎo)入信息:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
Netapp在更改inode節(jié)點(diǎn)時(shí)不會直接覆蓋而是重新分配inode進(jìn)行寫入。單個(gè)文件的節(jié)點(diǎn)node_uid是不會改變的,mbfi_usn會隨著節(jié)點(diǎn)的變化而增大(正常情況下提取某個(gè)文件時(shí)使用usn最大的節(jié)點(diǎn))。一般情況下存儲劃分出的單個(gè)節(jié)點(diǎn)會作為LUN映射到服務(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ù)
c、提取文件。
在獲取到要提取的文件的Node之后,開始提取塊設(shè)備文件。
提取塊設(shè)備文件:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
初始化完畢后,開始提取文件的各級MAP,在本次提取過程中文件大小均大于1T,MAP層級為4,所以需要提取4次。第一級MAP默認(rèn)只占用1個(gè)塊,所以在程序內(nèi)直接提取,后三級MAP在GetAllMap函數(shù)內(nèi)進(jìn)行提取。通過塊號計(jì)算數(shù)據(jù)塊位置時(shí),由于NetApp使用JBOD組織LVM,直接用塊號除以每塊磁盤上的塊數(shù)可得到當(dāng)前塊所在的磁盤序號(計(jì)算機(jī)整數(shù)除法,丟棄小數(shù)部分);再使用塊號取余塊數(shù),得到數(shù)據(jù)塊在此磁盤上的物理塊號,物理塊號乘以塊大小,得到數(shù)據(jù)塊偏移位置。
6、解析塊設(shè)備文件系統(tǒng)。
故障存儲塊設(shè)備中5T大小的lun使用的是aix小機(jī)的jfs2文件系統(tǒng)。因此要解析jfs2文件系統(tǒng),提取里面的數(shù)據(jù)庫備份文件。
a、找到記錄lvm描述信息的扇區(qū),解析pv大小和pv序號;找到vg描述區(qū),解析lv數(shù)和pv數(shù);找到pv描述區(qū),解析pp序號和pp數(shù)。
解析文件系統(tǒng)塊信息:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
LV類型及LV掛載信息區(qū)域:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
b、解析8個(gè)1T大小lun組成的oralce ASM文件系統(tǒng),提取其中的數(shù)據(jù)庫文件。
添加8個(gè)lT的lun:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
解析asm文件系統(tǒng),提取出數(shù)據(jù)庫文件:
北亞企安數(shù)據(jù)恢復(fù)——Netapp數(shù)據(jù)恢復(fù)
7、對提出的數(shù)據(jù)進(jìn)行檢測,沒有發(fā)現(xiàn)異常。交由用戶方進(jìn)行驗(yàn)證,經(jīng)過用戶方相關(guān)工作人員的共同驗(yàn)證,確認(rèn)恢復(fù)出來的數(shù)據(jù)完整有效。本次數(shù)據(jù)恢復(fù)工作完成。
審核編輯 黃宇
-
存儲
+關(guān)注
關(guān)注
13文章
4296瀏覽量
85798 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9123瀏覽量
85324 -
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
568瀏覽量
17432
發(fā)布評論請先 登錄
相關(guān)推薦
評論