掌桥专利:专业的专利平台
掌桥专利
首页

用以进行全快闪存储器阵列伺服器的数据存取管理的方法与设备

文献发布时间:2023-06-19 12:27:31


用以进行全快闪存储器阵列伺服器的数据存取管理的方法与设备

技术领域

本发明有关于存储器控制,尤指一种用以进行全快闪存储器阵列(All FlashArray,简称AFA)伺服器的数据存取管理的方法以及相关设备(apparatus)诸如AFA伺服器及其控制电路等。

背景技术

数据储存伺服器可以被设置为储存一个或多个用户的用户数据,并且在现有技术中已经提出了针对数据储存伺服器的各种控制方法,以便给用户带来良好的用户体验。由于非挥发性(Non-Volatile,NV)存储器诸如快闪存储器已经被广泛应用于各种数据储存装置诸如固态硬碟(solid state drive,SSD)等,现有技术中提出将数据储存伺服器用NV存储器作为其储存介质的非挥发性(NV)存储器类型数据储存伺服器来实现,例如其中安装有多个SSD的AFA伺服器。但是,可能会出现某些问题。例如,存取该多个SSD中的任一SSD的快闪存储器的管理会很复杂。为了确保这个SSD中的快闪存储器的存取控制符合相关规范,这个SSD中的快闪存储器的控制器通常配备有某些管理机制以妥善地管理其内部操作。虽然SSD制造商可能试着使SSD看起来像是替代硬式磁碟机(HDD)的不错的解决方案,但是SSD的某些特性与HDD完全不同。如此一来,上述控制方法对于安装有多个SSD的AFA伺服器可能变得不适合或无效,进而导致AFA伺服器的整体效能下降。因此,需要以在没有副作用或较不会带来副作用的情况下提供一种新颖的方法和相关的架构来解决这些问题。

发明内容

本发明之一目的在于提供一种用以进行全快闪存储器阵列(All Flash Array,简称AFA)伺服器的数据存取管理的方法与相关设备(例如AFA伺服器及其控制电路等),以解决上述的问题。

本发明之另一目的在于提供一种用以进行AFA伺服器的数据存取管理的方法与相关设备(例如AFA伺服器及其控制电路等),以保护AFA伺服器中的数据。

本发明一实施例揭示了一种用以进行一AFA伺服器的数据存取管理的方法,该方法包含:利用在该全快闪存储器阵列伺服器的多个节点(node)的一第一节点上运行的多个程序模块中的一中间层程序模块上方的一上层程序模块来检测是否接收到来自用户的一客户端装置(client device)的任何请求,其中包含一写入请求的至少一请求已被接收到;因应(根据)该写入请求,利用该中间层程序模块透过该第一节点和一第二节点之间的至少一通信路径将对应于该写入请求的数据镜像(mirror)到该多个节点中的该第二节点,其中该数据从该第一节点的一第一挥发性存储器镜像至该第二节点的一第二挥发性存储器;以及在该中间层程序模块将该数据刷新(flush)到于该多个程序模块中的该中间层程序模块下方的一下层程序模块之前,因应该数据从该第一节点的该第一挥发性存储器镜像到该第二节点的该第二挥发性存储器,利用该中间层程序模块透过该上层程序模块向该客户端装置发送对应于该写入请求的一确认(Acknowledgement,Ack),而且无需检查该数据是否在该多个节点中的任何一个中的任何非挥发性存储器中受到保护。

本发明一实施例揭示了一种AFA伺服器,包含:多个节点以及复数个固态硬碟(solid state drive,SSD),该多个节点,包含:一第一节点以及一第二节点,该第一节点,包含:至少一处理器,用以在一第一组程序模块的控制下控制该第一节点的操作;以及一第一挥发性存储器,用以为该第一节点暂时储存信息,该第二节点,包含:至少一处理器,用以在一第二组程序模块的控制下控制该第二节点的操作,其中该第二组程序模块分别与该第一组程序模块相同;以及一第二挥发性存储器,用以为该第二节点暂时储存信息,该复数个SSD包含:一第一SSD群组,对应于该第一节点;以及一第二SSD群组,对应于该第二节点,其中,在该第一节点上运行的该第一组程序模块中的一中间层程序模块上方的一上层程序模块检测是否接收到来自用户的一客户端装置的任何请求,其中包含一写入请求的至少一请求已被接收到;因应该写入请求,该中间层程序模块透过该第一节点和该第二节点之间的至少一通信路径将对应于该写入请求的数据镜像(mirror)到该第二节点,其中该数据从该第一节点的该第一挥发性存储器镜像至该第二节点的该第二挥发性存储器;以及在该中间层程序模块将该数据刷新(flush)到于该第一组程序模块中的该中间层程序模块下方的一下层程序模块之前,因应该数据从该第一节点的该第一挥发性存储器镜像到该第二节点的该第二挥发性存储器,该中间层程序模块透过该上层程序模块向该客户端装置发送对应于该写入请求的一确认(Acknowledgement,Ack),而且无需检查该数据是否在该多个节点中的任何一个中的任何非挥发性存储器中受到保护。

本发明的方法和相关设备(例如AFA伺服器及其控制电路等)可以提高整体效能,并依据该方法的多种控制方案保护数据,另外,本发明的方法和相关设备可以在没有副作用或较不会带来副作用的情况下解决现有技术的问题。

附图说明

图1是依据本发明一实施例的一全快闪存储器阵列(All Flash Array,简称AFA)伺服器的示意图。

图2是依据本发明一实施例中如图1所示的该AFA伺服器的某些实施细节的示意图。

图3是依据本发明一实施例所绘示的如图1所示的该AFA伺服器的一双节点架构的示意图。

图4是依据本发明一实施例所绘示的如图1所示的多个节点的任一节点中的某些程序模块的示意图。

图5是依据本发明一实施例所绘示的一种用以进行一AFA伺服器诸如图1所示的AFA伺服器的数据存取管理的方法的一写入控制方案的示意图。

图6是依据本发明一实施例的针对图5所示的该写入控制方案的流程图。

图7是依据本发明一实施例所绘示的用以进行该AFA伺服器的数据存取管理的方法的多个重映射(remapping)控制方案的示意图,其中该AFA伺服器可具备在不同名称空间的地址之间的某些重映射层。

图8是依据本发明一实施例所绘示的用以进行该AFA伺服器的数据存取管理的方法的一数据缩减控制方案的示意图。

图9是依据本发明一实施例所绘示的用以进行该AFA伺服器的数据存取管理的方法中的某些映射关系和相关管理信息的示意图。

图10是依据本发明一实施例的针对用以进行该AFA伺服器的数据存取管理的方法的一读取控制方案的流程图。

图11是依据本发明另一实施例的针对用以进行该AFA伺服器的数据存取管理的方法的一写入控制方案的流程图。

【符号说明】

10A,10B:机架顶(TOR)交换机

12A,12B:固态硬碟(SSD)群组

100:全快闪存储器阵列(AFA)伺服器

100A,100B:节点

100S:固态硬碟(SSD)

100R:背板电路

110A,110B:处理器

112:程序模块

112A,112B:程序模块

120A,120B:动态随机存取存储器(DRAM)

122A,122B:复制到快闪存储器(C2F)固态硬碟(SSD)

130A,130B:网络接口(IF)模块

132A,132B,134A,134B:网络接口(IF)电路

140A,140B:非透明网桥(NTB)通信电路

150A,150B:主机板管理控制器(BMC)

152A,152B:暂存器电路

160A,160B:储存接口(IF)模块

162A,162B,164A,164B:储存接口(IF)电路

170A,170B:备用电源单元

S01~S11,S20~S32,S40~S44,S50~S56:步骤

具体实施方式

图1是依据本发明一实施例的一全快闪存储器阵列(All Flash Array,简称AFA)伺服器100的示意图。AFA伺服器100可以包含多个节点,诸如二节点,分别为节点100A和节点100B,其中该多个节点中的任一个(例如节点100A和节点100B的其中一个)可以具有与该多个节点中的另一个(例如节点100A和节点100B中的另一个)相同或相似的架构。例如,节点100A可包含可以被统称为处理器110A的至少一处理器(例如,一个或多个处理器诸如一个或多个中央处理单元(Central Processing Units.CPU)),并包含一动态随机存取存储器(Dynamic Random Access Memory,DRAM)120A、一复制到快闪存储器(Copy-to-Flash,简称C2F)固态硬碟(Solid State Drive,简称SSD)122A、包含有一个或多个网络接口(interface,IF)电路诸如网络接口电路132A和134A(分别标示为“网络IF CKT”以求简明)的一网络接口(IF)模块130A、一非透明网桥(Non-Transparent Bridge,简称NTB)模块(或NTB)诸如一NTB通信电路140A(标示为“NTB CKT”以求简明)、一主机板管理控制器(BoardManagement Controller,简称BMC)150A、一暂存器(register)电路152A(标示为“REG CKT”以求简明)其耦接至BMC 150A、一储存接口(IF)模块160A其包含一个或多个储存接口电路诸如储存接口电路162A和164A(分别标示为“储存IF CKT”以求简明)以及一备用电源诸如一备用电源单元170A(例如,电池),其中这些组件的至少一部分(例如,一部分或全部)可以藉由节点100A的总线彼此耦接,但本发明不限于此。依据某些实施例,节点100A的架构可以作不同变化。

相似地,节点100B可包含可以统称为处理器110B的至少一处理器(例如,一个或多个处理器诸如一个或多个CPU),并包含一DRAM 120B、一C2F SSD 122B、包含有一个或多个网络接口(IF)电路诸如网络接口电路132B和134B(分别标示为「Network IF CKT」以求简明)的一网络接口(IF)模块130B、一NTB模块(或NTB)诸如一NTB通信电路140B标示为“NTBCKT”以求简明)、一BMC 150B、一暂存器电路152B(标示为“Register CKT”以求简明)其耦接至BMC 150B、一储存接口(IF)模块160B其包含一个或多个储存接口电路诸如储存接口电路162B和164B(分别标示为“Storage IF CKT”」以求简明)以及一备用电源诸如一备用电源单元170B(例如,电池),其中这些组件的至少一部分(例如,一部分或全部)可以藉由节点100B的总线彼此耦接,但本发明不限于此。依据某些实施例,节点100B的架构可以作不同变化。

如图1所示,AFA伺服器100可以还包含耦接到节点100A和100B的多个SSD,诸如一SSD群组12A和一SSD群组12B,SSD群组12A和12B可以耦接到节点100A和100B,且可以预设分别连接/连线(link)到节点100A和100B,其中节点100A和100B与SSD群组12B和12A之间的虚线可指出多个可选的(optional)连线。举例来说,节点100A可以利用储存接口模块160A以启动储存接口电路164A和SSD群组12A之间的连线,以存取SSD群组12A中的数据,且节点100B可以利用储存接口模块160B启动储存接口电路164B和SSD群组12B之间的连线,以进一步存取SSD群组12B中的数据。当需要时,节点100A和100B与SSD群组12A和12B之间的连线关系可以改变。例如节点100A可以利用储存接口模块160A来启动储存接口电路162A和SSD群组12B之间的连线,以存取SSD群组12B中的数据,且节点100B可以利用储存接口模块160B来启动储存接口电路162B和SSD群组12A之间的连线,以存取SSD群组12A中的数据。

运行着程序模块112A的处理器110A可用以控制节点100A的操作。DRAM120A可用以缓冲数据(例如待写入SSD群组12A的数据),并且C2F SSD 122A可用以将DRAM 120A中的缓冲后数据(简称“缓冲数据”)复制到C2F SSD 122A中的快闪存储器中,以在需要时防止缓冲数据的数据遗失(data loss)。举例来说,C2F SSD 122A可以藉由安装在节点100A内的主电路板(例如主机板或母板)上的一扩充卡诸如一M.2模块(例如具有符合M.2规范的连接器的电路板)来实现,其中C2F SSD 122A可以包含一储存控制器、一个或多个快闪存储器晶片等,但本发明不限于此。另外,包含有网络接口电路132A和134A的网络接口模块130A可用以将节点100A(例如该主电路板上的处理器110A、DRAM 120A等)藉由至少一网络交换机诸如机架顶(top-of-rack,可简称TOR)交换机10A和10B耦接到至少一网络(例如区域网络(Local Area Network,LAN)、广域网络(Wide Area Network,WAN)、网际网络(Internet)等)。另外,包含储存接口电路162A和164A的储存接口模块160A可用以将节点100A(例如该主电路板上的处理器110A、DRAM 120A等)耦接到多个快闪储存装置(例如节点100A和100B共享的SSD群组12A和12B),用以存取(例如读取或写入)该多个快闪储存装置中的数据。如此一来,AFA伺服器100可用以藉由节点100A提供用户储存服务。

相似地,运行着程序模块112B的处理器110B可用以控制节点100B的操作。DRAM120B可用以缓冲数据(例如待写入SSD群组12B的数据),并且C2F SSD122B可用以将DRAM120B中的缓冲后数据(简称“缓冲数据”)复制到C2F SSD122B中的快闪存储器中,以在需要时防止缓冲数据的数据遗失。举例来说,C2F SSD 122B可以藉由安装在节点100B内的主电路板(例如主机板或母板)上的一扩充卡诸如一M.2模块(例如具有符合M.2规范的连接器的电路板)来实现,其中C2F SSD 122B可以包含一储存控制器、一个或多个快闪存储器晶片等,但本发明不限于此。另外,包含有网络电路132B和134B的网络接口模块130B可用以将节点100B(例如该主电路板上的处理器110B、DRAM 120B等)藉由至少一网络交换机诸如TOR交换机10A和10B耦接到至少一网络(例如LAN、WAN、网际网络等)。另外,包含储存接口电路162B和164B的储存接口模块160B可用以将节点100B(例如该主电路板上的处理器110B、DRAM 120B等)耦接到多个快闪储存装置(例如节点100A和100B共享的SSD群组12A和12B),用以存取(例如读取或写入)该多个快闪储存装置中的数据。如此一来,AFA伺服器100可用以藉由节点100B提供用户储存服务。

关于节点100A及其对等(peer)节点(例如节点100B)之间的通信,该NTB模块(例如NTB通信电路140A)可用以藉由在节点100A和100B之间的一NTB路径(标示为“NTB”以求简明)与对应的NTB模块(例如NTB通信电路140B)通信,使节点100A和100B的数据和储存状态同步,并进一步使它们相同。相似地,关于节点100B及其对等节点(例如节点100A)之间的通信,该NTB模块(例如NTB通信电路140B)可用以藉由在节点100A和100B之间的该NTB路径(标示为“NTB”以求简明)与对应的NTB模块(例如NTB通信电路140A)通信,使节点100A和100B的数据和储存状态同步,并进一步使它们相同。尤其,诸如NTB通信电路140A和140B的NTB模块可以提供节点100A和100B之间一传输桥的功能以及分离节点100A和100B的各自的地址域以使节点100A和100B分别有彼此独立的地址域,以在没有任何地址冲突的情况下提供/加强节点100A和100B之间的通信。例如,节点100A和100B的各个总线可以符合快捷外设组件互联(Peripheral Component Interconnect Express,PCIe)标准,并且节点100A和100B中的每一节点的NTB模块可以被认为是该节点的一端点(endpoint),其中节点100A和100B可以透过该传输桥彼此通信和共享装置,但本发明不限于此。依据某些实施例,诸如NTB通信电路140A和140B的NTB模块可以透过客制化的网络接口电路来实现,以控制节点100A和100B彼此通信,使得它们就像正在透过网络接口电路进行通信一样。

在运行着程序模块112A的处理器110A和运行着程序模块112B的处理器110B的控制下,节点100A和100B可维持和监视NTB上的脉搏,以确定对等节点的可用性,以进行高可用性(High Availability,HA)控制。举例来说,节点100B可用以向节点100A发送脉搏信号,且节点100A可用以检测并监视来自节点100B的脉搏信号以确定节点100B的可用性,其中来自节点100B的脉搏信号是否存在可以指出节点100B是否可用(或健康程度)。对于另一个例子来说,节点100A可用以向节点100B发送脉搏信号,并且节点100B可用以检测并监视来自节点100A的脉搏信号以确定节点100A的可用性,其中来自节点100A的脉搏信号是否存在可以指出节点100A是否可用(或健康程度)。依据图1所示的架构,如图1所示,当节点100A和100B其中一个不可使用时,节点100A和100B其中的另一个可以继续为用户提供AFA伺服器100的储存服务。

需注意的是,AFA伺服器100配备了超过一个的节点间(inter-node)通信路径(例如节点之间的超过一个的相互通信路径)。除NTB路径外,AFA伺服器100还可配置为具有一个或多个其他通信路径,例如BMC 150A和150B之间的一BMC路径,其中BMC 150A可用以管理节点100A的硬体层的至少一部分(例如一部分或全部),而BMC 150B可用以管理节点100B的硬体层的至少一部分(例如一部分或全部)。关于节点100A及其对等节点(例如节点100B)之间的通信,BMC 150A可用以透过该BMC路径与BMC 150B通信以存取(例如读取或写入)暂存器电路152B中的一个或多个暂存器的一个或多个暂存器值,以在节点100B上进行状态检查操作等。相似地,关于节点100B及其对等节点(例如节点100A)之间的通信,BMC 150B可用以透过该BMC路径与BMC 150A通信以存取(例如读取或写入)暂存器电路152A中一个或多个暂存器的一个或多个暂存器值,以在节点100A上进行状态检查操作等。尤其,BMC 150A与BMC150B可独立地管理节点100A与100B的各自的硬体层,而不需要仰赖处理器110A与110B。举例来说,当处理器110A发生故障时,BMC 150A可以处理节点100A的未完成的工作,而当处理器110B发生故障时,BMC 150B可以处理节点100B的未完成的工作,但本发明不限于此。依据某些实施例,BMC 150A和150B可用以分别接管(take over)节点100A和100B,以进行紧急处理操作来减少数据遗失的机率。

依据本实施例,AFA伺服器100可以被配置为由多种类型的电源供电。节点100A和100B的每一节点可以包括至少一主电源(例如至少一电源供应器),用以于主电源处于正常电源状况下提供电力给该节点的其他组件。举例来说,节点100A的主电源可以供电给节点100A的主电路板,并且节点100B的主电源可以供电给节点100B的主电路板。当检测到一个或多个节点(例如节点100A及/或节点100B)的异常电源状况时,AFA伺服器100中的一个或多个相关的备用电源(例如备用电源单元170A及/或备用电源单元170B)可用以提供备用电力。举例来说,当节点100A的主电源发生电源故障时,备用电源单元170A可以供电给节点100A的主电路板(例如处理器110A、DRAM 120A、C2F SSD 122A、NTB通信电路140A、BMC150A、暂存器电路152A等),当节点100B的主电源发生电源故障时,备用电源单元170B可以供电给节点100B的主电路板(例如处理器110B、DRAM 120B、C2F SSD 122B、NTB通信电路140B、BMC150B、暂存器电路152B等)。

依据某些实施例,节点100A和100B的每一节点(例如节点100A和100B的各自的主电路板中的每一节点)可以还包含多个感测器(sensor)/检测器(detector)用以至少对该节点的组件进行检测以产生检测结果(例如从这些传感器/检测器中的任一个所获得的状态信息)。举例来说,这些检测结果中的一功率检测结果可以表示该节点的主电源的功率状态,尤其,可以指出该节点是否发生异常电源状况,以供触发该节点启动备用电源(例如备用电源单元170A或备用电源单元170B)以提供备用电力。

图2依据本发明一实施例绘示图1所示的AFA伺服器100的某些实施细节,其中,可以将SSD 100S作为图1所示实施例中提到的多个SSD的例子。除了节点100A和100B以及SSD100S,AFA伺服器100可还包含一背板(backplane)电路100R。背板电路100R可用以将诸如SSD群组12A和12B的SSD 100S电气连接到节点100A和100B。举例来说,背板电路100R可以藉由具有相关连接器等的背板电路板来实现。另外,可以在背板电路100R内实现NTB通信电路140A和140B之间的该NTB路径的局部(partial)路径,以及BMC 150A和150B之间的该BMC路径的局部路径。由于该BMC路径和该NTB路径中的每一路径都不通过可能易于损坏的任何电缆,所以节点100A和100B之间的通信路径很稳健,且因此节点100A和100B可以保持有效的通信以及相关的控制,以确保AFA伺服器100的整体效能及正常运行。

依据某些实施例,SSD 100S中的每一SSD可以是一单埠(single port)SSD,尤其,可以是一单埠的基于装置的(device-based)SSD。另外,藉助于背板电路100R,AFA伺服器100可以支援SSD 100S中的每一SSD的热插拔。

依据某些实施例,两个节点100A和100B中的一个可以在AFA伺服器100的高可用性(High Availability简称HA)架构中用来作为一现用节点(active node),也就是扮演该现用节点的角色,并且两个节点100A和100B中的另一个可在AFA伺服器100的该HA架构中用来作为一待命节点(standby node),也就是扮演该待命节点的角色。诸如现用节点和待命节点的两个节点100A和100B可以彼此互动,尤其,可以藉由至少两条通信路径(诸如NTB通信电路140A和140B之间的NTB路径以及BMC 150A和150B之间的BMC路径)来交换节点信息,并且可以藉由NTB路径来同步数据,但本发明不限于此。依据某些实施例,AFA伺服器100可以配备有超过两个的节点间(inter-node)通信路径(例如节点之间的超过两个的相互通信路径)。

图3是依据本发明一实施例所绘示的如图1所示的AFA伺服器100的一双节点架构的示意图。依据本实施例,节点100A和100B可以被分别配置为该现用节点和该待命节点,但本发明不限于此。举例来说,节点100A和100B可以在需要时交换它们所扮演的角色。如图3所示,除了某些硬体(hardware,HW)组件诸如图1或图2所示的架构中的部分组件外,还可绘示某些软件(software,SW)程序/程序,例如HA框架程序、网络(Web)伺服器程序、数据库(database)程序、操作于一服务模式的储存控制模块程序以及操作于一待机模式的储存控制模块程序(分别标示为“HA框架”、“Web伺服器”、“数据库”、“于服务模式下的储存控制模块”以及“于待机模式下的储存控制模块”以求简明)以指出AFA伺服器100中的关联互动,其中,上述程序的名称分别代表其相关功能。

运行于节点100A上的软件程序(例如,HA框架程序,Web伺服器程序,数据库程序和操作于该服务模式的储存控制模块程序)可作为程序模块112A的例子,并且运行于节点100B上的软件程序(例如,HA框架程序,Web伺服器程序,数据库程序和操作于该待机模式的储存控制模块程序)可作为程序模块112B的例子,但本发明不限于此。另外,网络接口模块130A的该一个或多个网络接口电路可还包含网络接口电路136A,并且网络接口模块130B的该一个或多个网络接口电路可还包含网络接口电路136B。因此,AFA伺服器100可以配备有至少三个节点间(inter-node)通信路径(例如节点之间的至少三个相互通信路径),诸如NTB路径、BMC路径以及网络接口电路136A和136B之间的网络路径。举例来说,节点100A和100B可用以藉由NTB路径进行快取镜像(cache mirroring)操作,并透过BMC路径检查本地/远端控制器状态,以及藉由网络接口电路136A和136B之间的网络路径进行额外的通信操作。

图4是依据本发明一实施例所绘示的如图1所示的多个节点100A与100B的任一(例如每一)节点中的程序模块112的示意图。例如,程序模块112可以代表运行在节点100A的处理器110A上的程序模块112A或运行在节点100B的处理器110B上的程序模块112B。如图4所示,程序模块112可以包含某些主程序模块,例如储存协定及区块输入/输出(IO)接口模块、储存快取模块、储存池模块、储存服务连续HA模块、储存功能模块以及储存管理模块(分别标示为“储存协定及区块IO接口”软体、“储存快取”、“储存池”、“储存服务连续HA”、“储存功能”以及“储存管理”以求简明),其中这些主程序模块中的任一程序模块可以包括一个或多个子模块。另外,程序模块112中的某些程序模块之间的箭头指出这些程序模块可以彼此在各自所属的多个层的程序模块之间互动。举例来说,储存协定及区块IO接口模块可以被视为储存快取模块上方的一上层(例如一上层程序模块),储存池模块可以被视为储存快取模块下方一下层(例如一下层程序模块),储存功能模块和储存快取模块可被安排在一中间层以作为中间层程序模块,其中储存协定及区块IO接口模块以及储存池模块可用以与客户端装置和SSD群组互动,但本发明不限于此。当需要时,该节点可以触发其他程序模块与这些程序模块中的一个或多个进行互动。

储存协定及区块IO接口模块可以包含某些子模块诸如小型计算机系统接口(Small Computer System Interface,简称SCSI)模块、网际网络SCSI(Internet SCSI,简称iSCSI)模块和区块装置(Block Device)模块(分别标示为“SCSI”、“iSCSI”和“区块装置”以求简明)。储存快取模块可以包含某些子模块诸如使用软件实现的永久存储器(Persistent Memory using SW implementation)模块和写入缓冲模块(Write Buffermodule;也可称为“写入缓冲器模块”),于图中分别标示为“永久存储器(软件实现)”和“写入缓冲”以求简明。储存池模块可以包含一子模块诸如快闪存储器阵列(Flash Array)模块(为简便起见标示为“快闪存储器阵列”)。储存服务连续HA模块可以包含一子模块诸如HA框架模块(标示为“HA框架”以求简明)。储存功能模块可以包含某些子模块诸如卷管理器(Volume Manager)模块和数据减少模块(分别标示为“卷管理器”和“数据减少”以求简明),其中数据减少模块可以包含某些子模块诸如压缩引擎(Compression Engine)模块和重复数据删除引擎(Deduplication Engine)模块,可以分别称为“压缩引擎”和“重复数据删除引擎”。储存管理模块可以包含某些子模块诸如网络(Web)用户界面(User Interface,UI)模块、应用程序编程接口(Application Programming Interface,API)伺服器模块、请求代理(Request Broker)模块和数据库模块(分别标示为“网络UI”、“API伺服器”、“请求代理”和“数据库”以求简明)。上列模块的名称分别指出其相关功能。为了便于理解,对某一模块诸如卷管理器模块、压缩引擎模块、重复数据删除引擎模块等而言,某些实施例中所提到的咨询(consult)该模块的操作可包含对这个模块进行呼叫、查询等操作以从它取得对应的处理结果,但本发明不限于此。

依据某些实施例,AFA伺服器100(例如,该现用节点,诸如节点100A和100B的其中之一)可用以从AFA伺服器100外部的客户端装置接收请求诸如写入请求、读取请求等,并分别因应这些请求来操作。

图5是依据本发明一实施例所绘示的一种用以进行一AFA伺服器诸如图1所示的AFA伺服器100的数据存取管理的方法的一写入控制方案的示意图。该方法可以应用于图1所示的AFA伺服器100。为了更好地理解,节点100A和100B可以分别用来作为该现用节点和该待命节点,尤其分别扮演该现用节点和该待命节点的角色,但本发明不限于此。因应写入请求,现用节点(例如节点100A和100B的其中之一,诸如在本实施例中的节点100A)可以利用写入缓冲模块来接收对应于写入请求的数据(例如4千位元组(kilobytes,KB)数据,可称为“4KB数据”以求简明),并在步骤S01中将该数据写入(例如缓冲)至其写入缓冲器(例如该节点的DRAM)中,且于步骤S02中藉由NTB路径将该数据诸如4KB数据镜像到待命节点(例如节点100A和100B中的另一个,诸如在本实施例中的节点100B),并且于步骤S03中对用户的客户端装置发送与写入请求相对应的一确认(acknowledgement,Ack)。由于数据已被镜像到远端侧(例如在本实施例中的DRAM 120B),所以镜像的数据由待命节点(例如其写入缓冲模块)所保护。

针对现用节点的后续操作,在步骤S04中,对于每一4KB数据查询(query),写入缓冲模块可以使用卷管理器模块来为该数据获取或分配(allocate)一储存池逻辑区块地址(storage pool logical block address,SLBA)。在步骤S05中,写入缓冲模块可以咨询重复数据删除引擎以对该数据进行重复数据删除功能。在步骤S06中,写入缓冲模块可以咨询压缩引擎以对数据进行压缩功能。在步骤S07中,当该DRAM(例如本实施例中的DRAM 120A)中的缓冲数据(例如待写入的数据)的数据量达到预定临界值时,例如,现用节点已经收集了N组压缩数据,并且该N组压缩数据的总数据量适合被储存为一全条带(full stripe),现用节点可以利用快闪记体阵列模块将该N组压缩数据(可以称为N个压缩数据以求简明)聚合(aggregate)成该全条带。举例来说,该全条带可以表示包含预定数量的组块(chunk)(例如十二个组块)的一条带,其中这些组块可以包含一第一预定数量的数据组块(例如十个数据组块)和一第二预定数量的奇偶校验组块(例如两个奇偶校验组块)。在步骤S08中,在收集一个或多个条带诸如一预定数量的条带(例如:一个条带、两个条带、三个条带、四个条带等例子中的任一者,可依据于该方法中的各种控制方案来决定)之后,现用节点可以利用写入缓冲模块将阵列信息诸如一SLBA阵列(SLBA所组成的阵列)、一压缩数据阵列(压缩数据所组成的阵列)等(例如该SLBA阵列与该压缩数据阵列所组成的一阵列:{SLBA阵列,压缩数据阵列})提交给快闪存储器阵列模块(或储存池模块),以供编写(尤其,写入)该一个或多个条带。在步骤S09中,快闪存储器阵列模块可以对各个碟(例如,现用节点的SSD群组,诸如本实施例中的SSD群组12A)进行条带写入操作。举例来说,由于该压缩引擎已在步骤S06中进行了压缩功能,因此4KB空间包含多个SLBA的各自的压缩数据。

在进行如图5所示的步骤S01至S09的操作之后,现用节点可以将相关的管理信息发送到待命节点以更新待命节点中的管理信息,以使待命节点在需要时能够替换现用节点以继续为用户提供AFA伺服器100的储存服务。举例来说,在步骤S10中,现用节点的卷管理器模块可以将卷管理器模块的重映射表同步(例如更新和发送)到待命节点存储器(例如待命节点的存储器),以控制(例如产生、更新等)由卷管理器模块所管理的某些映射关系。在步骤S11中,现用节点的快闪存储器阵列模块可以向待命节点快闪存储器阵列(例如待命节点的快闪存储器阵列模块)发出重映射表更新指令,以将快闪存储器阵列模块的重映射表更新至待命节点存储器(例如待命节点的存储器),以控制(例如产生、更新等)由快闪存储器阵列模块所管理的某些映射关系。如上所述,现用节点能够因应写入请求来进行这些操作;现用节点还能够因应读取请求来进行相关操作以复原(recover)该数据,举例来说,依据分别由卷管理器模块和快闪存储器阵列模块所管理的映射关系,其中,在后续的某些实施例中将描述针对管理这些映射关系的某些实施细节。

如图5的上半部所示,藉助于软件模拟,节点100A和100B中的任一节点(例如,每一节点)可以包含基于该多个节点中的另一个节点的一模拟永久存储器(emulatedpersistent memory;也可以称为PMem以求简明),其中PMem可以操作在NTB路径上,且因此可被视为基于NTB的PMem。举例来说,该任一节点诸如节点100A可以扮演现用节点的角色,而另一节点诸如节点100B可以扮演待命节点的角色。当现用节点的主电源的电源故障发生(例如节点100A和100B各自的主电源这两者的电源故障都发生)时,现用节点可以将其DRAM中的现有信息(例如:缓冲数据、管理表等)刷新到内部非挥发性存储器(Non-VolatileMemory简称NVM)储存装置(例如:现用节点的C2F SSD,诸如本实施例中的C2F SSD 122A)和PMem这两者。尤其,由于这些节点中的每一节点都配备有自己的内部NVM储存装置和PMem,待命节点可以将其DRAM中的刷新自现用节点的现有信息(例如,刷新自现用节点的缓冲数据、管理表等)刷新到内部NVM储存装置(例如:待命节点的C2F SSD,诸如本实施例中的C2FSSD 122B)中。

对于现用节点,虽然基于NTB的PMem中的DRAM 120A和120B是挥发性存储器,AFA伺服器100可以藉助于软件模拟将基于NTB的PMem利用作为永久存储器,这是因为在其写入缓冲模块控制下操作的待命节点可以保护刷新自现用节点的任何现有信息。当发生电源故障时,现用节点可以将其DRAM中的现有信息刷新到内部NVM储存装置诸如符合M.2规范的多个NVM储存装置的其中之一当中,且藉由将现有信息通过NTB路径发送到待命节点的DRAM,可以将其DRAM(现用节点本身的DRAM)中的现有信息刷新到PMem中。如此一来,待命节点可以将其DRAM中的现有信息刷新到其内部NVM储存装置(例如,符合M.2规范的多个NVM储存装置的其中之一)当中。

依据某些实施例,节点100A和100B可以从现用节点和待命节点的角色互相交换,并且可以进行如上所述的关于节点100B和100A的相对应的操作。为了简明起见,于这些实施例中类似的内容在此不重复赘述。

图6是依据本发明一实施例的针对第5图所示的该写入控制方案的流程图。为了更好地理解,节点100A和100B可以分别用来作为该现用节点和该待命节点,尤其分别扮演该现用节点和该待命节点的角色,但本发明不限于此。

在步骤S20中,现用节点(例如:节点100A和100B的其中之一,诸如本实施例中的节点100A)可以利用储存协定及区块IO接口模块来检测是否接收到任何请求诸如写入请求。如果是,进入步骤S21;如果否,重新进入步骤S20。

在步骤S21中,因应写入请求,现用节点可以利用写入缓冲模块来接收与写入请求相对应的数据(例如4KB数据),并将该数据写入(例如缓冲)到数据缓冲器诸如该节点的DRAM(标示为“写入”以求简明)。

在步骤S22中,现用节点可以利用写入缓冲模块藉由NTB路径将该数据诸如4KB数据镜像到待命节点(例如:节点100A和100B中的另一个,诸如在本实施例中的节点100B)(标示为「镜像到远端」以求简明)。

在步骤S23中,现用节点可以利用写入缓冲模块将对应于写入请求的一确认(acknowledgement,Ack)发送给用户的客户端装置,举例来说,藉由上层程序模块诸如储存协定及区块IO接口模块。

在步骤S24中,对于每一4KB数据查询,写入缓冲模块可以使用卷管理器模块来获取或分配该数据的SLBA。

在步骤S25中,写入缓冲模块可以咨询重复数据删除引擎以选择性地对数据进行重复数据删除功能。举例来说,如果步骤S21中提到的数据存在于现用节点的SSD群组中,则需要进行重复数据删除的操作;否则,不需要进行重复数据删除的操作。

在步骤S26中,写入缓冲模块可以咨询压缩引擎以对数据进行压缩功能。

在步骤S27中,现用节点可以利用快闪存储器阵列模块来检查缓冲数据的数据量是否适合储存为一全条带(例如:包括预定数量的组块的条带,如在图5所示的实施例中所提到的),举例来说,检查是否已经收集了N组压缩数据诸如N个压缩数据。如果是,进入步骤S28;如果否,重新进入步骤S20。

在步骤S28中,现用节点可以利用快闪存储器阵列模块将N组压缩数据诸如N个压缩数据聚合到该全条带中,尤其,在SSD群组中为该全条带分配储存空间。

在步骤S29中,现用节点可以利用写入缓冲模块将阵列信息诸如上述阵列{SLBA阵列,压缩数据阵列}交给快闪存储器阵列模块。

在步骤S30中,现用节点可以利用快闪存储器阵列模块对现用节点的SSD群组(例如本实施例中的SSD群组12A)中的各个碟进行条带写入操作,尤其,是将整个全条带写入SSD群组。举例来说,在将整个全条带写入该SSD群组之后,该全条带可以包含分别储存在该节点的该SSD群组中的某些SSD的一组数据组块和分别储存在该节点的该SSD群组中的某些其他SSD的一组奇偶校验组块,诸如分别储存在该SSD群组中的十个SSD中的十个数据组块(例如,数据组块D1、D2、…和D10)以及分别储存在该SSD群组中的两个其他SSD中两个奇偶校验组块(例如奇偶校验组块P和奇偶校验组块Q)。

在步骤S31中,现用节点可以利用卷管理器模块将卷管理器模块的重映射表同步(例如更新并发送)到待命节点的存储器,以控制(例如产生、更新等)由卷管理器模块所管理的映射关系。

在步骤S32中,现用节点可以利用快闪存储器阵列模块向待命节点的快闪存储器阵列模块发出该重映射表更新指令,以将(现用节点的)快闪存储器阵列模块的重映射表更新至待命节点的存储器,以控制(例如产生、更新等)由快闪记体阵列模块所管理的映射关系。

依据本实施例,可以用独立磁碟冗余阵列(Redundant Array of IndependentDisks,RAID)6级(RAID-6)配置来保护节点100A和100B的每一节点,其中节点100A和100B的各自的快闪存储器阵列模块可以依据RAID-6配置来进行条带写入操作或条带读取操作,但本发明不限于此。另外,在写入过程中,现用节点的快闪存储器阵列模块可以收集压缩数据以产生该组数据组块诸如十个数据组块(例如数据组块D1、D2、…和D10),并对该组数据组块进行奇偶校验计算以产生该组奇偶校验组块诸如两个奇偶校验组块(例如奇偶校验组块P和Q),并进一步将全条带的所有组块(例如,十个数据组块和两个奇偶校验组块)分别写入该SSD群组中的相关SSD(例如12个SSD)。举例来说,当该SSD群组包含12个SSD时,快闪存储器阵列模块可以将一条带写入12个SSD,以均匀地使用该SSD群组的储存空间;当该SSD群组包含24个SSD(例如(12*2)=24)时,快闪存储器阵列模块可以向这24个SSD写入两个条带(例如每12个SSD一个条带)以均匀地使用该SSD群组的储存空间;当该SSD群组包含36个SSD(例如(12*3)=36)时,快闪存储器阵列模块可以向这36个SSD写入三个条带(例如每12个SSD一个条带)以均匀地使用该SSD群组的储存空间;其余可以依此类推,但本发明不限于此。

为了更好的理解,该方法可用图6所示的工作流程来说明,但本发明不限于此。依据某些实施例,一个或多个步骤可于图6所示的工作流程中增加、删除或修改。

在后续的某些实施例中,将进一步说明诸如实现多种类型的地址、地址重新映射(remapping)、储存池、储存空间供应(provision)/池化(pooling)等进一步细节,其中“重新映射”可简称为“重映射”。举例来说,由于在不同类型的地址之间存在多层映射关系,因此该多层映射关系中的每一层可以被视为该多层映射关系中的一层重映射关系(例如重映射关系层诸如重映射层),并且这些层可以被视为转换层诸如地址转换层。

图7依据本发明一实施例绘示用以进行该AFA伺服器(例如图1所示的AFA伺服器100)的数据存取管理的方法的多重映射控制方案,其中,该AFA伺服器可以配备有不同名称空间(namespace)的地址之间的某些重映射层。尤其,在AFA伺服器100中,节点100A和100B的每一节点可以用以藉助于不同定址名称空间(addressing namespace)之间的多个重映射层来进行数据存取管理。举例来说,定址名称空间可以包含一系列装置逻辑区块地址(device logical block address,DLBA)的装置/碟(device/disk)逻辑区块定址名称空间、一系列储存池逻辑区块地址(storage spool logical block address,SLBA)的储存池逻辑区块定址名称空间以及一系列虚拟卷逻辑区块地址(virtual volume logical blockaddress,VVLBA)的虚拟卷逻辑区块定址名称空间。在这种情况下,在该节点的储存系统中可以存在带有至少两个重映射层的至少三个名称空间。另外,该多个重映射层可以包含在该系列DLBA的该装置/碟逻辑区块定址名称空间和该系列SLBA的该储存池逻辑区块定址名称空间之间的一第一重映射层,且可以还包含在该系列SLBA的该储池逻辑区块定址名称空间和该系列VVLBA的该虚拟卷逻辑区块定址名称空间之间的一第二重映射层。

如图7的左半部所示,运行在该节点上的快闪存储器阵列模块的控制下,该节点可用以进行储存空间池化操作。该节点(例如运行在其上的快闪存储器阵列模块)可以对在该装置/碟逻辑区块定址名称空间中的一对应的SSD群组(例如针对节点100A的SSD群组12A或针对节点100B的SSD群组12B)进行该储存空间池化操作,以于该储存池逻辑区块定址名称空间中产生一逻辑组合的(logically combined)储存装置诸如储存池(于图中的用以表示该逻辑组合的储存装置的圆柱体上标示为“储存池”,以便能更好地理解),以将该对应的SSD群组中的所有SSD的各自的储存空间合并为该储存池的整体储存空间。举例来说,快闪存储器阵列模块可以将一预定数量(例如12、24、36、48等)的SSD集结/群组化(group)以作为一或多个对应的独立磁碟冗余阵列(RAID)群组,尤其,可以将12/24/36/48个(12个、24个、36个或48个)快捷NVM(NVM Express,简称NVMe)SSD集结/群组化以作为1/2/3/4个(1个、2个、3个或4个)RAID-6群组,并将相应的RAID群组导出(export)为一单一虚拟碟。另外,快闪存储器阵列模块可以提供写入时重定向(redirect-on-write)RAID-6保护,这保护包含以下各项的各种操作:跨碟快闪存储器转换层(Cross-disk Flash translation layer,简称FTL),例如,将任何SLBA映射到一DLBA诸如某一储存装置(例如该SSD群组中的一SSD)的一装置标识符(identifier,简称ID)以及这个储存装置的一装置逻辑区块地址(logicalblock address,LBA)的组合(标示为「(装置ID,装置LBA)」以求简明);跨碟损耗均衡(Cross-disk wear-leveling),例如,在该SSD群组中尤其在其SSD之间进行损耗均衡;以及跨碟垃圾收集(garbage collection,简称GC),例如在SSD群组中尤其在其SSD之间进行GC。另外,快闪存储器阵列模块可以处置(handle)碟故障/移除,举例来说,当发生该SSD群组中的任何SSD的碟故障及/或碟移除时,进行错误处置(error handling)操作。

如图7的右半部所示,运行在该节点上的卷管理器模块的控制下,该节点可被配置成进行储存空间供应(provision)操作。该节点(例如,运行在其上的卷管理器模块)可以对在该储存池逻辑区块定址名称空间中的该储存池进行该储存空间供应操作,以产生多个虚拟卷(virtual volume){Vol}诸如x个虚拟卷Vol(1)至Vol(x),将该储存池的该整体储存空间的多个部分指派(assign)为该多个虚拟卷{Vol}的各自的储存空间,以供用来作为多目的及/或多个用户的各自的专用储存区域。举例来说,卷管理器模块可以灵活地将来自该储存池的空间及/或效能(例如对应于效能的储存资源)指派给不同的用户(例如:空间精简供应(space thin provision)和服务品质(quality of service,QoS)等配置)。另外,卷管理器模块可以提供虚拟卷操作,该虚拟卷操作包括各种操作诸如:创建一虚拟卷(也可以称为“卷”以求简明);产生每卷的(per-volume)写入时重定向快照(snapshot);克隆(clone)一卷;将一卷的一快照恢复(restore)成该卷;以及扩展一卷的一卷大小。

为了更好地理解,该多个虚拟卷{Vol}可被绘示为虚拟卷Vol(1)、Vol(2)、Vol(3)、Vol(4)、…、Vol(x-2)、Vol(x-1)和Vol(x)如图7所示,但本发明不限于此。另外,由该快闪存储器阵列模块和该卷管理器模块所进行的操作的某些实施细节可被绘示如图7所示,但本发明不限于此。举例来说,这些实施细节中的一个或多个可予以变化。

图8依据本发明一实施例绘示用以进行该AFA伺服器(例如图1所示的AFA伺服器100)的数据存取管理的方法的一数据缩减控制方案。在AFA伺服器100中,节点100A和100B的每一节点可被配置成藉助于前述的在不同定址名称空间之间的多个重映射层来进行重复数据删除和压缩等操作。

如图8的右半部所示,在运行于该节点上的该重复数据删除引擎的控制下,该节点可被配置成进行重复数据删除操作。该节点(例如运行于其上的重复数据删除引擎)可以在写入过程中进行该重复数据删除操作,尤其,可以在该系列SLBA的该储存池逻辑区块定址名称空间与该系列的VVLBA的该虚拟卷逻辑区块定址名称空间之间的该第二重映射层进行该重复数据删除操作。举例来说,当检测到于一特定SLBA的待写入的数据存在时,该节点的重复数据删除引擎可以藉由为该待写入的数据记录指向这个SLBA的一硬链接(hard-link)来进行该重复数据删除操作,以避免该SLBA的现有数据的数据重复(duplication),其中该节点可以产生该硬链接而不是再度将相同的数据写入该储存池。举例来说,重复数据删除引擎可以进行重复数据删除操作以管理共享相同内容的多个不同的VVLBA,诸如:VVLBAV1-LBA1(例如某一虚拟卷Vol(V1)的卷ID V1和虚拟卷Vol(V1)的LBA LBA1的组合)和VVLBAV1-LBA2(例如,虚拟卷Vol(V1)的卷ID V1和虚拟卷Vol(V1)的LBA LBA2的组合)在一SLBASLBAx上共享相同的内容(标示为“(V1-LBA1,SLBAx),(V1-LBA2,SLBAx)”以求简明);VVLBAV1-LBA3(例如虚拟卷Vol(V1)的卷ID V1和虚拟卷Vol(V1)的LBA LBA3的组合)和VVLBA V2-LBA3(例如另一个虚拟卷Vol(V2)的卷ID V2和虚拟卷Vol(V2)的LBALBA3的组合)在一SLBASLBAy上共享相同的内容(标示为“(V1-LBA3,SLBAy),(V2-LBA3,SLBAy)”以求简明);VVLBAV1-LBA4(例如虚拟卷Vol(V1)的卷ID V1和虚拟卷Vol(V1)的LBALBA4的组合)和VVLBA V2-LBA5(例如,虚拟卷Vol(V2)的卷ID V2和虚拟卷Vol(V2)的LBALBA5的组合)在一SLBASLBAz上共享相同的内容(标示为“(V1-LBA4,SLBAz),(V2-LBA5,SLBAz)”以求简明);其余可依此类推,但本发明不限于此。另外,重复数据删除引擎可以记录SLBA参考计数,例如,藉由使用共享内容的SLBA和相关SLBA参考计数的一组合的格式,如下所示:(SLBAx,2);(SLBAy,2);(SLBAz,2);(SLBA1,3);(SLBA1,100);其余可依此类推,但本发明不限于此。

如图8的左半部所示,在运行于该节点上的该压缩引擎的控制下,该节点可被配置成进行压缩操作。该节点(例如运行在其上的压缩引擎)可以在写入过程中进行该压缩操作,尤其是在该系列DLBA的该装置/碟逻辑区块定址名称空间和该系列SLBA的该储存池逻辑区块定址名称空间之间的该第一重映射层进行该压缩操作。举例来说,该压缩引擎可以将N组数据压缩为N个压缩数据,并分别记录该N个压缩数据的各自的压缩状态信息条目{{SLBA(1),DLBA(1),Start_Offset(1),Length(1)},{SLBA(2),DLBA(2),Start_Offset(2),Length(2)},…}(例如:该N个压缩数据中的第n个压缩数据的SLBASLBA(n)、DLBADLBA(n)、起始偏移量Start_Offset(n)和长度Length(n)的一组合{SLBA(n),DLBA(n),Start_Offset(n),Length(n)},其中符号“n”可以表示在区间[1,N]中的一整数),并将该N个压缩数据收集并聚合为一数据条带(data stripe),以供对该对应的SSD群组进行条带写入操作。举例来说,该压缩引擎可以控制一DLBA以持有(hold)多个SLBA,并且可以记录分别指出持有关系的压缩状态信息条目,诸如:一压缩状态信息条目,包含SLBASLBA1、DLBADLBA1、0位元组(bytes,简称B)的起始偏移量为以及100位元组的长度的组和(例如:{SLBA(1)=SLBA1,DLBA(1)=DLBA1,Start_Offset(1)=0(B),Length(1)=100(B)},标示为“(SLBA1,DLBA1,0,100B)”以求简明);一压缩状态信息条目,包含SLBA SLBA2、DLBA DLBA1、100位元组的起始偏移量以及200位元组的长度的组合(例如:{SLBA(2)=SLBA2,DLBA(2)=DLBA1,Start_Offset(2)=100(B),Length(2)=200(B)},标示为“(SLBA2,DLBA1,100B,200B)”以求简明);一压缩状态信息条目,包含SLBA SLBA100、DLBA DLBA1、300位元组的起始偏移量和1000位元组的长度的组合(例如:{SLBA(3)=SLBA100,DLBA(3)=DLBA1,Start_Offset(3)=300(B),Length(3)=1000(B)},标示为“(SLBA100,DLBA1,300B,1000B)”以求简明);其余可依此类推,但本发明不限于此。

由该重复数据删除引擎进行的该重复数据删除操作和由该压缩引擎进行的该压缩操作的某些实施细节可被绘示如图8所示,但本发明不限于此。例如,这些实施细节中的一个或多个可予以变化。

图9依据本发明一实施例绘示用以进行该AFA伺服器(例如图1所示的AFA伺服器100)的数据存取管理的方法中的某些映射关系和相关的管理信息。在AFA伺服器100中,节点100A和100B的每一节点可被配置成藉助于前述的在不同定址名称空间之间的多个重映射层来存取数据。举例来说,该系列VVLBA中的任何VVLBA可包含某一虚拟卷Vol的卷ID和虚拟卷Vol的一LBA的组合(标示为“虚拟卷的卷ID+LBA”以求简明)。

当来自客户端装置的写入请求指出需要在一VVLBA上写入一组数据时,该节点可以利用卷管理器模块来获取或分配一SLBA,并且可以于该数据的首次写入被进行的情况下,利用卷管理器模块来记录指出该VVLBA和该SLBA之间的映射关系的一VVLBA到SLBA(VVLBA-to-SLBA)映射信息条目,但本发明不限于此。举例来说,该节点可以如第8图所示的实施例中所述在写入的期间咨询重复数据删除引擎以进行重复数据删除操作,并且在重复数据删除引擎进行该重复数据删除操作以产生该硬链接之后,该节点可以利用重复数据删除引擎修改或更新这个映射关系以匹配该硬链接。另外,由于该节点可以分别接收多个写入请求并因应该多个写入请求来操作,因此该节点可以记录分别指出多个VVLBA和多个SLBA之间的多个映射关系的多个VVLBA到SLBA映射信息条目(标示为“{{VVLBA,SLBA},…}”以求简明)。举例来说,该节点可以使用该多个VVLBA到SLBA映射信息条目(例如{{VVLBA,SLBA},…})将该多个VVLBA重新映射到该多个SLBA。藉由使用该系列SLBA,该节点可以将一唯一(unique)ID指派给任何碟(例如该SSD群组的任一SSD)的任何区块。此外,该节点可以咨询压缩引擎以进行该压缩操作,并记录分别指出压缩数据的压缩状态的多个压缩状态信息条目(标示为“{SLBA,DLBA,Start_Offset,Length},…}”以求简明)诸如在图8所示的实施例中所描述的实施细节,但本发明不限于此。

为了更好地理解,在图9的最上方所示的一排(row)圆柱体和其内的某些小方框可以分别表示该多个虚拟卷{Vol}和在该多个VVLBA的数据,以及在这排圆柱体下方连续排列的一排小方框可以表示在该多个SLBA的非压缩数据,其中,通过这排圆柱体的水平线可以代表在该系列SLBA的该储存池逻辑区块定址名称空间和该系列VVLBA的该虚拟卷逻辑区块定址名称空间之间的该第二重映射层。另外,其碟ID为0、1、...和7的一组碟#0、#1、...和#7(如图9的最下方所示,用另一排圆柱体来绘示)可作为该对应的SSD群组中的一组SSD的例子,以及在它们上方的一排小方框可以表示RAID保护的压缩数据,且上述RAID保护的压缩数据具有被储存在这组碟#0至#7中的压缩数据和相关的奇偶校验码(标示为“P”和“Q”以便于理解),其储存地址例如在包含一个或多个DLBA的RAID保护的压缩DLBA(RAID ProtectedCompressed DLBA,简称RPCP_DLBA),其中,这两排小方框之间的水平线可以表示该系列DLBA的该装置/碟逻辑区块定址名称空间和该系列SLBA的该储存池逻辑区块定址名称空间之间的该第一重映射层。需注意的是,该第一重映射层可被视为一储存池转换层(storagepool translation layer,STL)。在包含这组碟#0至#7的该SSD群组中,上述定址名称空间可还包含一系列基于装置的SSD物理页面地址(physical page address简称PPA)的一基于装置的SSD物理页面定址名称空间。另外,该多个重映射层可还包含在该系列基于装置的SSD PPA的该基于装置的SSD物理页面定址名称空间和该系列DLBA的该装置/碟逻辑区块定址名称空间之间的FTL,用于在该系列DLBA与该SSD群组中的这些SSD的各自的快闪存储器的各自的PPA之间进行地址转换。

依据某些实施例,由于卷管理器模块可以产生和更新该第二重映射层的重映射表以记录分别指出该多个VVLBA和该多个SLBA之间的该多个映射关系的该多个VVLBA到SLBA映射信息条目,因此,卷管理器模块可以藉由该第二重映射层的该重映射表管理这些映射关系。在因应读取请求而在该多个VVLBA中的一VVLBA读取数据的期间,卷管理器模块可以参考该第二重映射层的该重映射表以获得与这个VVLBA相关联的SLBA。另外,由于快闪存储器阵列模块可以产生和更新该第一重映射层的重映射表以记录分别指出该多个SLBA和该多个DLBA之间的多个映射关系的多个SLBA到DLBA(SLBA-to-DLBA)映射信息条目,因此快闪存储器模块可以藉由该第一重映射层的该重映射表来管理这些映射关系。在因应该读取请求而在与这个VVLBA相关联的SLBA读取数据的期间,快闪存储器阵列模块可以参考该第一重映射层的该重映射表以获得与这个SLBA相关的DLBA。在实施(或启用)该压缩引擎的压缩功能的情况下,该多个压缩状态信息条目{{SLBA,DLBA,Start_Offset,Length},…}可作为该多个SLBA到DLBA映射信息条目的例子,其中该多个压缩状态信息条目{{SLBA,DLBA,Start_Offset,Length},…}包括该多个SLBA和该多个DLBA之间的该多个映射关系,且还包含这些压缩状态信息条目{{SLBA,DLBA,Start_Offset,Length},…}各自的压缩状态{Start_Offset,Length}。无论是否实施/启用了该压缩引擎的压缩功能,由于卷管理器模块都可以产生和更新该第二重映射层的该重映射表,并且快闪存储器阵列模块可以产生和更新该第一重映射层的该重映射表,因此该现用节点可以在读取数据的期间参考该第一重映射层的该重映射表以及该第二重映射层的该重映射表,以获得相关的映射关系且因此进一步获得数据。

图10是依据本发明一实施例的针对用以进行该AFA伺服器(例如图1所示的AFA伺服器100)的数据存取管理的方法的一读取控制方案的流程图。为了更好地理解,节点100A和100B可以分别用来作为该现用节点及该待命节点,尤其分别扮演该现用节点和该待命节点的角色,但本发明不限于此。另外,该写入缓冲模块可被配置成在写入数据的期间控制某些操作,且也可被配置成在读取数据的期间控制某些操作。举例来说,该写入缓冲模块可以在写入数据的期间触发程序模块112内的某些模块以进行图5中所示的步骤S02至S08的操作的至少一部分(例如:一部分或全部)且进行如图6所示的工作流程中的相关操作,并且可以在读取数据的期间触发程序模块112内的某些模块以进行操作。

在步骤S40中,现用节点(例如节点100A和100B的其中之一,诸如本实施例中的节点100A)可以利用储存协定及区块IO接口模块来检测是否接收到任何请求诸如读取请求。如果是,进入步骤S41;如果否,重新进入步骤S40。

在步骤S41中,因应该读取请求,现用节点可以利用快闪存储器阵列模块对现用节点的该SSD群组(例如本实施例中的SSD群组12A)中的各个碟进行条带读取,尤其,可以从该SSD群组读取至少一条带(例如:一个或多个条带)。为了更好地理解,在步骤S41中提到的该至少一条带可以是藉由第5图所示的工作流程的多次迭代(iteration)而被写入到现用节点的该SSD群组中的多个条带中的至少一个,诸如在步骤S30中已被写入该SSD群组的该全条带。

在步骤S42中,现用节点可以利用写入缓冲模块从快闪存储器阵列模块读取相关的阵列信息(例如针对该至少一条带的阵列信息)诸如上述阵列{SLBA阵列,压缩数据阵列}。

在步骤S43中,现用节点可以利用写入缓冲模块来咨询压缩引擎,以依据该相关的阵列信息(例如针对该至少一条带的阵列信息)诸如上述阵列{SLBA阵列,压缩数据阵列}对该至少一条带中的压缩数据进行解压缩操作,以获取客户端装置的读取请求所请求的数据。

在步骤S44中,现用节点可以利用写入缓冲模块(例如透过上层程序模块诸如储存协定及区块IO接口模块)将数据回传(return)给客户端装置。

依据本实施例,当写入缓冲模块向快闪存储器阵列模块提交与客户端装置的读取请求相对应的内部读取请求时,快闪存储器阵列模块可以将该至少一条带和上述阵列{SLBA阵列,压缩数据阵列}回传给写入缓冲模块,以供写入缓冲模块咨询压缩引擎来进行解压缩操作,但本发明不限于此。依据某些实施例,当写入缓冲模块向快闪存储器阵列模块提交与客户端装置的读取请求相对应的内部读取请求时,快闪存储器阵列模块可以将请求数据和对应的压缩状态信息条目{SLBA,DLBA,Start_Offset,Length}的压缩状态{Start_Offset,Length}回传给写入缓冲模块,以供写入缓冲模块咨询压缩引擎来进行解压缩操作。

为了更好的理解,该方法可用图10所示的工作流程来说明,但本发明不限于此。依据某些实施例,一个或多个步骤可于第10图所示的工作流程中增加、删除或修改骤。

针对图4所示的程序模块112的某些实施细节可以进一步描述如下。依据某些实施例,在节点100A和100B的每一节点中,储存协定及区块IO接口模块可以充当储存协定及后端IO接口,尤其,可以利用SCSI模块、iSCSI模块等以藉由某些协定诸如SCSI、iSCSI等)为用户导出(export)储存服务,其中区块装置模块可以藉由其他模块诸如储存快取模块(例如其写入缓冲模块)、储存功能模块(例如其卷管理器模块)、储存池模块(例如其快闪存储器阵列模块)等来与区块装置(例如该SSD群组的SSD)进行互动。举例来说,储存协定及区块IO接口模块可以利用储存效能开发套件(Storage Performance Development Kit,简称SPDK)来实现,并且可被配置为具有于SPDK中不存在的某些额外功能。针对这些额外功能,储存协定及区块IO接口模块可以支援视窗硬体品质实验室(Windows Hardware QualityLabs,WHQL)指令、处置SCSI中止(abort)或重置指令并且可以提供一预定的唯一标识符诸如预定的全球名称(World Wide Name,WWN),例如用于设置储存区域网络(storage areanetwork,SAN),但本发明不限于此。举例来说,虽然SPDK不允许支援两个不同协定的一个目标(target),但是配备了上述额外功能的储存协定及区块IO接口模块可以藉由SCSI模块、iSCSI模块等来管理支持不同协定诸如SCSI、iSCSI等的一个目标。另外,具有上述额外功能的储存协定及区块IO接口模块可以利用该区块装置模块来注册各种类型的区块装置模块(例如NVMe区块装置模块、存储器区块装置模块、制造商定义(manufacturer-defined)区块装置模块等),并注册相同类型的区块装置模块的多个区块装置实例(instance)(例如:NVMe区块装置模块的区块装置实例nvme0、nvme1、nvme2、nvme3等;存储器区块装置模块的区块装置实例memblk0、memblk1、memblk2等;以及制造商定义区块装置模块的区块装置实例SMIBDev1、SMIBDev2、SMIBDev3等)。此外,该区块装置模块可以将区块装置与储存协定相关联,尤其,可以使用iSCSI模块将一区块装置映射到一SCSI装置、或映射到某一iSCSI目标的一逻辑单元编号(logical unit number,简称LUN)等,但本发明不限于此。举例来说,区块装置模块可以管理不同层的装置映射操作,包含以下操作:将多个iSCSI目标的其中之一的LUN LUN1、LUN2、LUN3等映射至多个SCSI装置SCSI_Dev1、SCSI_Dev2、SCSI_Dev3等,且将SCSI装置SCSI_Dev1、SCSI_Dev2、SCSI_Dev3等映射至制造商定义区块装置SMIBDev1、SMIBDev2、SMIBDev3等,并且将制造商定义区块装置SMIBDev1,SMIBDev2,SMIBDev3等映射至由卷管理器模块所管理的虚拟卷Vol(1)、Vol(2)、Vol(3)等。

依据某些实施例,在节点100A和100B的每一节点中,储存快取模块(例如写入缓冲模块)可被配置成提供一基于环的(ring based)存储器缓冲器用于服务用户写入IO,例如待写入的数据。储存快取模块可以利用写入缓冲模块作为存储器空间管理器来管理该节点的DRAM(例如DRAM 120A和DRAM 120B的其中之一)中的一环缓冲器(ring buffer)。举例来说,写入缓冲模块可以分配用于储存用户写入IO(例如该待写入的数据)的存储器(例如该环缓冲器中的一储存区域),并且可以在将数据刷新到该节点的快闪存储器阵列(FlashArray,简称FA)(例如,在图4所示的快闪存储器阵列模块的控制下,由该SSD群组组成的FA)后回收(reclaim)该存储器(例如该环缓冲器中的该储存区域)。写入缓冲模块可以利用PMem的服务将数据镜像到待命节点,并且当将数据写入现用/服务节点存储器(例如现用节点的DRAM)的操作完成时、或是当将数据写入待命节点存储器(例如待命节点的DRAM)的操作完成时可以向用户提交/承诺写入完成。另外,储存快取模块(例如写入缓冲模块)可被配置成提供用户读取IO的服务,尤其,可咨询卷管理器模块以决定该数据的一数据位置(例如该数据所被储存的位置,诸如一SLBA),例如藉由查询一卷重映射表(诸如该第二重映射层的该重映射表),并且无需将来自FA的已加载的数据放置到写入缓冲存储器(例如:位于该节点的DRAM中的由写入缓冲模块管理的写入缓冲器),其中无需读取快取。例如,当用户从未写入数据时,写入缓冲模块可以使用全零数据将其交给用户的客户端装置;当数据在写入缓冲存储器中时,写入缓冲模块可以将数据从存储器复制到IO缓冲器(例如:位于该节点的DRAM中的由储存协定及区块IO接口模块所管理的缓冲器)并交给用户的客户端装置;以及当数据在该FA中时,写入缓冲模块可以向该FA提交内部读取请求来获取数据,以进一步回传数据。此外,储存快取模块(例如写入缓冲模块)可被配置成将数据从写入缓冲存储器刷新到FA并进行内联储存(inline storage)功能,尤其,进行一系列如第11图所示的操作。

图11是依据本发明另一实施例的针对用以进行该AFA伺服器(例如图1所示的AFA伺服器100)的数据存取管理的方法的一写入控制方案的流程图。为了更好地理解,节点100A和100B可以分别用来作为该现用节点以及该待命节点,尤其分别扮演该现用节点和该待命节点的角色,但本发明不限于此。

在步骤S50中,现用节点(例如节点100A和100B的其中之一,诸如本实施例中的节点100A)可以利用储存协定及区块IO接口模块来检测是否接收到任何请求诸如写入请求。如果是,进入步骤S51;如果否,重新进入步骤S50。

在步骤S51中,因应在一VVLBA VVLBA0上写入数据的写入请求,写入缓冲模块可以咨询卷管理器模块来决定一SLBASLBA0,以便知道要将数据储存在哪里,其中卷管理器模块可以回传该SLBASLBA0。举例来说,针对首次写入的情况(例如,在卷管理器模块检测到卷管理器模块的重映射表中的该多个VVLBA到SLBA映射信息条目当中没有一个包含VVLBAVVLBA0的情况下,这表示从这些VVLBA到SLBA映射信息条目中的任何VVLBA到SLBA映射信息条目都找不到VVLBA VVLBA0),卷管理器模块可以将一新SLBA分配为用于储存数据的SLBA SLBA0,并在卷管理器模块的重映射表中记录一VVLBA到SLBA映射信息条目{VVLBA0,SLBA0}。在另一个例子中,针对覆写的情况(例如,在卷管理器模块在卷管理器模块的重映射表中的该多个VVLBA到SLBA映射信息条目中的VVLBA到SLBA映射信息条目{VVLBA0,SLBA0}检测到VVLBA VVLBA0的情况下,这表示检测到这个VVLBA到SLBA映射信息条目{VVLBA0,SLBA0}包含VVLBA VVLBA0),卷管理器模块可以将SLBA SLBA0回传以覆写数据,这个SLBA SLBA0例如是在先前的写入操作中已与VVLBA VVLBA0相关联的SLBA SLBA0。

在步骤S52中,写入缓冲模块可以咨询重复数据删除引擎,以决定是否存在其他SLBA SLBA'具有与待写入的新数据相同的数据,其中,这个决定结果可以指出该待写入的新数据是否重复。如果是(例如,检测到具有与该待写入的新数据相同的数据的SLBASLBA’,就是该待写入的新数据是重复数据),进入步骤S52A;如果否,进入步骤S53。

在步骤S52A中,重复数据删除引擎可以通知卷管理器模块将卷管理器模块的重映射表中的VVLBA到SLBA映射信息条目{VVLBA0,SLBA0}从{VVLBA0,SLBA0}更新(例如改变)为{VVLBA0,SLBA’},其中更新的VVLBA到SLBA映射信息条目{VVLBA0,SLBA’}可以作为该硬链接的一例子。

在步骤S53中,写入缓冲模块可以藉由压缩引擎压缩数据,并将压缩后的数据放入由快闪存储器阵列模块管理的一压缩队列(queue)中。

在步骤S54中,快闪存储器阵列模块可以检查该压缩队列是否已经累积了足够的数据,例如,检查该压缩队列中的所有压缩数据是否达到一预定数据量(例如该全条带)。如果是(例如,压缩队列已经累积了足够的数据),进入步骤S55;如果否,重新进入步骤S50。

在步骤S55中,快闪存储器阵列模块可以将压缩队列中的所有压缩数据刷新到FA(例如,在快闪存储器阵列模块的控制下的以该SSD群组形成的FA),其中快闪存储器阵列模块可以更新快闪存储器阵列模块的重映射表(例如,这个重映射表中的压缩状态信息条目{{SLBA,DLBA,Start_Offset,Length},…})。当步骤S55的操作完成时(例如,快闪存储器阵列模块已经将压缩队列中的所有压缩数据写入至该SSD群组),快闪存储器阵列模块可以将完成状态通知写入缓冲模块。

在步骤S56中,写入缓冲模块可以回收写入缓冲存储器并更新在待命节点的存储器状态(例如,卷管理器模块和快闪存储器阵列模块的各自的重映射表)。

为了更好的理解,该方法可用图11所示的工作流程来说明,但本发明不限于此。依据某些实施例,一个或多个步骤可于图11所示的工作流程中增加、删除或修改。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

相关技术
  • 用以进行全快闪存储器阵列伺服器的数据存取管理的方法与设备
  • 用以进行全快闪存储器阵列伺服器的碟管理的方法与设备
技术分类

06120113299846