RAID技术发展到现在遇到了应用瓶颈,其最大的问题在于数据重构时间过长。在漫长的数据重构过程中,多块盘损坏的概率很高。对于RAID6而言,如果第三块盘损坏,那么数据将会彻底丢失。在数据重构过程中,应用数据和重构数据相互竞争有限的IO带宽,导致数据重构时间进一步增加,数据安全性受到严重挑战。

面对RAID这样的问题,业内一直在思考我们RAID的技术是否已经走到了历史的尽头。笔者曾经也分析过,业内的很多存储公司都针对这个问题提出了自己的解决方案。其中名气最大的一个概念就是Declustered RAIDDeclustered RAID只是一类RAID而已,没有具体的定义。还有一些公司干脆把RAID拿掉,将数据冗余的工作交给了文件系统,文件系统在文件级别进行数据保护,业内很多人都附和,底层RAID气数将近,未来属于文件系统。互联网公司做的更加干脆,在磁盘级根本不需要RAID,所有数据保存到两个或者三个存储节点上,主节点坏了,还有其他两个备份节点。最近一段时间,NetAppDell的动态磁盘技术闹的风风火火,极大地减少了数据重构时间,并且在一段时间内可以容忍多块磁盘损坏。看到这儿,我们可以感觉到,这个领域已经烽烟四起。可以肯定的是,不同厂商的解决方案都在告诉我们,随着磁盘容量的增加,传统RAID已经很难胜任数据保护的作用,必将退出历史舞台,只是时间而已了。

最近一段时间,笔者一直在研究如何解决传统RAID数据重构问题。无意间,我的思路和NetApp解决方案不谋而合。个人认为动态磁盘技术是传统RAID的一个很好替代和延续。动态磁盘技术的本质在于将数据保护层和磁盘管理层分离。传统RAID中,数据保护层和磁盘管理层是相互紧耦合的一种关系。RAID6的数据分布(Array)和磁盘(Disk Group)是一一对应的关系,一旦一个磁盘顺坏,那么将会影响到一个Array中的所有条带。这种紧耦合的关系将会导致如下两个性能瓶颈点:

1)spare是一个严重的写入瓶颈。所有的数据重构出来之后,都需要写入spare盘。这个性能瓶颈点是很容易被发现的,并且可以通过distribute spare技术解决这个问题。

 

2)重构读瓶颈。在传统RAID中,由于保护层和磁盘层一一对应,重构读性能最大性能为单盘读性能。因此,对于数据重构而言,重构读是一个严重的瓶颈点。并且这个瓶颈点将会限制distribute spare技术的应用。

动态磁盘技术可以解决上述两大瓶颈点。因此可以大幅度提升数据重构性能,并且可以随着磁盘数量线性扩展。动态磁盘解决上述问题的核心技术在于wide stripe技术。当数据保护层和磁盘管理层分离之后,数据保护层中的数据可以动态的随意、均匀分布到所有磁盘上。如此一来,一个损坏的磁盘将会影响到所有的Array,并且会调用所有的磁盘对损坏的数据进行恢复。自然而然,重构读和spare单点写入的问题将会消失,在磁盘数量达到一定的情况下,数据重构的性能将会急剧提升。

有人担心Wide Stripe会引入混合读写问题,从而导致单盘读写性能下降。的确,当条带中的数据无序分布到所有磁盘上之后,单盘的读写性能会下降,所以,在磁盘数量较少的情况下,动态磁盘技术带来的价值不大,磁盘越多,体现的价值越大。正可谓“三个臭皮匠,胜过诸葛亮”,单盘性能的降低无所谓,关键在于总体性能。

对wide stripe技术的一点思考_第1张图片

上图是Dell动态磁盘阵列的重构时间对比结果。采用动态磁盘技术后,重构时间大幅降低,并且在两块盘同时损坏时表现尤为突出。可以说动态磁盘技术是传统RAID的一个很好替代方案。

和文件系统数据冗余解决方案相比,从技术的角度来看,动态磁盘技术有何不同呢?其实,在我看来,动态磁盘技术(DDP)、IBM Declustered RAIDPanasas Object Store以及HPVirtual RAID,其本质上是完全一样的。概括起来就是上述提到的“数据保护层和磁盘管理层的分离”。数据保护层可以在文件系统级别实现,也可以在块设备级别实现。不同的实现产生不同的系统形态及特性。动态磁盘技术在块设备级别实现了数据保护层,Object Store在文件系统级别实现了数据保护层。磁盘管理层主要实现资源块的分配,为数据保护层提供存储对象。因此,上述提到的这些解决方案,有着相同的思想,所以,有着很多共性问题。

面对传统RAID的问题,数据保护层和磁盘管理层的分离是大势所趋,分离之后采用Wide Stripe技术可以天然破解传统RAID的重构瓶颈点,可以大幅提高数据可靠性。当然,新生事物必然有它新的问题,例如,如何平衡数据分布?数据迁移对应用性能造成多大影响?如何更好的优化数据分配算法?如何优化顺序读性能?新技术的优势是明显的,问题也是很多的,一个伟大的时代才刚刚开始。