EVA系列
存储是一款以虚拟化存储为实现目的的HP中高端存储设备,平时数据会不断的迁移,加上任务通常较为繁重,所以磁盘的负载相对是较重的,也是很容易出现故障的。EVA是依靠大量磁盘的冗余空间,以及故障后rss冗余磁盘动态迁移来实现整个存储的数据保护,但随着越来越多的磁盘掉线,这种保护会接近临界,直至崩溃。下面以EVA存储故障为例,讲解EVA 4400存储数据恢复。
一、故障描述
整个EVA存储结构是由一台EVA4400控制器、EVA扩展柜及若干FC磁盘组成。由于磁盘故障导致存储中LUN不可用,致使上层应用无法正常使用。
二、检测磁盘
由于EVA 4400是因为某些磁盘故障导致整个存储不可用,因此接收到磁盘以后先对所有磁盘做物理检测,检测完后发现磁盘并没有物理故障。接着使用坏道检测工具检测磁盘坏道,也并没有发现大量的坏道。
三、备份数据
考虑到数据的安全性以及可还原性,在做数据恢复之前需要对所有源数据做备份,以确保源数据的安全。使用Winhex将所有源磁盘都备份到指定的目标空间中。
四、故障分析
1、分析故障原因
由于前两个步骤并没有检测到磁盘有物理故障或者是坏道,由此推断可能是由于某些磁盘读写不稳定导致故障发生。因为EVA控制器检查磁盘的策略很严格,一旦某些磁盘性能不稳定,EVA控制器就认为是坏盘,就将认为是坏盘的磁盘踢出磁盘组。而一旦某个LUN的同一个条带中掉线的盘到达极限,那么这个LUN将变的不可用。也就是如果EVA中所有的LUN都包含这些掉线的盘,那么这些LUN都会受影响。所以部分磁盘故障都会导致整个存储无法正常使用。
2、分析LUN的结构
HP-EVA的LUN都是以RAID条目的形式存储数据的,EVA将每个磁盘的不同块组成一个RAID条目,RAID条目的类型可以有很多种。我们需要分析出组成LUN的RAID条目类型,以及这个RAID条目是由哪些盘的哪些块组成。这些信息都存放在LUN_MAP中,每个LUN都有一份LUN_MAP。EVA将LUN_MAP分别存放在不同的磁盘中,使用一个索引来指定其位置。因此去每个磁盘中找这个指向LUN_MAP的索引就可以找到现存LUN的信息了。
3、分析掉线磁盘
在前面的故障分析中说了,虽然磁盘没有明显的物理故障,也没有磁盘坏道。但还是会因为性能的原因从EVA磁盘组中脱离。而这些脱离的磁盘中都存放的是一些旧的数据,因此在生成数据的时候需要将这些磁盘都排除掉。但是如何判断哪些磁盘是掉线的呢?由于LUN的RAID结构大多都是RAID5,只需要将一个LUN的RAID条目通过RAID5的校验算法算出校验值,再和原有的校验值做比较就可以判断这个条目中是否有掉线盘。而将一个LUN的所有LUN_MAP都校验一遍就可以知道这个LUN中哪些RAID条目中有掉线盘。而这些RAID条目中都存在的那个盘就一定是掉线盘。排除掉线盘,然后根据LUN_MAP恢复所有LUN的数据即可。
五、恢复数据
1、编写数据恢复程序
上述的故障分析以及解决思路最终都需要使用编程来实现。编写扫描LUN_MAP的程序Scan_Map.exe,扫描全部LUN_MAP,结合人工分析得出最精确的LUN_MAP。编写检测RAID条目的程序Chk_Raid.exe,检测所有LUN中掉线的磁盘,结合人工分析排除掉线的磁盘。编写LUN数据恢复程序Lun_Recovery.exe/frombyte,结合LUN_MAP恢复所有LUN数据。
2、恢复所有LUN数据
根据编写好的程序去实现不同的功能,最后使用Lun_Recovery.exe结合LUN_MAP恢复所有LUN的数据。然后人工核对每个LUN,确认是否和甲方工程师描述的一致。部分LUN的数据恢复如下:
图一:
3、恢复ORACLE ASM数据
(1) ASM磁盘组修复解析
对EVA存储层恢复出来的LUN进行分析,重组ASM磁盘组,并对ASM磁盘组进行解析。
总共有13个LUN,通过分析每个LUN前端的结构数据,可以根据ASM磁盘头结构来区分哪些LUN是属于ASM磁盘组的。通过分析,总共有2套ASM磁盘组。每个磁盘组包含的LUN中分区的情况如下:
图二:
图三:
通过ASM结构解析工具,对每个磁盘组进行解析和修复。可以解析出此ASM中存储的所有数据库文件。
图四:
(2) 数据库文件解析导出
对解析出的数据库文件,分别按文件类型分组导出。对导出的文件进行初步检测。
图五:
通过ASM解析工具恢复出所有的数据库文件。
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。