|
再谈RAID重建:宽条带化分布式热备盘“动态磁盘池概念完全不同与以往的RAID概念。它将一组磁盘放入动态磁盘池中,每个磁盘划分出很多Cpiece。这些Cpiece在做RAID Strips,组成CStripe再组成CVD(CRUSH Virtual Drive)。磁盘在动态池中被完全打散。当一块物理磁盘故障时,重构就开始了。 写这篇文字的初衷,源于自己最近纠正了之前的一个认识——无论各种RAID改良技术,其Rebuild(重建)速度都不可能超过单块硬盘的最大写入速度? 一、发现局限,仍存误区 大约几个月前,我受益于高人的观点,了解到IBM XIV的一个局限。XIV将底层磁盘空间完全打散为1MB大小的数据块,然后按照伪随机算法,将同一块硬盘上的数据块与来自其它所有的硬盘的数据块进行镜像。这样做消除了数据热点,正常状况下的理论性能相当于RAID 10,当然空间利用率也没有RAID 5、6高。 其实XIV在技术上更值得关心的是:当有一块硬盘故障时,IBM宣称向热备盘重建的速度远高于传统RAID,并且在此期间正常数据访问性能下降的比较少,因为此时的Rebuild负载也被均衡分散了。然而有个问题:正是由于每一个硬盘上数据块镜像的副本分布在整个存储池中其它所有的硬盘,相当于剩下的硬盘上都存在唯一数据。也就是说,如果在重建结束之前再损坏第二块硬盘的话,就有可能会丢失数据。 笔者以此得出推论——IBM曾表示在实验室中测试过4个机架的XIV互连(60节点),但迄今为止仍然没有推出15节点(180个驱动器)以上的型号,很可能就是上面提到的原因。毕竟硬盘越多,这种短时间单点故障的风险就越大。 就这一点,@jametone 老师还曾在微博上与我交流,他表示3PAR的宽条带化RAID技术也是类似的情况。而我当时的误区在于,无论这些改良型RAID重建时的数据可以同时来自多少块硬盘,但它们都要写入到一块硬盘上?因此在该硬盘存满数据的情况下,重建的时间无法超过以最大速度填充整个硬盘的时间? 那么后来我又是如何推翻这个认识呢?在展开具体讨论之前,我想先简单叙述下宽条带化(wide striping)技术的特点,以及在传统RAID基础上解决了哪些问题。 1.简化配置,均衡性能热点。如果说自动精简配置(Thin-provisioning)提高的是容量方面的利用率,那么宽条带化就是使RAID卷组规划变得简单,并提高性能利用率的技术。 比如说像IBM Storwize V7000(EMC VNX/CLARiiON等可能也是类似的情况),用两至多个RAID 5 4+1的组成磁盘池,也就相当于再次条带化,在RAID 5之间又做了一次RAID 0。这样可能会有一个问题,当遇到故障盘重建的情况,Rebuild磁盘负载只产生在一个RAID 5上,而它会同时把其它RAID组“拖慢”。 2.提高重建速度,减少性能影响。我们看到还有些更进一步的底层完全打散的技术。比如前面提到的XIV,带有RAID 1的特点;NetApp E系列的动态磁盘池(Dynamic Disk Pools,以下简称DDP),带有RAID 6的特点;惠普3PAR支持多种RAID级别,但客观讲我对于它的Dynamic Optimization研究还不够。 关于“存储底层打散的存储虚拟化技术”(这里的虚拟化指的是阵列内部的磁盘管理方面,而非像IBM SVC、EMC VPLEX那样的“外部”存储虚拟化),可以参考 @_林肯大叔 前辈所著的《存储器那点事》。 动态磁盘池对比(传统RAID)卷组的Rebuild时IOPS性能下降情况 这里我引用了来自NetApp的一张图表,其中黑色柱形代表RAID6,蓝色表示DDP中等重建优先级,灰色为DDP高优先级,从左到右依次为12、24、60、96和192块硬盘。图表反映了在运行4KB随机读访问负载情况下,重建对性能产生的影响。 首先我们看到在12块盘时,DDP的表现与RAID6基本相当。再往上,传统RAID不适合容纳过多的硬盘,首先RAID 5/6有写惩罚的问题;而RAID 10在重建时也会遇到磁盘对的瓶颈。随着硬盘数量的增加,DDP对性能的影响能够不断减小,这和笔者在开头提到的XIV是相同的道理。 二、从“分布式热备盘”获得启发 前不久我在一份戴尔的资料中看到了这样一段话: 注:Dell PowerVault MD3000家族OEM自NetApp E系列(原LSI Engenio) 这里有一个“distributed spare capacity(分布式备用容量)”的概念,给人的感觉就是传统RAID的一块热备盘,它的容量被打散到整个动态磁盘池中。这样在重建的时候,就可以并发写入到不同硬盘的备用空间,而不再受单个热备盘写入热点的限制。 我感觉,上面这张图只描绘了故障盘以及重建(计算)所需要的数据块和校验位来源,并没有表现出所谓的“分布式热备盘”在动态磁盘池中存在的情况。 这时我想到去年NetApp回复给我的一段描述: “动态磁盘池概念完全不同与以往的RAID概念。它将一组磁盘放入动态磁盘池中,每个磁盘划分出很多Cpiece。这些Cpiece在做RAID Strips,组成CStripe再组成CVD(CRUSH Virtual Drive)。磁盘在动态池中被完全打散。当一块物理磁盘故障时,重构就开始了。它会将相应Cpiece重构,并放入其他几块磁盘上,因此重构速度成倍提高。DDP支持同一时间故障磁盘超过2块。它的故障磁盘容忍度与容量是相关的。如果你只使用了50%的容量,那么你的磁盘可以坏到50%,就是DDP中一半的磁盘故障了,数据依然是安全的!这个完全不是以前RAID5或RAID6的概念了。它的概念是只要我有空间去重构Cpiece,那就可以继续保持数据安全。” 根据我对这段话后面一半的理解,这个“分布式热备盘”就位于动态磁盘池中未用的空间中,当发生并完成了重建操作之后可以继续保持该分布式热备盘的存在,不过前提是整个磁盘池的可用容量会下降。 责编:驼铃声声 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:kaiyun体育官方人口
文章著作权分属kaiyun体育官方人口
、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
最新专题 |
|