开发者社区> 科技探索者> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

内存也玩RAID

简介:
+关注继续查看
近一个星期我将外出,为此留下两篇文章,多为51CTO做些贡献:)。本篇介绍一下HP服务器技术中的RAID技术。
 
说起RAID,人们不约而同首先、而且唯一想到的是我们听到的磁盘冗余阵列,其实这一技术早已被HP应用于内存之中,那就是它的热插拔RAID内存技术,并且在其ProLiant系列中的700子系列服务器中得到应用。
由于应用程序越来越复杂对内存要求越来越高,同时处理器的处理能力也更强,服务器内存的扩展已经是必然的事情。要满足这个要求,服务器的制造商面临的问题就是在增加内存的密度、增大内存的容量的同时,保证系统内存的可靠性。
HP 也面临同样的问题,它的解决办法是利用3种容错内存保护技术(fault-tolerant memory protection technologies):在线备份内存、热插拔镜像内存和热插拔RAID内存。在线备份内存适用于那些不想因为仅内存错误就停机检修设备的用户,他们希望利用固定的设备检修时间更换出现故障的内存模块。热插拔镜像内存能够为此类用户提供更高的容错能力,而且用户也无须等到设备固定的检修时间才更换出现故障的内存,因为热插拔镜像内存可以让用户在不关机的情况下对内存进行在线替换。对于那些需要大容量内存支持且长时间不间断运行的应用程序而言,HP热插拔RAID内存的可靠性最高。它可以保证内存子系统运行正常,即使是在有一个内存设备完全出现故障的情况下也是如此,它支持工业标准的DIMM在线替换、在线扩展和在线升级。本文仅向大家介绍HP的热插拔RAID技术。
RAID内存的含义是工业标准的DIMM容错阵列(Redundant Array ,结构图如图1
1
    对比下面的图2,我们不难看出,惠普热插拔RAID内存(Hp Hot Plug RAID memory)在概念上和RAID 4 磁盘存储技术是相似的,在系统架构上就更像一个硬盘,所以采用了热插拔RAID内存保护模式的系统就可以达到像RAID硬盘一样随意替换内存的效果。但在一些关键的性能上会有所不同,两者的实现方式上也不一样。与磁盘阵列不同,惠普热插拔RAID内存使用的是并行的点对点的连接方式写数据,而不是通过连接多块磁盘的串行总线,这种方式的优点是数据可以同时被写入多个存储区(内存盒),不存在延时(Mechanical delay),消除了因为存储系统使用RAID技术处理而带来的写数据的瓶颈问题。而在一个磁盘冗余存储阵列中,通常情况下RAID控制器在写数据之前会先读现有的奇偶信息,如果有专门奇偶校验驱动器做这项工作,那么就会带来瓶颈。但惠普不是这样做的,惠普热插拔RAID内存运行在整个数据缓存线上(参见图1),所以在写数据前没有必要读现有的奇偶信息。
 
2
采用惠普热插拔RAID内存方式的服务器使用5个内存控制器来控制5个内存盒(Memory cartridges)。每个盒可以安装最多8个工业标准DIMM(参见图3),当内存控制器向内存中写数据的时候,它们会把数据分成4块分别写入4个内存盒,并把计算所得的奇偶信息存放在第5个内存盒中。利用前4个内存盒中的数据和第5个内存盒中奇偶信息,数据可以完全恢复,即使是任何DIMM工作故障,或任何一个内存盒被拆掉了,也可以做到不丢失数据。可以看出,热插拔RAID内存克服了在线备份和镜像备份两种模式的各种缺点,为系统提供了长时间不间断运行条件,使应用程序获得更高的可靠性和稳定性。
3
在读操作中,每个从内存盒中读出的数据都会经过内存控制器和一个ECC设备进行错误检查, 另外,其余4个内存控制器会重新生成一个值,RAID 内存引擎会将读出的数据和这个生成值进行比较。RAID内存的读写过程可参见图4
4
数据1Data Word1通过它自己的内存控制器(MC1)后,送到 ECC 设备进行错误检查,这个ECC 设备使用的是新的8-bit ECC 算法(HP开发),它可以检测到X8内存( X8 memory modules)中发生的错误,可信度很高。ECC用一个信号将检查结果“好”(Good或“坏”(Bad送给多路复用器( MUX1)。具备下列3条中的一条,ECC 设备就判断数据1是好的: (1) 数据正确 (2) ECC检查出了错误但改正了 (3)数据中有错误,但ECC 设备检查不出来。
HP 热插拔RAID内存通过进一步的校验方法控制所有三个部分的错误。其余的4ECC 设备(包括保存奇偶信息的内存盒的)将它们保持的数据送给RAID内存控制引擎(RAID Engine,后者利用这些信息通过RAID算法重构数据1RAID内存引擎将重构的数据1送到MUX1的比较设备中 (奇偶比较,在这个设备里面重构的值和ECC传过来的数据1进行比较,如果两个完全相同,MUX 输出数据1。如果不同,说明数据1有错误,比较设备会给系统发出一个“non-maskable interrupt (NMI) 信号,中止系统运行,禁止错误数据1的输出。这个过程是同时在重复进行的,因为同一时间内还会从其它的存储盒中读数据,参见图5HP 热插拔RAID内存方式的这个特性保证了采用这种方式时数据的可靠性非常高。HP 将对热插拔RAID内存进行改进,采用回写技术(scrubbing)定位软错误。
5
HP的热插拔技术中还应用到两个小技术,它们就是:回写(Scrubbing)技术和热插拔容量(Hot-Plug Capabilities)技术,下面分别予以简单介绍。
Ÿ      回写(Scrubbing)技术
HP热插拔RAID内存提供了一个回写硬件方式,它可以确认ECCRAID检查出来的软错误。惠普技术尝试定位在读内存时检查出来的所有软错误,方法是把改正后的正确的数据写回内存中去。但此方法不适用于硬错误。回写技术可以阻止软错误的累积,避免发生更严重的错误。它降低了ECC的工作量,提高了系统的性能。一些传统的系统采用的是软件回写,HP热插拔RAID内存使用硬件完成这个工作。
HP热插拔RAID内存会对错误生成错误日志,错误极限由软件设定。当记录的错误值达到错误极限的时候,软件会自动作出反应。例如当超过错误极限的时候故障灯会自动点亮,这就是由软件控制的。
Ÿ      热插拔容量  Hot-Plug Capabilities
惠普热插拔RAID内存还可以允许用户在不关闭服务器电源的情况下在线更换、在线扩展以及在线升级DIMM,这就是HP的热插拔容量(Hot-Plug Capabilities)技术。
在线更换指在系统运行的情况下更换出现故障的DIMM 。惠普热插拔RAID内存不需要操作系统的支持,服务器在购买的时候就具有支持在线更换的能力。在线扩展指用户在空的插槽上插入DIMM以扩展系统容量,在线升级是指用户用容量更大的DIMM替代旧的较小容量的DIMM。在线扩展和在线升级都可以使用户获得更大的系统内存容量。在线扩展和在线升级要求操作系统的支持,系统要可以认出新增的内存。
当在线内存操作完成后,如果工作在热插拔RAID内存模式下,那么系统会自动在所有的内存盒上重新放置数据(rebuild)。虽然这样做会暂时降低内存的工作性能(重新放置4 GB的数据花费时间少于30秒),但是只需要花费很少的钱就可以增加容错能力,并可避免系统检修期间带来的经济损失。
本文转自王达博客51CTO博客,原文链接http://blog.51cto.com/winda/32578如需转载请自行联系原作者

茶乡浪子

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Activity和Fragment之间解耦
看鸿洋博客:http://blog.csdn.net/lmj623565791/article/details/42628537,整理下一些关键点 public class ContentFragment extends Fragment { private String mArgume...
712 0
tmpfs:一种基于内存的文件系统
tmpfs是一种基于内存的文件系统,   tmpfs有时候使用rm(物理内存),有时候使用swap(磁盘一块区域)。根据实际情况进行分配。   rm:物理内存。real memery的简称? 真实内存就是电脑主板上那块内存条,叫做真实内存不为过。
1369 0
C++内存管理
c++内存分为代码、堆、栈、常量和全局//静态存储区。 不同变量的存储位置: 全局/静态存储区——全局变量,static变量; 栈——局部变量、函数调用时的参数。栈的容量一般比较有限; 堆——new运算符分配,需由delete释放;若分配失败,new返回NULL,记得安全性检查。 常量存储区——这是一块比较特殊的存储区,里面存放的是常量。new/delete 与 malloc/f
1308 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
基于英特尔 SSD 的虚拟机缓存解决SSD
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载