【儲存資料恢復案例】Netapp誤操作刪除lun的資料恢復

北亞資料恢復發表於2021-12-06

環境:

儲存NETAPP

型號FAS3220

硬碟600G SAS 520位元組硬碟 72塊

共2個機頭,一個擴充套件櫃,共3組raid


故障:

誤操作刪除10個1T lun和1個5T lun


資料恢復流程:

為防止資料恢復過程中由於誤操作對原始磁碟造成二次破壞,首先要為每塊磁碟做完全映象。此後所有恢復操作都在映象盤上進行, 杜絕對原始磁碟資料造成破壞。


1、經過北亞資料恢復工程師討論後,最終出具資料恢復方案

第一步,分析盤序和LVM的組成方式;

第二步,掃描硬碟內的所有節點(一般只掃描“MBFI”,即使用者節點)

第三步,在節點掃描結果中找到檔案大小符合需求的節點並提取此節點uid相同,事務號最大的作為索引根;

第四步,根據索引根內的第一級資料指標提取本檔案的所有直接資料指標(需要參考節點中0x03位置的MAP深度,為0x00時直接從節點內提取資料,0x01時需要提取一次MAP,0x02時需要提取兩次MAP......)。在指標提取完畢後開始提取檔案資料。



2、分析超級塊

在盤頭位置找到超級塊

從超級塊中得到磁碟組名字,磁碟組的邏輯起始塊號,總塊數,磁碟組中raid的編號


netapp超級塊


3、去除校驗盤


每個資料塊佔8個扇區,資料塊後附加64位元組資料塊描述資訊。根據這些資訊可以判斷出哪些磁碟是校驗盤(提取資料時校驗盤需剔除)


0x10:6位元組為aggr_data塊號

如果0x10處為FFFF表示校驗塊

校驗塊描述資訊樣例


4、aggr盤序分析


盤序分析時主要依據每塊磁碟8號扇區的磁碟資訊以及磁碟末尾的RAID盤序表確定盤序。首先要確定各個磁碟所屬aggr組,然後再判斷組內盤序。資料指標跳轉時不考慮校驗盤,所以只取得資料盤的盤序即可。


aggr_raid(磁碟靠近尾部) 根據10H處的VCN塊號判斷磁碟組內各盤的順序

netapp盤序表


5、節點及節點頭部資訊


Netapp的節點分佈在數量眾多的資料塊內,在資料塊內又被統一組織為節點組。每個節點組的前64位元組記錄一些系統資料,之後用192位元組為一項記錄各個檔案節點。根據使用者級別可分為兩類:“MBFP”系統檔案節點和“MBFI”使用者檔案節點,在資料恢復時一般只取MBFI節點組即可。

netapp節點樣例圖

頭部資訊64位元組

解析如下:(此頭部為資料檔案的節點檔案塊頭部,大小為64位元組)

標誌,常量(“MBFP”為元檔案的節點標誌,“MBFI”為使用者檔案的節點標誌)

根據更新序列值獲取到最新節點

解析節點中節點型別,邏輯塊號,檔案數量,檔案大小,所佔塊數量,及資料指標

獲取節點在節點檔案中的邏輯塊號,從0開始計數

6、獲取目錄項,並根據其節點編號,找到對應節點

       


編寫資料提取程式


資料提取程式按照功能分為3步,分別為節點掃描、資訊錄入和資料提取。


1、掃描節點資訊


節點掃描類

節點掃描程式完整流程


在迴圈掃描完畢之後會將所有掃描到的MBFP、MBFI和DOC資料塊分別寫入到三個檔案內,用於後續處理。


2、將節點資訊匯入到資料庫


此模組主要負責將ScanNode掃描得到的MBFI和MBFP、Dir存入資料庫以備後續使用。

以下是流程:

MBFI匯入資料庫整體流程



函式執行完畢後可以檢視資料庫得到如下資訊:


節點匯入資訊


Netapp在更改inode節點時不會直接覆蓋而是重新分配inode進行寫入。單個檔案的節點node_uid唯一不變,mbfi_usn會隨著節點的變化而增大(正常情況下提取某個檔案時使用usn最大的節點)。一般情況下儲存劃分出的單個節點會作為LUN對映到伺服器使用,根據file_size可以確定這個檔案的大小,按照檔案大小分組後再選取usn最大值的節點,跳轉到MBFI檔案的offset值偏移位置,取出節點。

節點樣例

3、提取檔案


在獲取到要提取的檔案的Node之後,開始提取塊裝置檔案。

程式需要讀取配置檔案:

初始化完畢後,開始提取檔案的各級MAP,在本次提取過程中檔案大小均大於1T,MAP層級為4,所以需要提取4次。第一級MAP預設只佔用1個塊,所以在程式內直接提取,後三級MAP在GetAllMap函式內進行提取。透過塊號計算資料塊位置時,由於NetApp使用JBOD組織LVM,直接用塊號除以每塊磁碟上的塊數可得到當前塊所在的磁碟序號(計算機整數除法,丟棄小數邠);再使用塊號取餘塊數,得到資料塊在此磁碟上的物理塊號,物理塊號乘以塊大小,得到資料塊偏移位置。




資料庫檢測

搭建小機環境,安裝oracle資料庫,檢測資料庫檔案和備份檔案。

1、檢測資料庫檔案

使用提取出的資料庫檔案啟動資料庫,啟動失敗

經檢測該資料庫檔案存在壞塊,無法使用

2、檢測資料庫備份檔案

由於客戶設定的資料庫備份機制,每個資料庫都存在多個備份。

因此先篩選出最新的資料庫備份檔案,使用篩選出的備份檔案還原資料庫,經過一一嘗試,篩選出最新的可用的資料庫備份,還原資料庫環境,由客戶進行驗證。


驗證及資料移交

對恢復完成的資料庫進行驗證,資料庫中有少量的資料缺失,缺失量在可接受的範圍內。

經過3天左右的驗證,對資料庫恢復確認無誤,此次資料恢復工作圓滿成功。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2846004/,如需轉載,請註明出處,否則將追究法律責任。

相關文章