由中国计算机学会信息存储技术专业委员会、中国教育部信息存储系统重点实验室和DOIT、存储在线联合举办的2016中国闪存峰会在京召开,主题为“关键之年,让闪存绽放”,来自产业界的众多嘉宾围绕闪存技术本身将如何演变与发展,以及闪存竞争的其它存储芯片技术,存储系统将会怎样发展这些热点问题进行了精彩的分享。
Memblaze高级技术总监吴忠杰先生发表了名为“构建NVMe高性能存储的方法与实践”的主题演讲。以下为此次演讲实录:
我是来自Memblaze的吴忠杰,今天想与大家分享一个话题,围绕闪存,如何打造高性能的存储系统。跟大家分享一些构造高性能存储的方法,以及我们的实践结果。
数据中心会在全球各地遍地开花,在数据中心的背后有什么样的技术在支撑,这里有一个大家是不可否认的,那就是闪存。对闪存而言,Memblaze做了很多的工作,并且一直在推动着闪存技术的发展。互联网领域做闪存技术,现在很多人想把SSD用于数据库、银行等等对数据可靠性有很高要求的业务。Memblaze在这个月推出了面向数据高可靠,针对数据保护,针对高性能存储介质的性能。SSD技术发展很多年,十年前都用过SSD。最早的SSD就是采用SATA的接口。第二代的PCIe SSD没有标准,各个厂商都有自己的协议,自己的接口,这样的话很影响推动。第三代SSD就是NVMe SSD,它是国际标准的SSD。
我们Memblaze推出了一款产品,单盘75万IOPS。以前用磁盘做存储系统的时候,我们需要考虑磁盘的特性,并且对磁盘的IO性能进行优化。但是在今天SSD有这么高的性能,传统存储面临的问题不复存在,所以作为存储的设计者应该重新地考虑问题。这次的闪存峰会上很多人在关注,上午很多人做报告的时候提到了软件一定要变革,如果软件不变革,高性能存储介质没有办法在行业或者说其它的领域里面利用。
面对高性能的存储介质做存储需要解决什么问题,这是我们做存储系统需要考虑的。我们发现高性能存储介质,在服务器里面已经大量的使用,大约在2014年的时候我们只能找到一个服务器里面带四块盘的SSD,2015年3月份的时候刚刚发布的我已经定了,那有十块盘。但是我们今天可以在2U的机器里面可以找到48块盘,有了服务器厂商的支持,有了SSD厂商的支持,从软件的角度我们应该解决什么问题?数据可靠性。
如何保证在NVMe SSD方面的数据可靠性,这是使用SSD需要考虑的问题。怎么限性的扩展SSD的性能,多买一些盘可以聚合起来。一个盘75万以上的IOPS,这比以前的阵列都高。怎么把多块盘的性能聚合起来,这是需要考虑的问题。一个存储系统提供的存储能量已经很大,怎么共享做服务,这也是需要考虑的。怎么与传统的存储性能进行融合,以及高效的网络输入,这是高性能存储介质。无论是研发还是设计都需要考虑的问题,我们的解决方案就是 Flash RAID,更重要的是一个面向高性能存储介质的软件定义存储解决方案,具备数据保护的能力,可以做分层的存储,在性能方面解决了软件的问题,可以做分布式的存储。目前我们发布的还没有做到分布式这块。
Flash RAID面向SSD软件定义存储系统,可以对NVMe SSD做数据保护。支持的平台方面,因为是软件定义存储,所以在支持的平台方面有一定的普遍性,可以支持X86,ARM、SPDK, Flash RAID可以跟它们进行集成。软件架构来讲,Flash RAID是层次化很强的系统,最底下的是物理资源池,上面是全局的资源池。在全局资源池上面,这是存储的对象,通过多个存储对象聚合成一个虚拟的磁盘池,多个磁盘跨多个节点构成了网络池,具备了RAID2.0的架构。
Flash RAID有创新性,因为解决了软件和瓶颈的问题,最主要的解决点。怎么利用多核CPU,英特尔的发展思路是CPU多核化,怎么利用这是需要考虑的问题。SSD不是完美的, SSD怎么解决寿命的问题,我们在盘一级做优化,利用容量来换寿命。在系统级别有很多的技术可以增强SSD的使用寿命,发生故障以后怎么办,不能等几个小时恢复数据,所以这里我们提出来了很多数据恢复技术,还有资源池化,到底是对SSD有什么样的好处,可以解决SSD什么问题。性能是不是会保持不变,这是对选择存储系统来说一个非常重要的考核点。
存储资源的虚拟化,就是RAID2.0,我们可以对不同的资源做成不同的资源池,可以采用不同的分配策略,为上层提供服务。这里我们采用了存储资源池化的技术,这是有接管。我们采用了资源池化的技术解决了SSD的故障问题,SSD的寿命问题。采用了资源池化的方式,我们才能避免多块盘同时损坏,可以很好地适应SSD的故障模型,在这里可能很多人都忽略了一点,SSD的故障跟HDD有很大的差异,因为各家的厂商不一样,你需要做大量的实验。HDD很难用局部模型算到RAID里面去,但SSD不一样。这个时候可以在故障处理方面有大量的优化,使得它的性能可以很高,当一块盘子坏了以后,对Flash RAID来讲恢复的时间可以变化,盘越多,恢复的速度快,时间会越短。
多核,NVMe SSD性能高了以后,IO的瓶颈在CPU端。实践了以后发现,比我们想象的更为严重。以前很少有人可以拿四块盘,但是如果做了这样的实践后发现,四块盘同时跑,加了存储软件以后性能发挥不出来。我们提出了很多的创新技术,无锁的生产者消费者模型,无锁的流控,这与多核CPU匹配起来,能够很好地使性能达到可扩展性。Flash RAID的性能可以使CPU个数线性扩张,CPU越多,我的性能会越高。CPU是物理的CPU,而不是说逻辑的CPU,逻辑的CPU不一定对性能有很好的帮助。
全局的磨损。磨损的技术在SSD不是大量的采用,在SSD主要就是做颗粒之间的使用。但是在系统的层面,我们做SSD层面磨损均衡。磨损均衡,就是延长SSD的使用寿命,避免SSD同时发生故障。因为在这里每一个SSD所写入的数据量是固定的,如果说所有的盘在一个RAID有相同的数据量,很有可能会同时发生故障,这在以前的很多测试里面遇到过。
智能数据恢复技术,以前我们讲数据重构,就是坏了一盘你就技术重构。但是在我们的Flash RAID里面不是采用这样的,面向物理盘的重构,而是面向数据的重构,并且在面向数据的时候,对数据进行分类。冷热数据分层,我认为在未来就可以,这跟介质相关。因为在磁盘上你要用这样的技术,你的性能会很差的,磁盘有抖动,你的性能会变的很差。但是在SSD上,这个问题是不存在的,或者说是好了很多,随机读写性能会非常之高,所以这样的技术得以应用。
冷热数据分层技术,通过我们现在的测试,数据局部性很强的应用里面,这样的技术很有价值,因为在数据局部性很强的应用里面采用冷社如据分层以后的性能和全闪存的性能相差不多的。数据重构有关系。发生故障的时候,我的系统里肯定会有重构,或者说数据迁移。在这个时候业务的性能肯定会受到一定的影响。可以做SAN存储,集群提供分布式的服务,很多人可能会想到。选材,设计和施工、验证,质量的保证在设计的阶段,然后才是施工,施工就是实现的手段,最后强调的是验证。有了这样的科学体系以后,我们才可以尽快地把一个庞杂的系统收敛,并且发布高效的存储系统,高可靠的存储系统。
观众问:公有云的盘如何?
吴忠杰:我认为就是低成本的,性能稍微有一点低的盘,就是这样的存储介质。Flash RAID最后一级可以做到公有云,把存储在Flash RAID里面的数据迁移到公有云,很多的存储系统已经有了这样的技术。分层有一点很重要的,它不是缓存,分层和缓存是有差别的。分层强调了冷数据迁到了廉价的介质上。