1.RAID卡上缓存的作用
 
在支持RAID 5的中高端RAID卡上,DRAM缓存是必不可少的。那么RAID卡上缓存的作用是什么呢?就是临时存放RAID逻辑盘读写数据的缓冲区。它是由I/O处理器控制的专用内存,因此比访问系统内存的效率更高。由于RAID 5/6的特点,如果一个块的数据直接写入硬盘(write through)的话,分别需要执行2~3次读和写的操作(我们以前有文章曾详细介绍过),这样即使是性能最好的RAID卡也只有每秒几十到一百多兆的顺序写入速度,IOP的处理速度再强大也无济于事。于是就出现了write back(写回)的策略,即数据先存放到缓存,再根据时机统一写回到硬盘中。由于DRAM的速度远高于磁盘,此时I/O处理器的XOR / P+Q运算性能才得以发挥。至于缓存的容量大小则更多的与预读和随机写入性能相关。
 
二、零维护缓存保护——替代BBU的好选择_缓存保护
Adaptec 5445Z RAID卡背面
 
  注:左下方那5个较大的芯片就是Micron(美光)的DDR2内存颗粒,在它们上面的TI(德州仪器)芯片类似于服务器内存条上的Registered(寄存器),起到寻址和缓冲的辅助作用。
 
2.为什么要保护缓存数据?
 
前面我们提到为了获得较好的RAID写入性能,可以使用write back策略打开写缓存。但如果遇到意外断电的情况,比如停电或者主机电源故障,没有保护的缓存数据就会丢失。如果存放的是不重要的临时数据,如流媒体类应用中的视音频采集,影响的可能只是几秒钟长度的视频数据,不会带来多大的损失。但要是OLTP(在线交易处理)这样的企业级应用,比如数据库服务器,缓存中丢失的可能就是几百条记录。而且在系统看来这些数据已经写入到硬盘(RAID卡)了,统计上会产生不一致的问题,严重时甚至导致数据库崩溃。若是这样损失就比较严重了。
 
多年来应用在RAID卡上的BBU(电池备份单元)就是为了解决这个问题的。它实际上是一块锂电池,在系统开机的情况下处于充电状态,一旦遇到断电时就会给缓存提供刷新所需的电流,保持数据不丢失,直到下次正常开机时再把数据写回到硬盘上。BBU的形状有很多种,有的与内存做在一个模块上(如下图),适用于可以更换内存的RAID卡;至于那些固化内存的产品,它们使用的BBU通常就是一块与RAID卡连接的电池。
 
二、零维护缓存保护——替代BBU的好选择_电池_02
RAID卡上的电池备份单元(BBU)
 
3.Adaptec零维护缓存保护(ZMCP)
 
Adaptec 5445Z,其中的字母“Z”代表了该系列RAID卡使用的新技术——零维护缓存保护(Zero-Maintenance Cache Protection,以下使用简称ZMCP)。它的工作原理是:在系统意外断电时,利用一组“超级电容”中储存的电量,在较短的时间内(大约1分钟),将缓存中的数据备份到RAID卡上的大容量Flash闪存中,直到下一次开机时再把数据还原到缓存并写回到RAID硬盘中。ZMCP实现的功能和传统的BBU类似,都是在断电时保持RAID卡缓存中的数据不丢失,而它却解决了BBU长期以来令人头疼的几个问题。因为ZMCP具有如下优点:
 
二、零维护缓存保护——替代BBU的好选择_休闲_03
 
在上表中,我们看到ZMCP相对于BBU的好处可以大致归纳为3个方面:
 
第一,锂电池存在寿命问题,每隔1~2年容量会下降50%,因此需要不断监视电池的状态和更换。首先需要设备维护人员投入一点精力,其次在更换时服务器需要停机并打开机箱盖,更换用的电池也要投入成本,另外为了预防紧急情况最好备有库存。而ZMCP完全不需要进行维护。
 
第二,BBU供电保持数据的时间最多72小时,在这期间内如果系统没有开机的话数据就会丢失;而ZMCP将数据保存在了Flash Memory中,10年都不会丢失。此外锂电池从开机到充满电需要4.5~9个小时;ZMCP使用的电容在系统启动时就能完成充电,立即进入保护状态。
 
第三,废弃的锂电池含有对环境有危害的化学物质,在环保回收方面也需要投入一定的成本。(由于我国目前对环境保护没有发达国家重视,因此这最后一条对国内用户的影响暂时不明显)
 
二、零维护缓存保护——替代BBU的好选择_ ZMCP _04
去掉ZMCP 模块之后的Adaptec 5445Z
 
Adaptec 5445Z去掉ZMCP 模块之后就和5445 RAID卡没多大区别了。和第一页中的照片对比可以发现,拆掉IOP348右侧带有闪存的方形PCB之后露出了正面的4个缓存芯片,加上反面的正好是9片一共512MB ECC规格。
 
二、零维护缓存保护——替代BBU的好选择_休闲_05
 
ZMCP 模块的闪存PCB型号为ZMM-100DB,而电容单元则命名为ZMM-100CC。我们看到PCB正面布满了电容、电感等元件。
 
二、零维护缓存保护——替代BBU的好选择_休闲_06
 
翻过来之后,上面是连接RAID卡主PCB的触点,它们除了传输数据之外还要将电容的电量供应到缓存上去。接口下方的Lattice ECP2芯片是一个高性价比的FPGA(现场可编程门阵列)器件,在这里负责连接Flash和DRAM缓存,控制数据的备份和还原操作。FPGA左侧的Micron闪存颗粒的容量为4GB,按道理说备份512MB缓存中的数据不需要这么大的空间。我们猜测这样设计的原因是:1. Flash Memory存在寿命问题(虽然在这里使用的机会并不多),一旦出现坏块可以用剩余的容量来替代;2. 现在闪存的价格低廉,配置4GB不会增加太多成本;3. 将来的RAID卡缓存容量还会增加,到时候很可能不需要改变当前的ZMCP 模块硬件就能配合使用。
 
二、零维护缓存保护——替代BBU的好选择_电池_07
 
我们拆开了ZMCP 模块电容单元的黑色塑料外壳,里面有2个电解电容和一小块电路板。与常见的主板、显卡上的电容相比,2.5V的电压并不高,然而33F的容量却相当大,要知道那些一般都是以μF(微法,百万分之一F)为单位的。
 
当然,Adaptec ZMCP的一次性投入成本要高于传统的BBU,但在后期的人力和费用开销上明显更有优势。再加上它的功能更加可靠,我们认为ZMCP是一项优秀的技术,并有可能主导未来十年。
 
二、零维护缓存保护——替代BBU的好选择_ ZMCP _08
 
Adaptec 5445Z RAID卡附件中的Low Profile(半高)I/O挡片,适用于部分1U、2U机架式服务器。它和全高挡片上都带有散热通风孔,可见现在服务器部件在设计时对整个系统环境的考虑比较周到。另一方面,也反映出由于IOP348芯片的集成度和工作频率较高,发热量有些大。根据官方的资料,在通风量达到200LFM时Adaptec 5445Z的最高工作温度为55℃,而没有通风(即周围空气静止)时只能达到35℃。
 
回首页目录: