服務器存儲數據恢複環境:
EVA存儲結構:1台EVA某型号控制器 3台EVA某型号擴展櫃 28塊FC硬盤。
服務器存儲故障:
EVA存儲結構中的兩塊磁盤掉線導緻存儲中的某些LUN丢失不可用,管理員聯系我們數據恢複中心進行數據恢複。
服務器存儲數據恢複過程:
1、北亞數據恢複中心收到故障存儲的磁盤後,由硬件工程師對所有磁盤做物理檢測,沒有發現物理故障。然後使用壞道檢測工具檢測磁盤壞道,沒有發現壞道。磁盤壞道檢測日志如下:
北亞數據恢複——HP EVA系列存儲數據恢複
2、備份數據。
數據恢複工程師使用工具将所有磁盤都鏡像成文件。備份完部分數據如下:
北亞數據恢複——HP EVA系列存儲數據恢複
3、分析故障原因。
經過前面的檢測,磁盤沒有發現物理故障或者壞道,數據恢複工程師判斷故障發生原因是某些磁盤讀寫不穩定。由于EVA控制器磁盤檢測的策略非常嚴格,一旦有磁盤出現性能不穩定的迹象,就很有可能被EVA控制器判定為壞盤并被踢出磁盤組。如果某個LUN的同一個條帶中掉線的盤達到一定的數量,這個LUN将不可用。如果EVA中所有的LUN都有盤掉線,那麼所有LUN都會受影響,所以2塊盤掉線導緻整個存儲的LUN都不可用的情況也有可能發生。本案例的實際情況是現存8個LUN,損壞7個LUN,丢失6個LUN,需要恢複所有LUN的數據。
4、分析LUN的結構。
HP-EVA的LUN都是以RAID條目的形式存儲數據的,EVA将每個磁盤的不同塊組成一個RAID條目。RAID條目的類型有多種。我們需要分析出組成LUN的RAID條目類型和每個RAID條目是由哪些盤的哪些塊組成。這些信息都存放在LUN_MAP中,每個LUN都有一份LUN_MAP,EVA将LUN_MAP分别存放在不同的磁盤中,并使用索引指定其位置。因此,隻要在每個磁盤中找出指向LUN_MAP的索引就可以找到現存LUN的信息了。
5、分析丢失的LUN。
雖然磁盤中記錄了指向LUN_MAP的索引,但是它隻記錄現存的LUN,丢失的LUN是不會記錄索引的。由于EVA中删除一個LUN隻會清除這個LUN的索引,而不會清除這個LUN的LUN_MAP。隻要掃描所有磁盤找到所有符合LUN_MAP的數據塊,然後排除掉現有的LUN_MAP,剩下的LUN_MAP也不一定全是删除的,也有一些是以前舊的,但此時無法在LUN_MAP中篩選,隻能通過程序将所有LUN_MAP的數據都恢複出來,人工的去核對哪些LUN是删除的。
6、分析掉線磁盤。
雖然經過檢測沒有發現磁盤有物理故障和壞道,但還是可能因為性能不穩定從EVA磁盤組中脫離。因為這些脫離的磁盤存放舊的數據,所以在生成數據的時候需要将這些磁盤都排除掉。那麼如何判斷那些掉線的磁盤呢?由于LUN的RAID結構大多都是RAID5,隻需要将一個LUN的RAID條目通過RAID5的校驗算法算出校驗值,再和原有的校驗值做比較就可以判斷這個條目中是否有掉線盤。将一個LUN的所有LUN_MAP都校驗一遍就可以知道這個LUN中哪些RAID條目中有掉線盤。這些RAID條目中都存在的那個盤就一定是掉線盤。排除掉線盤,然後根據LUN_MAP恢複所有LUN的數據即可。
7、編寫數據恢複程序。
上述的故障分析以及解決思路最終都需要編寫程序來實現。北亞數據恢複工程師編寫掃描LUN_MAP的程序掃描全部LUN_MAP,結合人工分析獲取最精确的LUN_MAP;編寫檢測RAID條目的程序檢測所有LUN中掉線的磁盤,結合人工分析排除掉線的磁盤;編寫LUN數據恢複程序,結合LUN_MAP恢複所有LUN數據。
8、恢複所有LUN數。
根據編寫的程序去實現不同的功能,然後人工核對每個LUN,确認是否和管理員描述的一緻。部分恢複出來的LUN的數據:
北亞數據恢複——HP EVA系列存儲數據恢複
數據驗證:
根據管理員描述,所有LUN的數據可以分成兩大部分:一部分是Vmware的虛拟機,一部分是HP-UX上的裸設備,裸設備裡存放的是Oracle的dbf數據庫。由于我們恢複的是LUN,無法看到裡面的文件,因此需要将這些LUN用人工核對的方式确定哪些LUN存放Vmware的數據,哪些LUN存放HP-UX的裸設備。然後将LUN挂載到不同的驗證環境中驗證恢複的數據是否完整。分别部署好Vmware虛拟機的驗證環境和Oracle數據庫的驗證環境并進行驗證,修複好Oracle數據庫(過程就不贅述了)并移交數據。
,