服务器存储数据恢复环境:

EVA存储结构:1台EVA某型号控制器+3台EVA某型号扩展柜+28块FC硬盘。


服务器存储故障:

EVA存储结构中的两块磁盘掉线导致存储中的某些LUN丢失不可用,管理员联系我们数据恢复中心进行数据恢复。


服务器存储数据恢复过程:

1、北亚数据恢复中心收到故障存储的磁盘后,由硬件工程师对所有磁盘做物理检测,没有发现物理故障。然后使用坏道检测工具检测磁盘坏道,没有发现坏道。磁盘坏道检测日志如下:

【服务器数据恢复】HP EVA系列存储硬盘离线导致LUN丢失不可用的数据恢复案例_数据恢复


2、备份数据。

数据恢复工程师使用工具将所有磁盘都镜像成文件。备份完部分数据如下:

【服务器数据恢复】HP EVA系列存储硬盘离线导致LUN丢失不可用的数据恢复案例_存储数据恢复_02


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丢失不可用的数据恢复案例_数据恢复_03


数据验证:

根据管理员描述,所有LUN的数据可以分成两大部分:一部分是Vmware的虚拟机,一部分是HP-UX上的裸设备,裸设备里存放的是Oracle的dbf数据库。由于我们恢复的是LUN,无法看到里面的文件,因此需要将这些LUN用人工核对的方式确定哪些LUN存放Vmware的数据,哪些LUN存放HP-UX的裸设备。然后将LUN挂载到不同的验证环境中验证恢复的数据是否完整。分别部署好Vmware虚拟机的验证环境和Oracle数据库的验证环境并进行验证,修复好Oracle数据库(过程就不赘述了)并移交数据。