SSD上如何进行数据保护?

来自存储老吴的博客--存储之道服务器

 

闪存技术的发展使得其成本降低、容量增长,愈来愈多的企业级用户也都在考虑如何将闪存SSD技术应用到本身的环境中去,从而解决性能、功耗、体积等存储常见问题。前几年闪存技术主要在互联网领域获得了大量应用,其主要缘由在于互联网须要面临大量的访问IO压力,传统的磁盘存储系统没法提供高IOPS的能力,因此,只能借助闪存的高性能来解决互联网发展过程当中的难题。因此,今天闪存在互联网领域已经获得大量应用,并成为其标配。架构

 

在闪存应用的过程当中,PCIe接口在存储上的应用起到了巨大的成功。特别是最近几年符合NVMe接口标准的SSD推出,更是加速了闪存SSD的应用。去年Intel推出了符合NVMe标准的2.5SSD盘;今年国内的Memblaze也推出了符合NVMe1.1标准的2.5SSD盘和卡。能够说这种2.5SSD盘的推出为闪存在企业级应用扫清了障碍。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数据可靠性、卷管理等棘手的问题,须要另辟蹊径。ide

 

就拿数据保护来讲,在NVMe SSD平台上到底该如何来作呢?传统的解决方案存在哪些问题呢?将来的技术方向在哪里呢?存储老吴给你一一道来。性能

 

在磁盘存储时代,一般采用RAID技术来进行数据保护,互联网的多副本能够理解成RAID1及其扩展。RAID技术一般能够分为软RAID和硬RAID两大类。硬RAID是经过硬件的手段来实现。在RAID技术发展之初,有采用FPGA方式来实现RAID控制器,当年Xinlix推出的FPGA中集成了XOR单元来支持开发RAID控制器;也有厂商直接开发ASIC来订制、加速RAID性能。固然用的最为广泛的仍是IntelIOP处理器,以及如今LSI ROCSOC技术。从中咱们也能够悟出,真正一个有生命力的产品架构是简单,而且软件才是IT产品的核心。优化

wKiom1W2Xi-iyDmbAACllXLqcmc566.jpg

RAID是一个基于PCI/PCIe总线的接口卡,卡上扩展SATA接口,而且在SOC中运行RAID固件程序。整个硬RAID的核心技术是固件程序以及SOC芯片。硬RAID是不少存储的标配,他具备很强的普适性。除了硬RAID技术以外,不少厂商会开发软RAID,例如EMC等存储大厂都会拥有本身的软RAID技术。软RAID是运行在主机端的数据保护软件,经过软RAID能够基本达到与硬RAID相同的数据保护做用,可是没有硬RAID那么强的普适性。在十年前,CPU性能远不如如今,因此采用软RAID技术以后,致使CPU会参与数据的编解码工做,从而影响性能。因此,在好久之前硬RAID都是高性能的表明。可是,今非昔比,现在Intel CPU已经很是强大,对于处理软RAID这种数据编解码已经不在话下,更况且还有AVXSSE等加速指令集的支持。所以,现在软RAID的性能一点都不逊色,甚至超越硬RAID的性能。spa

 

不论是软RAID仍是硬RAID技术在磁盘存储时代发展的一直都很好,除了和RAID自己架构相关的数据重构以外。在正常使用的时候,RAID自己仍是能够接受的,由于主要的性能瓶颈点在于磁盘自己。因此,从研发角度来看,那个时代大量的工做仍是在优化IO Pattern,使其知足磁盘存储的需求。设计

 

时代进入闪存存储以后,SSD若是直接接入传统RAID系统,咱们暂且不考虑传统RAIDSSD自己形成的一些问题,就从性能的角度来看,传统RAID都成为了系统的瓶颈点。一个普通的SSD盘,不论是SATA仍是NVMe接口,其随机读性能轻松就达到了10IOPS,那么多块盘聚合以后性能轻松就达到了50万以上。在这种性能压力下,一个普通的硬RAID如何将这种性能发挥出来?对于一个NVMe SSD盘,其单盘度性能就达到了70IOPS以上,若是采用5NVMe SSD组建一个RAID,那么如何将随机读性能发挥到300万以上?采用硬RAID现实吗?若是要实现这样的性能,那么咱们须要从新设计RAID SOC控制器,至少须要一个多核高性能处理器来实现这个SOC。假设一个核能够处理50IOPS,那么这个SOC至少须要6个这样的核。这尚未考虑软件层面引入的性能损耗,要知道RAID软件系统的耦合性是很强的,将多核性能发挥到极致是很难的。此外,要达到300IOPS性能,带宽达到了12GB/s以上,一个PCIe3.0X16刚刚达到要求。因此,从硬件的角度来看,短时间内实现这样的商用硬RAID是不现实的。目前在市场上,不少人也就采用硬RAID对性能相对较低的SATA SSD进行数据保护。3d

 

对于NVMe SSD,采用硬RAID无望的状况下,只能考虑采用数据保护软件的方式加强系统数据可靠性。这实际是符合客观规律的,CPU的发展趋势是多核化,NVMe SSD的操做主要是IO密集型操做,很是符合多核发展思路。利用多核技术能够并发处理IO请求,从而能够发挥闪存的性能优点。因此,存储老吴认为在Intel X86服务器平台下,充分利用多核技术,针对闪存的特性为NVMe SSD打造数据保护软件系统是将来存储技术发展的趋势。blog