EVA4400存储虚拟机+数据库数据恢复成功案例

  

一,故障描述

  

整个EVA存储结构是由一台EVA4400控制器,三台EVA4400扩展柜和28块FC 300克硬盘构成的。由于两块磁盘掉线导致存储某些LUN不可用,某些LUN丢失。由于EVA4400是因为某些磁盘掉线,从而导致整个存储不可用。因此接收到磁盘以后北亚工程师先对所有磁盘做物理检测,检测完后发现没有物理故障。接着使用坏道检测工具检测磁盘坏道,发现也没有坏道。磁盘坏道检测日志如下:
图一:
 EVA4400存储虚拟机+数据库数据恢复成功案例

  

二、备份数据

  

考虑到数据的安全性以及可还原性,在做数据恢复之前需要对所有源数据做备份,以防万一操作不当导致数据无法再次恢复。使用winhex将所有磁盘都镜像成文件,源磁盘的内容数量多,在做数据备份的时候要花费很长时间。备份完部分数据如下:
图二:
 EVA4400存储虚拟机+数据库数据恢复成功案例

  

三,故障分析及恢复过程

  

<强> 1,分析故障原因
由于前两个步骤并没有检测到磁盘有物理故障或者是坏道,由此推断可能是由于某些磁盘读写不稳定导致故障发生。因为伊娃控制器检查磁盘的策略很严格,一旦某些磁盘性能不稳定,伊娃控制器就认为是坏盘,就将认为是坏盘的磁盘踢出磁盘组。而一旦某个LUN的同一个条带中掉线的盘到达极限,那么这个LUN将不可用。即如果EVA中所有的LUN都包含这些掉线的盘,所有LUN都会受影响。掉线两块盘导致整个存储的LUN都不可用的情况就很正常了。而目前的情况是现存8个LUN,损坏7个LUN,丢失6个LUN。需要恢复所有LUN的数据。
<强> 2,分析LUN的结构
HP-EVA的LUN都是以突袭条目的形式存储数据的,伊娃将每个磁盘的不同块组成一个RAID条目,RAID条目的类型可以有很多种。我们需要分析出组成LUN的RAID条目类型,以及这个RAID条目是由哪些盘的哪些块组成。这些信息都存放在LUN_MAP中,每个LUN都有一份LUN_MAP.EVA将LUN_MAP分别存放在不同的磁盘中,使用一个索引来指定其位置,因此去每个磁盘中找这个指向LUN_MAP的索引就可以找到现存LUN的信息了。
<强> 3分析丢失的LUN
虽然磁盘中记录了指向LUN_MAP的索引,但是它只记录现存的LUN,丢失的LUN是不会记录索引的。由于EVA中删除一个LUN只会清除这个LUN的索引,而不会清除这个LUN的LUN_MAP。这时需要扫描所有磁盘找到所有符合LUN_MAP的数据块,然后排除掉现有的LUN_MAP,剩下的LUN_MAP也不一定全是删除的,也有一些是以前旧的,但此时是无法在LUN_MAP中筛选了,只能通过程序将所有LUN_MAP的数据都恢复出来,人工的去核对哪些LUN是删除的。
<强> 4,分析掉线磁盘
在前面的故障分析中说了,虽然磁盘没有明显的物理故障,也没有磁盘坏道。但还是会因为性能的原因从伊娃磁盘组中脱离。而这些脱离的磁盘中都存放的是一些旧的数据,因此在生成数据的时候需要将这些磁盘都排除掉。但是如何判断哪些磁盘是掉线的呢?由于LUN的RAID结构大多都是RAID5,只需要将一个LUN的RAID条目通过RAID5的校验算法算出校验值,再和原有的校验值做比较就可以判断这个条目中是否有掉线盘。而将一个LUN的所有LUN_MAP都校验一遍就可以知道这个LUN中哪些突袭条目中有掉线盘。而这些突袭条目中都存在的那个盘就一定是掉线盘。排除掉线盘,然后根据LUN_MAP恢复所有LUN的数据即可。
<强> 5,编写数据恢复程序
上述的故障分析以及解决思路最终都需要使用编程来实现。编写扫描LUN_MAP的程序Scan_Map.exe,扫描全部LUN_MAP,结合人工分析得出最精确的LUN_MAP。编写检测突袭条目的程序Chk_Raid.exe,检测所有LUN中掉线的磁盘,结合人工分析排除掉线的磁盘。编写LUN数据恢复程序Lun_Recovery.exe,结合LUN_MAP恢复所有LUN数据。
<强> 6,恢复所有LUN数据
根据编写好的程序去实现不同的功能,最后使用Lun_Recovery。exe结合LUN_MAP恢复所有LUN的数据,然后人工核对每个LUN,确认是否和甲方工程师描述的一致。部分LUN的数据恢复如下:
图三:
 EVA4400存储虚拟机+数据库数据恢复成功案例

  

四,数据验证

  

根据甲方工程师描述所有LUN的数据可以分成两大部份,一部份是Vmware的虚拟机,一部分是HP - ux上的裸设备,裸设备里存放的是Oracle的dbf数据库。由于我们恢复的是LUN,无法看到里面的文件,因此需要将这些LUN同过人工的核对哪些LUN是存放Vmware的数据,哪些是HP - ux的裸设备,然后将LUN挂载到不同的验证环境中验证恢复的数据是否完整。

EVA4400存储虚拟机+数据库数据恢复成功案例