1. 程式人生 > >Unix下zfs文件系統重組RAID-5恢復方法

Unix下zfs文件系統重組RAID-5恢復方法

數據恢復

存儲做的RAID-5, SCSI硬盤,操作系統是FreeBSD,文件系統是zfs。

本案例共有12塊硬盤,11塊硬盤裏有數據,1塊硬盤是熱備盤。其中第6塊數據硬盤出現故障,重組時需要將其剔除。

物理盤:

物理盤是指創建RAID所用的每塊獨立的物理硬盤,組建RAID後,它們叫做RAID的成員盤。

去RAID化:

出現故障後,把物理盤從服務器的槽位上取下來進行檢測和分析。離開了服務器的槽位,也就離開了RAID控制器,這些硬盤就稱為被“去RAID化”了。

1 分析步驟

主要內容:

·初步判斷RAID-5起始扇區

·塊大小(條帶大小)分析

·RAID-5成員盤盤序

·校驗方向

·數據走向

1.1 初步判斷RAID-5起始扇區

RAID起始扇區是指RAID內的數據在每塊物理盤(創建RAID所用的每塊獨立的物理硬盤)上的起始位置。起始扇區只存在於一塊物理盤,大多數情況是0扇區。找到起始扇區是第一步。本實例是用12塊硬盤組成的RAID-5,第6塊硬盤出現故障。恢復實例中,我們用WinHex將11塊有數據的硬盤去RAID化。如圖1所示。

技術分享

圖1

用WinHex的同步功能將11塊盤定位在0扇區,可以看到11塊盤中只有3塊盤的0扇區有“55 AA”標誌,分別是1,2,6號硬盤,如圖2所示。有這個標誌說明是MBR磁盤結構。

技術分享

圖2

接下來分析哪個硬盤是起始扇區。我們先來看第6塊硬盤。第6塊硬盤的結尾顯示這是一個GPT頭備份並且只有128MB大小。如圖3所示。

技術分享

圖3

剩下的1號磁盤和2號磁盤中0扇區有起始扇區或校驗。這是初步判斷起始扇區。

1.2 塊大小(條帶大小)分析

條帶也稱塊,它是RAID處理數據的基本單元,不同的RAID條帶大小有所不同。分析條帶大小的方法有很多,一個校驗區的大小是一個條帶的大小,根據這一點,我們針對這個RAID-5實例做分析。此實例使用的是zfs文件系統,用WinHex同步顯示11塊物理盤的某個扇區,比如53654656扇區,發現此扇區只有1號盤跟其他盤顯示的不一樣,這是位於1號盤的校驗區。順著1號盤53654656扇區上下尋找,找到連續的128個扇區。這128個扇區就是這個RAID-5的條帶大小。由此條帶大小定位結束。

1.3 RAID-5成員盤盤序

以上內容說的1號盤指的不是RAID的第一個盤,也就是說物理盤的順序並不一定是RAID的順序,需要人工校驗。用WinHex同步定位11塊硬盤的53654656扇區。發現1號盤與其他盤不同,這個是1號盤的校驗區。接著分析1號盤的下一個條帶,即53654656+128=53654784扇區,得出2號盤跟其他盤不同,所以2號盤從53654784扇區開始的條帶是校驗區。以此方式繼續下去,接著是3號盤的校驗區,4號盤的校驗區……得出的校驗區如圖4所示,“P”字母即表示校驗區。我們按照校驗區的位置,即可得到盤序,而這個實例的盤序正好是從1號盤開始依次遞增的。盤序我們已經得出,又因分析步驟1得出1號盤和2號盤的0扇區為起始扇區或為校驗區。對於左結構來說,0扇區是起始扇區的物理盤一定是RAID-5的1號盤,對於右結構來說,0扇區是起始扇區的物理盤一定是RAID-5的2號盤。

技術分享

圖4

1.4 校驗方向

RAID-5的基本結構有左同步、左異步、右同步、右異步。左和右是對校驗方向來說的,區別如表1和表2所示。我們做的RAID-5實例很明顯是右走向的。

技術分享

表1

我們由上文校驗區的走向得出整個RAID-5的校驗方向,即右方向,如圖4所示。左同步、左異步結構中的校驗塊都是從最後一塊物理盤開始,右同步、右異步結構中的校驗快都是從第一塊物理盤開始。

判斷校驗方向的方法有兩種,一種是先分析起始扇區,再分析條帶大小,然後是盤序,盤序分析後校驗方向很容易就看出來了。另一種,如果盤序沒有確定下來,只確定了起始扇區和條帶大小,可以采用反推法。使用反推法分析,在盤序還沒有確定下來的情況下,有這個校驗區可以算出某個盤中第一個校驗區是第幾個條帶。具體方法如下找到某個校驗區,比如3號盤的53654912扇區,用這個扇區對條帶大小與盤數的乘積取余。即53654912MOD(128*12)=256。計算的結果等於256,表示256號扇區是校驗。而位於此扇區的3號盤處於第3個條帶,並且是第3個條帶的開始扇區,包括256號扇區在內的以後的128個扇區是3號盤的第一個校驗區。接著判斷1號盤下一個條帶,1號盤下一個條帶顯示3號盤是校驗區。接著判斷3號盤下一個條帶,3號盤下一個條帶顯示3號盤是校驗區。由此校驗方向也能得出來。

1.5 數據走向

同步異步說的是數據的走向。異步結構中,各條帶組內的數據塊均由低號盤向高號盤依次寫入。同步結構中,每個條帶組內第一個數據塊寫在校驗塊所在物理盤的下一個物理盤,若後面還有物理盤,則順序往後寫,若校驗塊所在物理盤後沒有物理盤,則從校驗塊所在物理盤前面的物理盤開始從低號盤向高號盤順序寫入。

技術分享

表2


以下是RAID-5實例分析過程(已確定此RAID-5是右結構)。

·從“數據塊A”入手。如圖5所示。

技術分享

圖5


首先查看“數據塊A”末尾扇區的數據,然後再查看“數據塊B”和“數據塊C”開始扇區的數據。如果“數據塊A” 末尾扇區的數據能夠與“數據塊B” 開始扇區的數據銜接,則該RAID-5屬於異步結構。如果“數據塊A” 末尾扇區的數據能夠與“數據塊C” 開始扇區的數據銜接,則該RAID-5屬於同步結構。

·從“數據塊A”入手。如圖6所示。

技術分享

圖6

首先查看“數據塊A”末尾扇區的數據,然後再查看“數據塊B”和“數據塊C”開始扇區的數據。如果“數據塊A” 末尾扇區的數據能夠與“數據塊B” 開始扇區的數據銜接,則該RAID-5屬於異步結構。如果“數據塊A” 末尾扇區的數據能夠與“數據塊C” 開始扇區的數據銜接,則該RAID-5屬於同步結構。

·從“數據塊A”入手。如圖7所示。

技術分享

圖7

首先查看“數據塊A”末尾扇區的數據,然後再查看“數據塊B”和“數據塊C”開始扇區的數據。如果“數據塊A” 末尾扇區的數據能夠與“數據塊B” 開始扇區的數據銜接,則該RAID-5屬於同步結構。如果“數據塊A” 末尾扇區的數據能夠與“數據塊C” 開始扇區的數據銜接,則該RAID-5屬於異步結構。

·從“數據塊A”入手。如圖8所示。

技術分享

圖8

首先查看“數據塊A”末尾扇區的數據,然後再查看“數據塊B”和“數據塊C”開始扇區的數據。如果“數據塊A” 末尾扇區的數據能夠與“數據塊B” 開始扇區的數據銜接,則該RAID-5屬於異步結構。如果“數據塊A” 末尾扇區的數據能夠與“數據塊C” 開始扇區的數據銜接,則該RAID-5屬於同步結構。

2 重組RAID-5

上面內容我們已經解析出RAID-5的一些重要信息,根據這些信息,我們就可以重組RAID-5了。下面我們用UFS Explorer工具打開並添加這11塊硬盤。如圖9所示。

技術分享

圖9

將1.dsk添加到了左側Connected storages裏,如圖10所示。

技術分享

圖10


把RAID-5的10塊盤都添加進去。點擊Build RAID選項,依照RAID-5的盤序把10塊盤都添加進去,開始組建RAID-5,如圖11所示。

技術分享

圖11

第6塊盤因為出現故障,所有要剔除,並在其位置添加時補一個空缺,並繼續順序添加完其它硬盤。如圖12所示,點擊標紅框位置處的按鈕,添加空缺硬盤。

技術分享

圖12

接著選擇校驗方向和數據走向,本實例條帶大小為28個扇區,即65KB,右異步結構。因此設置如圖13所示。

技術分享

圖13

接著點擊Build按鈕,出現如圖14所示。點擊find查找,選擇zfs文件系統。

技術分享

圖14

出現了如圖15所示的正在組建的RAID-5。

技術分享

圖15


本文出自 “SUN” 博客,請務必保留此出處http://sun510.blog.51cto.com/9640486/1945319

Unix下zfs文件系統重組RAID-5恢復方法