本帖最后由 jaden1q84 于 2017-9-22 09:52 编辑
这一页PPT本身是某公司超融合虚拟存储的硬盘配置说明,其上下文是针对某公司超融合上**被虚拟存储aSAN纳管**的硬盘配置要求,因此不能断章取义单独看这一页PPT的内容。如果没有使用aSAN,而使用RAID卡组建本地存储方式。由于没有aSAN的SSD加速作用,是需要开启RAID卡缓存来提升IO速度的,但对RAID卡缓存可靠性配置有一定要求,具体见后文关于RAID卡缓存的说明。
在回答针对在aSAN上的RAID卡缓存配置这些疑问前,我们先来了解一下RAID卡缓存,以及硬盘缓存的原理和作用。
* RAID卡缓存 大部分RAID卡会采用内存颗粒(RAM)作为RAID逻辑盘缓存,容量在几百M到几个G不等,RAID卡缓存仅对RAID逻辑盘生效,对JBOD透传的硬盘是不生效的。众所周知,内存颗粒在掉电时会丢失数据,而RAID卡是通过自带的电池供电来保证这些内存缓存在故障情况下不丢失的。在系统强制下电时,如果启用了RAID卡缓存,并且缓存有脏数据,就要依赖电池供电来保持数据直到下一次系统上电再回刷到硬盘。保持数据的时间长短要视乎电池的状态和电量,一般在电量满足情况下,能让RAM的数据保持几十个小时(RAID厂商普遍指标为72小时)。如果超过时间后,缓存数据就丢失了,另外还存在不可预知的其他原因,比如电池接触原因的、电池本身质量等,而丢失缓存数据引起数据丢失。RAID卡电池还存在充放电次数维护的问题,需要使用者有比较高的理解和操作能力。市面上还有些RAID卡是采用钽电容+RAM+Flash颗粒来构造缓存机制的,这种方式是通过钽电容提供短时间的供电,把RAM的数据写入到板载的Flash颗粒里面,从而达到掉电不丢数据的目的,这种RAID卡普遍价格较高。需要注意的是,RAID卡并不是默认配备电池模块的,需要购买者指定型号或另外选购。总的来说,RAID卡的电池使用和缓存配置对使用者有一定的运维要求,并且电池并不是保证缓存数据万无一失的解决办法。
* 硬盘缓存 对于机械硬盘,也有一个缓存机制。这个缓存同样采用RAM内存颗粒来实现,通常是32M-128M。这个缓存的作用主要是为了解决机械盘写入性能问题。我们知道机械盘的寻道需要时间,那写入的数据会先存在硬盘缓存上,配合机械盘自身的寻道优化算法(比如电梯算法)来把数据从缓存写入到盘面上。硬盘缓存就是为了满足算法排序以及数据聚合成大块再写入盘面提高速度而存在的。硬盘缓存也是可以通过命令关闭的,Linux上SATA硬盘的关闭命令是hdparm -W 0 /dev/sdX,SAS盘则用sdparm命令。关闭后写性能会明显下降 。
现在我们回来看PPT的内容。PPT里面要求在不支持JBOD时就用单盘组RAID0并关闭RAID卡缓存。这是为了在*所有场景*情况下都能满足掉电数据一致性提出的。注意是所有场景,即包括RAID卡无电池或电池超时失效的情况,直接要求全部情况都关闭RAID缓存是为了确保各种情况下都不会存在因为掉电而丢失数据的情况出现。对于硬盘缓存,通常在配置RAID盘时,默认的硬盘缓存策略一般都是关闭的,所以PPT就没专门指出。这一点PPT可以再补充清楚对硬盘缓存的要求。
那怎么解决关闭后HDD写性能下降的问题呢?超融合的虚拟存储提供了SSD+HDD混合机制,通过利用SSD来充当读写缓存、数据分层,在写入数据时会先写进入高速SSD,当满足一定条件后再回写到HDD。并且在回写过程中,还增加了模拟RAID卡缓存/硬盘缓存的机制,会对临近数据块进行合并成大块后再写入HDD。而SSD的容量是远大于RAID卡的缓存的,还能提供更持久的高性能写入缓存时长。在内部实测中,在关闭RAID卡缓存、硬盘缓存的情况下回写速度依然能跑满硬盘的最大性能。我们可以这样理解,超融合利用SSD的特点,构建了比RAID卡缓存效果更好、更安全的缓存机制。 |