一种闪存存储阵列的实现方法及装置
技术领域
本发明涉及数据存储技术领域,特别是涉及一种具有横向扩展能力的高性能闪存存储阵列的实现方法及装置。
背景技术
随着半导体技术的发展,闪存的存储密度越来越高,和机械磁盘相比,闪存(NandFlash)具有更快的随机访问速度,尤其是随机读访问速度,以及更低的功耗。和DRAM(Dynamic Random Access Memory,动态随机存取存储器)相比,闪存能够在电源关闭后长期保持数据,并且具有更高的存储密度,这些特性使得以闪存作为存储介质的存储阵列在高性能应用环境,如高IOPS(Input/OutputOperations Per Second)、高带宽(Bandwidth)、低延迟(Latency)中得到广泛应用。
但是,现有的闪存存储阵列是以现成的通用硬件为基础,以软件为中心的实现方式,如图1所示,通用硬件由两个或者多个控制器和一个闪存机柜构成,闪存机柜由多个通用的闪存盘构成,每个闪存盘提供基本的数据存储服务,控制器由接口模块、计算模块和内存模块构成,接口模块完成和前端网络以及和闪存机柜的接口连接,计算模块完成接口协议解析、应用服务提供等计算任务,是软件的主要承载模块,内存模块为计算模块提供高速缓存支持。在这种实现方式中,每一次的来自前端的IO操作请求,都要经过计算模块,需要软件进行多次的计算、调度等操作,增加了IO延迟,不能发挥闪存的高性能。
图2是另一种闪存阵列架构示意图,但它与前述图1所示的现有技术类似,不能或不便提供具有横向扩展能力的大容量、高性能闪存阵列。
以上背景技术内容的公开仅用于辅助理解本发明的发明构思及技术方案,其并不必然属于本专利申请的现有技术,在没有明确的证据表明上述内容在本专利申请的申请日已经公开的情况下,上述背景技术不应当用于评价本申请的新颖性和创造性。
发明内容
本发明目的之一在于提出一种闪存存储阵列装置,以解决上述现有技术存在的不能充分发挥闪存的性能及闪存存储阵列不具有横向扩展能力的技术问题。
为此,本发明提出一种闪存存储阵列装置,包括IO加速模块、服务计算模块、闪存组模块和管理模块;所述IO加速模块,用于对来自前端的数据包及数据申请包进行解析加速并发送给服务计算模块;所述服务计算模块用于执行服务软件程序,并与所述闪存组模块直接进行数据交互;所述闪存组模块用于提供读、写和擦除等基本功能,并提供无需额外内存的数据服务;所述管理模块,用于执行该闪存存储阵列的控制功能和监控功能。
优选地,本发明还可以具有如下技术特征:
所述IO加速模块还用于完成服务质量控制并发送给服务计算模块。
所述服务计算模块还用于数据服务的计算及闪存组资源的管理。
所述IO加速模块包括前端接口单元、协议加速单元、消息加速单元和/或服务质量控制单元和后端接口单元,所述前端接口单元是该闪存存储阵列对外数据输入输出的接口单元,所述协议加速单元用于执行相关协议的数据包的解析加速,所述消息加速单元,用于执行特定消息解析的加速;所述服务质量控制单元用于根据消息中的身份信息执行相应的服务质量策略;所述后端接口单元用于分发所解析出来的数据包及特定消息至服务计算模块。
所述服务计算模块包括高速接口单元、通用计算资源单元、专用计算资源单元和内存资源单元,所述高速接口单元用于连接所述IO加速单元和所述闪存组单元;所述通用计算资源单元执行服务软件程序和闪存资源管理程序(例如FTL);所述专用计算资源单元执行特定的数据计算,所述内存资源单元用于为所述高速接口单元、通用计算资源单元、专用计算资源单元提供缓存。
所述通用计算资源单元和专用计算资源单元采用分布式并行计算方式。
所述内存资源以及闪存组采用分布式资源池的组织方式。
所述闪存组模块包括闪存芯片及其闪存控制器。
所述IO加速模块和服务计算模块的互连采用交换结构。
所述IO加速模块、服务计算模块、闪存组模块和管理模块均为两个以上,每一个IO加速模块均可分别与两个以上所述服务计算模块同时进行交互,两个以上所述IO加速模块亦可同时与两个以上所述服务计算模块同时进行交互,每一个服务计算模块亦可同时与两个以上闪存组模块同时进行交互。
本发明还提出一种闪存存储阵列的实现方法,包括IO加速模块、服务计算模块、闪存组模块和管理模块,通过所述IO加速模块对来自前端的数据包及数据申请包进行解析加速并与服务计算模块进行数据交互,并且完成服务质量控制;所述服务计算模块用于执行服务软件程序、数据服务的计算及闪存组资源管理,并与所述闪存组模块直接进行数据交互;所述闪存组模块提供读、写和擦除等功能,并提供无需额外内存的数据服务计算;通过所述管理模块执行该闪存存储阵列的控制功能和监控功能。
优选的,所述服务计算模块以分布式并行计算方式执行数据服务计算,并可进一步以分布式内存资源池架构方式进行数据的存放。
进一步优选的,所述IO加速模块、服务计算模块、闪存组模块和管理模块均为两个以上,每一个IO加速模块均可分别与两个以上所述服务计算模块同时进行交互,两个以上所述IO加速模块亦可同时与两个以上所述服务计算模块同时进行交互,每一个服务计算模块亦可同时与两个以上闪存组模块同时进行交互。
本发明与现有技术对比的有益效果包括:采用本发明的IO加速模块、服务计算模块、闪存组模块和管理模块的配置方式,减少了IO路径上的操作,缩短了IO延迟,从而可以更加有效的利用闪存的特性,并通过交换结构有效解决了所有闪存盘共享控制器和闪存机柜之间接口带宽的问题,发挥闪存的性能;而且,由于解除了FTL软件层和闪存控制器的紧耦合关系,故可以灵活的、增/减闪存组模块;同时采用了分布式并行计算和分布式资源池架构,本发明给出的闪存存储阵列具有横向扩展能力。
附图说明
图1是一个现有技术的闪存存储阵列的结构框图(以通用硬件为基础);
图2是另一个现有技术的闪存存储阵列的结构框图;
图3是本发明具体实施方式一的结构框图;
图4是图3中IO加速模块的结构框图;
图5是图3中服务计算模块的结构框图;
图6是图3中闪存组模块的结构框图;
图7是本发明中分布式并行计算架构的工作流程示意图;
图8是一个具体实施例中简化的服务计算模块写操作工作流程示意图。
具体实施方式
首先介绍本发明的发明构思如下:
发明人经过大量的研究发现,如图1、2所示的现有技术的架构中,闪存存储阵列虽然能够提供比机械硬盘阵列更高的性能,但依然不能充分发挥闪存的性能潜力,原因有以下几个方面:
1)控制模块和闪存机柜的互连接口是共享式而非交换式的,即控制器并不能直接和每个闪存盘独享连接带宽,而是和所有的闪存盘共享接口带宽,因此接口带宽就第一个限制了整个闪存阵列对外的整体性能。
2)所有的服务计算(例如去重、压缩等)都集中在控制器的计算模块上,计算模块本身的能力有限,在有限的时间内能够完成的服务是有限的,不能够满足闪存机柜中所有闪存盘服务计算的要求,这是又一个限制整个闪存阵列整体性能的因素。
3)不能够随着闪存机柜的扩容而扩展,即整个闪存阵列的性能并不能够随着闪存盘的增加而线性增加,完全受限于控制器。
4)多个控制器内的内存作为闪存机柜的缓存使用时,需要在多个控制器之间做数据一致性的同步维护,增加了软件消耗及复杂度,降低了性能。
下面结合具体实施方式并对照附图对本发明作进一步详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
参照以下附图1-8,将描述非限制性和非排他性的实施例,其中相同的附图标记表示相同的部件,除非另外特别说明。
实施例一:
如图3所示,本实施例的闪存存储阵列装置包括:IO加速模块102、服务计算模块103、闪存组模块104和管理模块101;所述IO加速模块102,用于对来自前端的数据包及数据申请包进行解析加速、完成服务质量控制并发送给服务计算模块103;所述服务计算模块103用于执行服务软件程序、数据服务的计算及闪存资源管理(例如FTL),并与所述闪存组模块104直接进行数据交互;所述闪存组模块104用于提供读、写和擦除等基本功能,并提供无需额外内存的数据服务;所述管理模块101,用于执行该闪存存储阵列的控制功能和监控功能。各个模块之间的互连优选通过高速串行总线(SERDES)完成,例如:管理模块101采用的是通用的处理器及电路板,通过PCIE总线协议和IO加速模块连接在一起,IO加速模块102和服务计算模块103、服务计算模块103和闪存组模块104之间通过自定义协议完成互连。所述服务质量控制指的是根据服务质量要求设定,满足不同的服务质量需求。
如图4所示,所述IO加速模块102包括前端接口单元、协议加速单元、消息加速单元、服务质量控制单元和后端接口单元。所述前端接口单元是该闪存存储阵列对外数据输入输出的接口单元,支持网络接口,FC接口,iSCSI接口等。所述协议加速单元用于执行相关协议的数据包(例如TCP报文)的解析加速,可通过硬件逻辑电路(如依托FPGA实现的TCP/IP offload Engine,但不限于此,只要能够实现TCP/IP减负引擎的功能即可)实现。所述消息加速单元,用于执行私有消息的解析加速,可通过硬件逻辑电路(如依托FPGA)实现,该硬件逻辑电路功能可包括但不限于:1)硬件计算整个消息的CRC校验,检验消息的完整性;2)解析出读、写、删除等操作类型、数据长度以及数据地址等,产生相应的硬件行为,如是读操作,则根据数据地址准备相应的硬件操作描述指令(例如将读请求发送到相应的服务计算模块);如是写操作,则根据数据地址将数据发送给相应的服务计算模块并准备相应的硬件操作描述指令(例如将写请求发送到相应的服务计算模块)。所述私有消息可为由消息包头、消息数据和消息包尾三部分组成的特定消息,消息包头包括消息类型(读、写、删除等)、数据长度及数据地址等,消息数据仅包括数据本身,消息包尾包括状态信息和整个私有消息包的CRC校验信息等。所述服务质量控制单元用于根据消息包头中的身份信息完成相应的服务质量控制策略,所述服务质量策略可以是保证最低IOPS要求,也可以是限制最高IOPS要求,也可以是保证最低带宽要求,也可以是限制最高带宽要求等。所述后端接口单元用于分发所解析出来的数据包及特定消息至服务计算模块。所述IO加速模块102最终通过定制化的硬件,直接将来自前端的数据包及数据申请包解析出来,并且发送给服务计算模块,可大大减少软件参与。
如图5所示,所述服务计算模块103包括高速接口单元、通用计算资源单元401、专用计算资源单元403和内存资源单元402。所述高速接口单元用于连接所述IO加速单元和所述闪存组单元;所述通用计算资源单元401执行服务软件程序、数据服务的计算及闪存资源管理,如FTL软件的运行等;所述专用计算资源单元403执行特定的数据计算,例如计算数据包的哈希值等,可通过特定的硬件电路完成;所述内存资源单元402用于为所述高速接口单元、通用计算资源单元401、专用计算资源单元403提供缓存。所述服务计算模块103因将闪存资源管理(例如FTL)和数据服务计算结合在一起,故能够更加有效的利用闪存特性,发挥闪存性能。所述服务软件程序包括压缩管理、去重管理、数据打包等,数据服务计算指的是去重、压缩的部分计算,闪存组资源管理指的是FTL软件。
如图6所示,闪存组模块主要由闪存控制器和闪存芯片构成,提供基本的闪存读、写、擦除等功能,以及简单的不需要额外内存的数据服务(例如加密计算、闪存数据搬移等),并设有高速接口单元。因为没有复杂的服务,闪存组模块不需要内存。这样的设计,可简化闪存组的功能,即仅提供基本的不需要大量数据暂存的功能,因而不需要内存。
本实施例中,所述IO加速模块和服务计算模块的互连优选采用交换结构(Switching fabric)。IO加速模块和服务计算模块之间的交换结构,可使两者之间的数据交互不再受到传统闪存机柜串行接口带宽的限制,这是因为:每个IO接口模块都可以同时和多个服务计算模块进行数据交流,同时多个IO加速模块可以同时和多个服务计算模块同时进行数据交互,克服了现有架构中控制模块和闪存机柜之间受限于共享互连接口的问题。本发明给出的架构,由于采用了交换结构的互连架构,可以做到多个IO加速模块同时和多个计算加速模块同时进行数据交互,故大大提升了整个闪存阵列的性能,而现有技术的闪存阵列采用的是控制器节点加商用闪存机柜的形式,只能采用简单的转发(Hub)结构,不利于整个闪存阵列的性能发挥。
所述通用计算资源单元401和专用计算资源单元403优选采用分布式并行计算方式。分布式服务计算是指把一个需要巨大计算能力才能提供的数据服务分成许多小的部分,然后把这些部分分配给多个服务计算资源进行处理,最后把每个服务计算资源的计算结果综合起来,得到最终的结果。并行服务计算就是指同时使用多个计算资源提供复杂数据服务的过程。本实施例给出的服务计算模块中的计算资源(包括通用计算资源401和专用计算资源403)就是实施分布式并行服务计算的基本计算资源,把来自于前端的数据服务(例如去重、压缩)请求并行的分发到各个服务计算模块的计算资源上,以此完成具体数据请求服务的分布式并行计算。
简化的数据服务计算工作流程图如图7所示,当来自于前端的多个数据服务请求(例如去重,压缩)到达存储阵列的多个IO加速模块时,每个IO加速模块首先完成协议信息(例如TCP/IP协议)解析步骤601的工作,即通过硬件完成协议解析以及消息解析,解析出数据包以及相对应的操作要求,接着完成服务质量控制。然后完成数据包及操作分发步骤602的工作,将这些数据包和相对应的操作分发到相对应的多个服务计算模块,在分发之前,可根据需要进行数据包及相对应操作的分割。最后,多个服务计算模块完成服务计算步骤603对应的具体的数据服务计算工作。多个服务计算模块形成的分布式并行计算架构的优点包括:
1)具体的数据服务由多个服务计算模块并行执行,能够提供高性能。
2)整个闪存存储阵列的服务计算能力能够方便的进行横向扩展,并且是随着闪存容量的扩展而线性扩展。
3)服务计算模块和最终的数据存储模块(闪存组)直接相连,减少了数据服务计算时存取数据的延迟,提高了性能。
如图8所示,是一个具体实施例中简化的服务计算模块写操作工作流程示意图,而实际应用根据具体的实施例对其中的步骤进行增加或者减少。如步骤810所示,服务计算模块首先被动的接收来自于IO加速模块的写数据及控制指令(例如是否开启去重服务),然后进入到步骤802,即将数据放入到内存缓存中,如果内存缓存中已经存放有对应地址的数据,则直接覆盖原来的数据,如果内存缓存中没有对应地址的数据,则在内存缓存中新申请一块空间,将数据存放到新申请的空间。步骤803,判断内存缓存中预留的空闲的内存空间的大小,如果预留内存空间大小低于预先设置的阈值,则会触发将内存缓存中的部分数据写入闪存组的操作(可称之为落盘操作)。在落盘过程中,首先经过步骤804和805完成数据去重服务,步骤804中专用计算单元完成数据指纹(HASH值)的计算,并查表确定当前数据是否是重复数据,并且将查表结果(是否是重复数据,如果是重复数据,和哪块数据重复)通知到通用计算单元。接着,步骤805根据专用计算单元的结果,更新映射表中相应的内容(例如映射关系,引用计数值等)。然后,经过步骤806和步骤807完成数据压缩服务。步骤806,专用计算单元完成数据压缩,产生压缩后的数据,并且将多组压缩后的数据的相对存放位置通知到通用计算单元。接着是步骤807,通用计算单元再更新映射表,最终完成IO计算模块发过来的数据存放位置和数据在闪存组中具体的存放位置之间的映射。最后是步骤808,通用计算单元按照更新后的映射表,将经过去重和压缩后的数据送往相应的闪存组模块。
服务计算模块读操作工作流程相对简单,简单描述如下:根据读地址,先在内存缓存中查找,如果内存缓存中有对应地址的数据,则直接返回数据,如果内存缓存中没有对应地址的数据,则通用计算单元根据映射表从闪存组模块中读取对应地址的数据,放入内存缓存,并返回给IO加速模块。
本实施例中,还采用了分布式资源池架构(分布式资源池架构由分布式内存资源单元和分布式闪存组模块构成),以内存缓存为例,在逻辑上,各个IO加速模块看到的内存缓存(即内存资源402)是一个整体,但是在物理结构上,内存缓存是分布在各个服务计算模块之中的,当数据到来时,IO加速模块经过判断,直接将数据存放到和最终存储这些数据的闪存组模块相连接的服务计算模块的内存资源402中。分布式内存架构的优点包括:
1)因为内存缓存都是分布在服务计算模块之中,天然去除了现有存储阵列多控制器之前内存缓存数据一致性的问题,从而消除了由于保证内存缓存数据一致性导致的性能损耗。
2)内存的容量是能够随着闪存容量线性增加,保证内存的性能。
3)数据包直接进入和闪存组模块相邻的分布式内存,避免了数据包的多次移动,提高了性能。
本实施例的整个架构还具有以下优点:
1)整个架构中没有强中心节点,避免了现有闪存存储阵列架构中性能受限于控制器的问题。
2)通过专有的IO加速模块,对IO路径上的协议(例如TCP/IP协议)和私有消息进行硬件解析,并且直接将解析后的数据包分发到服务计算模块,可最小化IO路径上的模块,从而进一步提高性能。
此外,本实施例中,所述IO加速模块、服务计算模块、闪存组模块和管理模块中至少一者可以是两个以上。或者,所述IO加速模块、服务计算模块、闪存组模块和管理模块均为两个以上,每一个IO加速模块均可分别与两个以上所述服务计算模块同时进行交互,两个以上所述IO加速模块亦可同时与两个以上所述服务计算模块同时进行交互,每一个服务计算模块亦可同时与两个以上闪存组模块同时进行交互。譬如,一个具体的实现方式中,包含两个管理模块,四个IO加速模块,三十个服务计算模块和一百二十个闪存组模块。管理模块是通用的x86计算模块,主要硬件构成是x86 CPU及相关接口,每个管理模块是一块单独的印刷电路板。IO加速模块主要部件是FPGA,也可以是专用的ASIC,通过FPGA实现定制的逻辑电路,完成TCP/IP协议加速、私有消息加速、服务质量控制等功能。每个IO加速模块优选是一块单独的印刷电路板。服务计算模块的主要硬件构成包括FPGA(也可以是专用的ASIC)和DRAM,FPGA中包含ARM通用计算处理器,以及可以实现专用计算的逻辑资源。每个服务计算模块优选是一块单独的印刷电路板。闪存组模块的主要硬件是FPGA(也可以是专用的ASIC)和闪存芯片,FPGA实现闪存芯片控制器的功能,例如操作时序的产生,纠错码(ECC)功能等。每一个闪存组模块优选是一块单独的印刷电路板。每个管理模块通过PCIE总线和两个IO加速模块连接,每个IO加速模块都和三十个服务计算模块通过自定义总线连接,每个服务计算模块通过自定义总线连接四个闪存组模块。所有具体的连接线优选都在一块作为底板(也可以是中间板midplane或者背板backplane)的大印刷电路板上实现。所有模块优选都通过接插件插接在所述底板上,实现各个模块之间的连接。
此外,作为一个变形,所述服务计算模块和四个闪存组模块可实现在一块印刷电路板上。
本实施例的闪存存储阵列装置的工作过程简述如下:
来自于前端的数据读/写操作通过TCP/IP网络到达IO加速模块,IO加速模块中的前端接口单元将接收到的电信号或者光信号转换为逻辑信号;IO加速模块中的协议加速单元进行硬件解析TCP/IP协议、提取数据及私有消息,并将内容传递给消息加速单元;IO加速模块中的消息加速单元执行硬件解析消息内容的工作,并且根据需要对数据进行合并或者拆分,生成相应的控制指令及状态信息,并且决定将数据及相关控制指令送到哪些服务计算模块,即把数据放到分布式内存的那些内存缓存中,让那些分布式计算资源完成计算工作;IO加速模块中的服务质量控制单元根据消息包头中的身份信息完成相应的服务质量控制策略,服务质量策略可以是保证最低IOPS要求,也可以是限制最高IOPS要求,也可以是保证最低带宽要求,也可以是限制最高带宽要求等。IO加速模块中的后端接口单元根据指示将数据包和控制指令发送到具体的服务计算模块。服务计算模块完成具体的服务计算工作,例如:计算数据的HASH值,根据数据的HASH值完成数据去重服务,对数据进行压缩,完成数据压缩服务等,并且根据统计闪存组的损耗情况,合理安排数据的存放位置,做到损耗均衡;以及计算搜集闪存组垃圾数据情况,完成垃圾回收等FTL工作。最后,服务计算模块决定将哪些数据从内存缓存中取出来送往闪存组模块,或者将哪些数据从闪存组模块取出来放到内存缓存中。闪存组模块完成来自服务计算模块的数据写入、数据读取和数据擦除、数据搬移等相关请求。
本发明中服务计算模块和闪存组模块的结构设计及相互间的数据交互方式,与现有闪存存储阵列的闪存盘相比,解除了FTL软件层和闪存控制器的紧耦合,这样一来,可以灵活的、增/减闪存组模块。同时将FTL层和数据服务计算结合起来,能够更加有效的利用闪存特性,发挥闪存性能。
实施例二:
一种闪存存储阵列的实现方法,其采用的闪存存储阵列包括IO加速模块、服务计算模块、闪存组模块和管理模块,实现方法为:
通过所述IO加速模块对来自前端的数据包及数据申请包进行解析加速、完成服务质量控制并与服务计算模块进行数据交互。所述服务计算模块执行服务软件程序、数据服务的计算及闪存组资源管理(例如FTL);且所述服务计算模块优选以分布式并行计算方式执行数据计算,并以分布式资源池架构方式进行数据的存放。所述闪存组模块提供读、写和擦除等功能,并提供无需额外内存的数据服务计算。通过所述管理模块执行该闪存存储阵列的控制功能和监控功能。
本较佳实施例中,所述IO加速模块、服务计算模块、闪存组模块和管理模块均为两个以上,每一个IO加速模块均可分别与两个以上所述服务计算模块同时进行交互,两个以上所述IO加速模块亦可同时与两个以上所述服务计算模块同时进行交互,每一个服务计算模块亦可同时与两个以上闪存组模块同时进行交互。
值得说明的是,本实施例的闪存存储阵列的实现方法,可以采用与前述实施例一相同的闪存存储阵列装置,也可采用不同的闪存存储阵列装置,只要其IO加速模块、服务计算模块、闪存组模块和管理模块能够分别完成前述的功能即可。
本领域技术人员将认识到,对以上描述做出众多变通是可能的,所以实施例仅是用来描述一个或多个特定实施方式。
以上内容是结合具体的/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施例做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。