来自存储老吴的博客--存储之道
闪存技术的发展使得其成本下降、容量增加,越来越多的企业级用户也都在考虑如何将闪存SSD技术应用到自己的环境中去,从而解决性能、功耗、体积等存储常见问题。前几年闪存技术主要在互联网领域得到了大量应用,其主要原因在于互联网需要面临大量的访问IO压力,传统的磁盘存储系统无法提供高IOPS的能力,所以,只能借助闪存的高性能来解决互联网发展过程中的难题。所以,今天闪存在互联网领域已经得到大量应用,并成为其标配。
在闪存应用的过程中,PCIe接口在存储上的应用起到了巨大的成功。特别是最近几年符合NVMe接口标准的SSD推出,更是加速了闪存SSD的应用。去年Intel推出了符合NVMe标准的2.5寸SSD盘;今年国内的Memblaze也推出了符合NVMe1.1标准的2.5寸SSD盘和卡。可以说这种2.5寸SSD盘的推出为闪存在企业级应用扫清了障碍。2.5寸盘具有热插拔的特性,并且具备企业级双端口的属性。在NVMe闪存盘落地的同时,服务器厂商也在大力支持NVMe,从去年到今年,很多服务器厂商推出的产品都会支持NVMe接口,普遍一些2U服务器中会支持4个左右的NVMe盘。超微推出的1U服务器可以支持10盘位满配NVMe SSD。标准的NVMe盘有了,支持NVMe的服务器有了,那么现在问题来了,如何在这些服务器中将这么多的NVMe盘用起来呢?
很多朋友在面临这个问题的时候会想将传统架构在磁盘存储介质上的软件系统直接运行在NVMe SSD上。由于NVMe SSD在系统中仍然表现为一个普通的块设备,所以,传统软件想在NVMe SSD直接运行起来是没有难度的。但是,我们需要知道传统的这些存储软件是面向磁盘介质进行设计,他考虑了磁盘介质的问题,例如随机访问能力差,顺序访问能力不错。针对磁盘介质的这些特征,开发了传统的存储软件。和磁盘相比,NVMe SSD是完全不同的,他没有磁盘存储中所遇到的问题,但是他具有自己独特的问题。因此,如果将传统存储软件直接架构在NVMe SSD上,那么就好比庸医乱开药,原来的病没有治好,又惹出了新的问题。因此,在NVMe服务器平台上,我们不能直接、简单的采用现有针对磁盘存储的软件来解决NVMe SSD数据可靠性、卷管理等棘手的问题,需要另辟蹊径。
就拿数据保护来说,在NVMe SSD平台上到底该如何来做呢?传统的解决方案存在哪些问题呢?未来的技术方向在哪里呢?存储老吴给你一一道来。
在磁盘存储时代,通常采用RAID技术来进行数据保护,互联网的多副本可以理解成RAID1及其扩展。RAID技术通常可以分为软RAID和硬RAID两大类。硬RAID是通过硬件的手段来实现。在RAID技术发展之初,有采用FPGA方式来实现RAID控制器,当年Xinlix推出的FPGA中集成了XOR单元来支持开发RAID控制器;也有厂商直接开发ASIC来订制、加速RAID性能。当然用的最为普遍的还是Intel的IOP处理器,以及现在LSI ROC等SOC技术。从中我们也可以悟出,真正一个有生命力的产品架构是简单,并且软件才是IT产品的核心。
硬RAID是一个基于PCI/PCIe总线的接口卡,卡上扩展SATA接口,并且在SOC中运行RAID固件程序。整个硬RAID的核心技术是固件程序以及SOC芯片。硬RAID是很多存储的标配,他具有很强的普适性。除了硬RAID技术之外,很多厂商会开发软RAID,例如EMC等存储大厂都会拥有自己的软RAID技术。软RAID是运行在主机端的数据保护软件,通过软RAID可以基本达到与硬RAID相同的数据保护作用,但是没有硬RAID那么强的普适性。在十年前,CPU性能远不如现在,所以采用软RAID技术之后,导致CPU会参与数据的编解码工作,从而影响性能。所以,在很久以前硬RAID都是高性能的代表。但是,今非昔比,如今Intel CPU已经非常强大,对于处理软RAID这种数据编解码已经不在话下,更何况还有AVX、SSE等加速指令集的支持。因此,如今软RAID的性能一点都不逊色,甚至超越硬RAID的性能。
不管是软RAID还是硬RAID技术在磁盘存储时代发展的一直都很好,除了和RAID本身架构相关的数据重构之外。在正常使用的时候,RAID本身还是可以接受的,因为主要的性能瓶颈点在于磁盘本身。所以,从研发角度来看,那个时代大量的工作还是在优化IO Pattern,使其满足磁盘存储的需求。
时代进入闪存存储之后,SSD如果直接接入传统RAID系统,我们暂且不考虑传统RAID对SSD本身造成的一些问题,就从性能的角度来看,传统RAID都成为了系统的瓶颈点。一个普通的SSD盘,不管是SATA还是NVMe接口,其随机读性能轻松就达到了10万IOPS,那么多块盘聚合之后性能轻松就达到了50万以上。在这种性能压力下,一个普通的硬RAID如何将这种性能发挥出来?对于一个NVMe SSD盘,其单盘度性能就达到了70万IOPS以上,如果采用5块NVMe SSD组建一个RAID,那么如何将随机读性能发挥到300万以上?采用硬RAID现实吗?如果要实现这样的性能,那么我们需要重新设计RAID SOC控制器,至少需要一个多核高性能处理器来实现这个SOC。假设一个核可以处理50万IOPS,那么这个SOC至少需要6个这样的核。这还没有考虑软件层面引入的性能损耗,要知道RAID软件系统的耦合性是很强的,将多核性能发挥到极致是很难的。此外,要达到300万IOPS性能,带宽达到了12GB/s以上,一个PCIe3.0X16刚刚达到要求。所以,从硬件的角度来看,短期内实现这样的商用硬RAID是不现实的。目前在市场上,很多人也就采用硬RAID对性能相对较低的SATA SSD进行数据保护。
对于NVMe SSD,采用硬RAID无望的情况下,只能考虑采用数据保护软件的方式增强系统数据可靠性。这实际是符合客观规律的,CPU的发展趋势是多核化,NVMe SSD的操作主要是IO密集型操作,非常符合多核发展思路。利用多核技术可以并发处理IO请求,从而可以发挥闪存的性能优势。所以,存储老吴认为在Intel X86服务器平台下,充分利用多核技术,针对闪存的特性为NVMe SSD打造数据保护软件系统是未来存储技术发展的趋势。