【引言】
本文档建立在针对HP EVA的大量测试性研究基础上,所有的细节几乎均为对EVA的破译型研究,目前全球范围内尚未发现类似资料,故可能表述方式和结论并不精确,仅为参考之用。
我们公司为研究HP EVA系列算法,花费了大量的人力物力,目前应为全国唯一的研究此项技术的公司,转载请注明来源。

【前因】
HP EVA4400/6400/8400因接近退役,已进入高故障区间,用户往往会认为花费几十万甚至上百万购买的eva系列应该是非常稳定的,但实际上无论多么昂贵的存储设备,使用的磁盘是相同或相似的。正如eva上销量极大的部件号为454414-001的1T FATA磁盘,其实就是臭名昭彰的希捷7200.11 系列的FC版,虽然前者正品售价仍高达近4K,后者却不足400,但两者的性能和稳定性表现几乎是相同的。这些1T FATA磁盘在经历2-3年的运行后,总会出现大批量的损坏,而且往往一旦损坏,几乎很难修复。一个我遇到的最夸张的案例,108块1T FATA的EVA6400,在半年内先后损坏50多块,这是让人惊讶的,实则也是正常的(缘于希捷这款产品的设计缺陷)。
即便是使用15000rpm或10000rpm的FC磁盘,其实盘体也等同于希捷、日立等厂商的SAS磁盘(目前的EVA系列磁盘已经全部基于SAS了,即使是FC,也是通过转换电路实现SAS到FC的转换,如671148-001)。EVA是虚拟化的存储设备,平时数据会不断的迁移,加上应用通常较为繁重,所以磁盘的负载相对是较重的,也是很容易出现故障的。EVA是依靠大量磁盘的冗余空间,以及故障后rss冗余磁盘动态迁移来实现整个存储的数据保护,但随着越来越多的磁盘掉线,这种保护会接近临界,直至崩溃。
通过eva command view下的 fieldservice执行强制激活命令,一则会导致cache dirty、数据块结构不一致导致数据出现损坏。二则修复只能建立在绕开坏道区域的基础上,如果坏道无法绕开,也是徒劳。
另有一些情况:主机无法与扩展柜相连导致数据丢失,误删除vdisk等,也需要有切实的解决方案。
HP P6000系列控制器与EVA系列内部算法完全相同,不再单独提及。
【eva系列存储结构原理概述】

EVA系列存储是一款以虚拟化存储为实现目的的HP中高端存储设备,内部的结构组成完全不同于普通的基于简单RAID的存储,EVA内部称之为VRAID。包括一些资深的HP工程师,对EVA的理解其实是有误区的(也可能是HP官方的宏观描述)
EVA会对每个物理磁盘(简称为PV)进行签名(写在每个磁盘的0扇区),签名后即分配进不同的DISK GROUP。在disk group中,类似于aix 的卷管理,或HP LVM的卷管理一样,每个PV会按一定大小划分为若干存储单元(按AIX的说法,暂且称为PP吧),PP的大小为2的整数次幂,且应该在2-16M之间。
每个PV中有有限数量的PP,这些PP合起来形成整个DISK GROUP的可用空间。所有的PV按5-15组成若干组RSS(HP的官方资料中讲最小的RSS磁盘数量是6,最大应不到15,但对底层的分析得知,存在5和15个PV的RSS情况),每个RSS就是一个所谓常规RAID的冗余组,但这个冗余组不等同于常规RAID,与常规RAID相似的是,常规RAID是以磁盘为单位的RAID算法,而RSS是基于PP的RAID算法。
为提高性能,HP EVA会有倾向地轮流分配不同的RSS组,但这些RSS之间的数据存储是基于JBOD的(HP官方和很多资料上称是RAID0,或许是宏观的概念),每个RSS组成的stripe 的成员其实是不同PV中不同位置的PP。
无论RSS中成员数量有多少个,对于VRAID5,一个stripe中的PV数总是5个。对于VRAID6,一个stripe中的PV数总是6个。例如,对于VRAID5,EVA会尽可能在N个磁盘中做C(N,5)的组合情况,以期实现IO 负载均衡。
当一个RSS中某个PV离线,控制器会从同一个RSS组中其他磁盘(同一条带中已存在的PV之外)中寻找可用的PP,在逻辑上实现每个stripe的rebuild,从而保证整个存储的安全性。
当一个RSS中损坏的磁盘数量足够少时(少于等于6个),这个RSS的安全性就非常低了,这时候,EVA会合并此RSS到另一个RSS中,这样可用的冗余空间就是共享的了,空间就可以从另一个较安全的RSS中迁移过来。
为了保证有足够的空间提供冗余保护,在创建disk group时,EVA会提供一个Protection Level的保护级别,single表示用2个磁盘的空间做冗余 ,double表示用4个磁盘的空间做冗余。但这个冗余不同于hotspare,这个冗余空间仅会预留到每个PV的尾部,一则,多个磁盘,IO会更均匀,更快;二则,尾部的空间通常是质量较差的空间。

【EVA系列常见故障】
1、RSS中多个磁盘掉线,超过冗余保护级别。
2、加入新磁盘,进行数据迁移时,新磁盘存在物理故障(此时无法回退,也无法前进)。
3、VDISK 删除或EVA initialize。
4、突发性主机与存储无法连接。无法discover到存储。

【数据恢复解决原理】
eva系列最核心的结构部分来自于所有vdisk的运算pp表,这个pp map表会因为磁盘的不断迁移而迁移。所有的故障均可基于此map进行恢复。
当pp map不存在时,根据不同的条带之间的冗余关系,可有优化算法对所有PP进行条带性集合,从而形成若干组正确的条带数据,再基于文件系统结构、数据结构等特征,重组若干条带。

【数据恢复解决过程】
1、原始磁盘镜像,将EVA主机一端的连线拔出,直接连入主机hba卡上,就可以认到所有物理硬盘,之后通过专业手段(Linux下的dd,windows下的winhex等)进行磁盘镜像。因eva主机与扩展柜之间多是铜线连接,故而,可能需要在扩展柜上增加光纤收发模块,再通过光链路接入fc hba卡上。当然,也可以把所有硬盘拆下来后,放入其他光纤通道柜中进行镜像。
使用EVA扩展柜进行镜像的连接图如下:


2、通过frombyte recovery for hp eva程序进行vdisk重组,直接写入成镜像文件或目标物理磁盘。
3、按常规方式解释镜像文件或目标磁盘,迁移镜像或导出内部文件。

北亚关于HP EVA4400/6400/8400/P6000的数据恢复解决方案的更多相关文章

  1. HP DL380服务器RAID信息丢失数据恢复方法和数据恢复过程分享

    [数据恢复故障描述]    客户服务器属于HP品牌DL380系列,存储是由6块73GB SAS硬盘组成的RAID5,操作系统是WINDOWS 2003 SERVER,主要作为企业部门内部的文件服务器来 ...

  2. HP “云图”GPU虚拟化工作站解决方案

    HP PCS ”云图”GPU虚拟化工作站解决方案 ——将图形计算从桌面移到数据中心 惠普云图形GPU虚拟化桌面系统是以用户为中心的私有云服务.除了保留了传统桌面虚拟化方案以集中设备为中心统一管理等优点 ...

  3. Andriod 自动化测试研究方向

    前言 孔子曰:"工欲善其事,必先利其器",我来云:"工欲利其器,必先知其理".我们无论学习任何新事物,都要尽量做到"知其然知其所以然",对于 ...

  4. 完美解决某法院HP EVA8400删除VDISK问题

    [故障描述] 某地法院一台HP EVA8400存储,2组扩展柜,物理磁盘由12个1T FATA磁盘(AG691A 454414-001)和10个300G 15K FC磁盘(AG690A 454411- ...

  5. HP服务器 hp 360g5 centos7安装问题

    HP服务器  hp 360g5 centos7安装问题 一 :启动盘无法识别硬盘 1.进入安装光盘,用上下键选择安装centos--Install Centos7(注意不可按Enter键),如图: 2 ...

  6. HP 820 G2变色龙安装10.11.6基本完美

    初始状态: 一块ssd硬盘,MBR格式分区,安装了WIN7 64位. 不想动win系统,因此就安装在硬盘的扩展分区 电脑配置: cpu: i7-5600u 声卡: ALC280 显卡: HD55 ...

  7. HP网络打印机--如何添加打印机

    HP网络打印机采用web服务形式,应添加打印机-通过Internet的打印机--填写网址http://192.168.1.10:80(从其他win7电脑-计算机-网络-网络设备中双击添加打印机,然后在 ...

  8. 分享一下刚刚HP电话面试。。。。。。。。我估计我挂了,不过还是要来分享一下

    面试官是个中国人,给我是全英文面试,总之是做HP的外包业务,说得很好的工作环境,里面都是一些老外在工作. 首先是要用英文介绍了下自己,我自己觉得自己也还是不错的吧,然后就说了一通(其实我好久没说英文了 ...

  9. HP滤波原理浅学

    今天偶然看到如果使用eviews做HP滤波,一时好奇,于是找了点资料看看~ 由于纯属自学,没有找到教材,大家姑且一看咯,也不知道对不对哈.

随机推荐

  1. NOIP2010题解

    所有题目链接均来自洛谷 T1机器翻译 原题戳这里 自古T1是水题 因为每一个数字都小于1000,所以对于是否在队列中可以开数组查询 对于大小的限制,弄一个队列维护大小即可(水题呀...) 这题在Win ...

  2. [cogs2701]动态树

    题面戳我 sol 比较裸啊. 注意操作顺序就行了. code #include<cstdio> #include<algorithm> using namespace std; ...

  3. java.lang.OutOfMemoryError: PermGen space有效解决方法

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决 ...

  4. 使用asyncio实现redis客户端

    redis协议格式请参考,http://doc.redisfans.com/topic/protocol.html 这里简单介绍下: *<参数数量> \r\n $<参数 的字节数量& ...

  5. Android 音视频编解码——YUV视频格式详解

    一.YUV 介绍 YUV是一种颜色编码方方式,通常由彩色摄像机进行取像,然后把取得的彩色图像信号经过分色.分别放大校正后得到RGB,再经过矩阵变换得到亮度信号Y和两个色差信号B-Y(即U).R-Y(即 ...

  6. 案例:中科院光机所应用大数据可视化工具-LightningChart | 见证高性能图表

    中国科学院上海光学精密机械研究所 中国现代光学和激光科学领域领先研究所 中国科学院上海光学精密机械研究所(简称中科院上海光机所)是我国建立最早.规模最大的激光专业研究所,成立于1964年,现已发展成为 ...

  7. wpf动态增加删除控件

    我在xaml中定义了一个名字为morepictureWrapPan为WrapPanel,然后将控件添加在此WrapPanel中.由于要实现控件的删除功能,所以增加的textbox和button的名字都 ...

  8. Servlet的监听器

    Listener是Servlet的监听器,它可以监听客户端的请求.服务端的操作等.通过监听器,可以自动激发一些操作,比如监听在线的用户的数量.当增加一个HttpSession时,就激发sessionC ...

  9. 【Python】 多线程并发threading & 任务队列Queue

    threading python程序默认是单线程的,也就是说在前一句语句执行完之前后面的语句不能继续执行(不知道我理解得对不对) 先感受一下线程,一般情况下: def testa(): sleep(1 ...

  10. MSIL实用指南-生成构造函数

    本篇讲解生成构造函数的一些知识,包括创建实例构造函数.静态构造函数.调用父类构造函数. 生成构造函数的方法生成构造函数的方法是TypeBuilder.DefineConstructor(MethodA ...