发明内容
本发明的主要目的是提供一种数据存储方法和硬盘控制器,以解决现有技术中对主机缓存缺少全局管理和优化能力的技术问题。
为了实现上述目的,本发明第一方面提供一种数据存储方法,所述方法应用于硬盘控制器,所述方法包括:
接收主机端设备发送的第一数据写入指令,所述第一数据写入指令用于向硬盘中写入目标数据,所述主机端设备包括主机缓存,所述主机缓存由所述硬盘控制器控制写入;
确定所述目标数据是否满足预设写入条件;
在所述目标数据满足所述写入条件时,将所述目标数据写在所述主机缓存中;
在所述目标数据不满足所述写入条件时,将所述目标数据写在所述硬盘的Nand闪存中。
可选地,所述方法还包括:
在所述目标数据满足所述写入条件时,将所述目标数据写在所述硬盘的缓存中。
可选地,所述确定所述目标数据是否满足预设写入条件,包括:
根据全局写缓存管理算法确定所述目标数据是否为热数据。
可选地,在所述确定所述目标数据是否满足预设写入条件之前,所述方法包括:
确定所述第一数据写入指令中包括写缓存使能信息。
可选地,所述将所述目标数据写在所述主机缓存中,包括:
向所述主机端设备返回包括缓存指示信息的写入成功指令,其中,所述写入成功指令用于响应所述第一数据写入指令,所述缓存指示信息用于指示所述主机端设备将所述目标数据存储在所述主机缓存中。
可选地,所述方法还包括:
接收所述主机端设备发送的第二数据写入指令;
确定所述第二数据写入指令未包括写缓存使能信息;
根据所述第二数据写入指令向所述硬盘的Nand闪存中写入数据。
本发明第二方面提供一种硬盘控制器,包括:至少一个处理器,存储器;
所述存储器用于存储至少一个程序模块;
所述至少一个处理器通过运行存储在所述存储器的所述至少一个程序模块用于:
接收主机端设备发送的第一数据写入指令,所述第一数据写入指令用于向硬盘中写入目标数据,所述主机端设备包括主机缓存,所述主机缓存由所述硬盘控制器控制写入;
确定所述目标数据是否满足预设写入条件;
在所述目标数据满足所述写入条件时,将所述目标数据写在所述主机缓存中;
在所述目标数据不满足所述写入条件时,将所述目标数据写在所述硬盘的Nand闪存中。
可选地,所述至少一个处理器还用于:
在所述目标数据满足所述写入条件时,将所述目标数据写在所述硬盘的缓存中。
可选地,所述至少一个处理器确定所述目标数据是否满足预设写入条件具体为:根据全局写缓存管理算法确定所述目标数据是否为热数据。
可选地,所述至少一个处理器还用于:在所述确定所述目标数据是否满足预设写入条件之前,确定所述第一数据写入指令中包括写缓存使能信息。
可选地,所述至少一个处理器所述将所述目标数据写在所述主机缓存中具体为:向所述主机端设备返回包括缓存指示信息的写入成功指令,其中,所述写入成功指令用于响应所述第一数据写入指令,所述缓存指示信息用于指示所述主机端设备将所述目标数据存储在所述主机缓存中。
可选地,所述至少一个处理器还用于:接收所述主机端设备发送的第二数据写入指令;
确定所述第二数据写入指令未包括写缓存使能信息;
根据所述第二数据写入指令向所述硬盘的Nand闪存中写入数据。
本发明第三方面提供一种硬盘控制器,包括:
接收单元,用于接收主机端设备发送的第一数据写入指令,所述第一数据写入指令用于向硬盘中写入目标数据,所述主机端设备包括主机缓存,所述主机缓存由所述硬盘控制器控制写入;
确定单元,用于确定所述目标数据是否满足预设写入条件;
数据写入单元,用于在所述目标数据满足所述写入条件时,将所述目标数据写在主机缓存中;在所述目标数据不满足所述写入条件时,将所述目标数据写在所述硬盘的Nand闪存中。
采用上述技术方案,主机端设备将数据写入指令发送给硬盘控制器,由硬盘控制器确定将数据写入硬盘Nand闪存还是写入主机缓存,相比现有技术中主机端设备不经过硬盘控制器直接在主机缓存中写入数据,本发明由硬盘控制器控制主机缓存的数据写入,由于硬盘控制器具备全局的写缓存管理和优化能力,因此,硬盘控制器可以对主机缓存的数据存储进行全局管理和优化,解决了主机缓存缺少全局管理和优化能力的技术问题。
本发明的其他特征和优点将在随后的具体实施方式部分予以详细说明。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
为了使本领域技术人员更容易理解本发明实施例提供的技术方案,下面首先对相关技术进行简单介绍。
图1是本发明实施例提供的一种存储架构示意图,如图所示,该存储架构包括主机端设备10,其中,主机端设备10包括主机缓存100,该存储架构还包括固态硬盘11,该固态硬盘11包括SSD控制器110和Nand闪存111。主机端设备10与固态硬盘11相连。
现有的相关技术中,主机缓存100中的数据写入是由主机端设备10控制的,例如,主机端设备10在确定待写入固态硬盘的数据为“热”数据时,直接将数据写入主机缓存100中,当数据变“冷”后或主机端设备关机时,向固态硬盘发送数据写入指令,将主机缓存100中的数据保存到Nand闪存111中。但是,由于主机端设备在运行有多个虚拟机的情况下,每个虚拟机对主机缓存进行的数据写入是独立进行的,对于主机缓存缺少全局管理和优化。
本发明实施例提供一种数据存储的方法,该方法应用于硬盘控制器,例如图1中示出的SSD控制器,如图2所示,该方法包括:
S201、接收主机端设备发送的第一数据写入指令,所述第一数据写入指令用于向硬盘中写入目标数据,所述主机端设备包括主机缓存,所述主机缓存由所述硬盘控制器控制写入;
S202、确定所述目标数据是否满足预设写入条件;
S203、在所述目标数据满足所述写入条件时,将所述目标数据写在所述主机缓存中;
S204、在所述目标数据不满足所述写入条件时,将所述目标数据写在所述硬盘的Nand闪存中。
这样,主机端设备将数据写入指令发送给硬盘控制器,由硬盘控制器确定将数据写入硬盘Nand闪存还是写入主机缓存,相比现有技术中主机端设备不经过硬盘控制器直接在主机缓存中写入数据,本发明实施例由硬盘控制器控制主机缓存的数据写入,由于硬盘控制器具备全局的写缓存管理和优化能力,因此,硬盘控制器可以对主机缓存的数据存储进行全局管理和优化,解决了主机缓存缺少全局管理和优化能力的技术问题。
下面对上述步骤进行详细举例说明。
由于为了减小写入放大,缓存除了可以存在于主机端设备,还可以存在与硬盘中。因此,在本发明实施例的一种可能的实现方式中,上述步骤S204还可以是,在所述目标数据满足所述写入条件时,将所述目标数据写在所述硬盘的缓存中。也就是说,固态硬盘在每次接收到主机端设备发送的数据写入指令后,可以通过对预设写入条件的判断确定本次的待写入数据是写入主机缓存还是硬盘缓存或者是Nand闪存。
其中,针对所述预设写入条件,上述步骤S203可以为:根据全局写缓存管理算法确定所述目标数据是否为热数据。
具体地,热数据可以理解为频繁,高并发性写入Nand闪存中的相同地址的数据,由于数据的频繁改写将影响Nand闪存的使用寿命。因此,本发明实施例中,硬盘控制器可以通过全局写缓存管理算法判断待写入的数据的写入地址是否被频繁写入,若是,则判断待写入的数据为热数据,则硬盘控制器可以进一步将该待写入的数据写入DDR SDRAM实现的主机缓存,或者硬盘的缓存,减小了写入放大。
可选地,本发明实施例在确定所述目标数据是否满足预设写入条件之前,还可以确定所述第一数据写入指令中包括写缓存使能信息。
也就是说,硬盘控制器写主机缓存的功能可以通过所述写缓存使能信息开启,具体地,硬盘控制器在接收到主机端设备发送的数据写入指令后,判断该数据写入指令是否存在写缓存使能信息,若存在,则执行上述步骤S202至步骤S204,若不存在,则可以直接将待写入数据写入Nand闪存。
可选地,硬盘控制器在确定所述目标数据满足所述写入条件时,可以通过如下方式将目标数据写入主机缓存:向所述主机端设备返回包括缓存指示信息的写入成功指令,其中,所述写入成功指令用于响应所述第一数据写入指令,所述缓存指示信息用于指示所述主机端设备将所述目标数据存储在所述主机缓存中。
也就是说,针对主机端设备发送的所述第一数据写入指令,硬盘控制器直接返回写入成功指令,但不读取待写入的目标数据,而是通过全局写缓存管理算法确定目标数据写入主机缓存的地址,并通知主机端设备将所述目标数据写入主机缓存。
进一步地,所述方法还包括:接收所述主机端设备发送的第二数据写入指令;确定所述第二数据写入指令未包括写缓存使能信息;根据所述第二数据写入指令向所述硬盘的Nand闪存中写入数据。
值得说明的是,主机端设备在接收到Flush命令或者关机命令后,可以向硬盘控制器发送不包括写缓存使能信息的数据写入指令,该数据写入指令用于将主机缓存中的数据写入到硬盘的Nand闪存中,这样,硬盘控制器在接收到数据写入指令后,确定该数据写入指令未包括写缓存使能信息,则直接根据该数据写入指令将主机缓存中的数据写入Nand闪存。通过上述方式,可以实现在热数据变冷后,将主机缓存中存储的数据最终存储到Nand闪存中。
为了使本领域技术人员更加理解本发明实施例提供的技术方案,下面基于图1所示的存储架构对本发明实施例提供的一种数据存储方法进行详细的说明。如图3所示,包括:
S301、主机端设备10发送第一数据写入指令给SSD控制器110。
其中,该第一数据写入指令用于向硬盘11中写入目标数据。
S302、SSD控制器110接收该第一数据写入指令。
S303、SSD控制器110确定该第一数据写入指令是否包括写缓存使能信息。
具体地,本发明实施例可以扩展NVMe协议中的保留字段,在主机端设备发送给硬盘控制器的数据写入指令中增加一个“主机写缓存使能位”,通过判断该“主机写缓存使能位”的值判断数据写入指令是否包括写缓存使能信息。例如,若该“主机写缓存使能位”的值为1,则确定数据写入指令包括写缓存使能信息,若该“主机写缓存使能位”的值为0,则确定数据写入指令未包括写缓存使能信息。
进一步地,若该第一数据写入指令未包括写缓存使能信息,则执行步骤S304,若该第一数据写入指令包括写缓存使能信息,则执行步骤S305及后续步骤。
S304、SSD控制器110根据该第一数据写入指令将目标数据写入Nand闪存111。
S305、SSD控制器110判断待写入的目标数据是否为热数据。
进一步地,若该目标数据不是热数据,则执行步骤S304;若该目标数据是热数据,则执行步骤S306及其后续步骤。
S306、SSD控制器110向主机端设备10发送用于响应所述第一数据写入指令的写入成功指令,其中,所述写入成功指令包括缓存指示信息。
也就是说,针对该第一数据写入指令,SSD控制器不从主机端设备读取目标数据,而是直接返回写入成功指令,并在该写入成功指令中携带缓存指示信息。具体地,本发明实施例可以扩展NVMe协议中的保留字段,在写入成功指令中添加“主机写缓存有效位”。这样,主机端设备的驱动程序在确定SSD控制器返回的写入成功指令中的“主机写缓存有效位”的值为1时,将目标数据写入主机缓存中。
S307、主机端设备10接收该写入成功指令,并根据该缓存指示信息将该目标数据写入主机缓存100中。
S308、主机端设备10接收到Flush命令。
其中,Flush命令用于清理缓存,为了避免数据丢失,主机端设备10在清理缓存之前,可以将主机缓存中的数据写入到硬盘11中,即执行步骤S309。
可替换地,主机端设备10也可以是在接收到关机指令时,执行步骤S309。
S309、主机端设备10将包括主机缓存100中的数据的第二数据写入指令发送给SSD控制器110,其中,该第二数据写入指令不包括写缓存使能信息。
S310、SSD控制器110接收该第二数据写入指令。
S311、SSD控制器110确定该第二数据写入指令不包括写缓存使能信息。
S312、SSD控制器110根据该第二数据写入指令,将主机缓存100中的数据写入Nand闪存111。
采用上述方法,SSD控制器在确定待写入硬盘的数据为热数据时,可以控制主机端设备将数据写入主机缓存。这样,即使主机端设备运行有多个虚拟机,由于在物理SSD上,每个虚拟机对应的逻辑SSD的读写操作可以被聚合为统一的读写操作,因此,SSD控制器对于主机缓存可以进行全局的写缓存管理和优化。
另外,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
本发明实施例还提供一种硬盘控制器40,用于实施上述方法实施例提供的一种数据存储方法,如图4所示,该硬盘控制器40包括:至少一个处理器401,存储器402;
所述存储器402用于存储至少一个程序模块;
所述至少一个处理器401通过运行存储在所述存储器402的所述至少一个程序模块用于:
接收主机端设备发送的第一数据写入指令,所述第一数据写入指令用于向硬盘中写入目标数据,所述主机端设备包括主机缓存,所述主机缓存由所述硬盘控制器控制写入;
确定所述目标数据是否满足预设写入条件;
在所述目标数据满足所述写入条件时,将所述目标数据写在所述主机缓存中;
在所述目标数据不满足所述写入条件时,将所述目标数据写在所述硬盘的Nand闪存中。
采用上述硬盘控制器,主机端设备将数据写入指令发送给该硬盘控制器,由该硬盘控制器确定将数据写入硬盘Nand闪存还是写入主机缓存,相比现有技术中主机端设备不经过硬盘控制器直接在主机缓存中写入数据,本发明实施例由硬盘控制器控制主机缓存的数据写入,由于硬盘控制器具备全局的写缓存管理和优化能力,因此,硬盘控制器可以对主机缓存的数据存储进行全局管理和优化,解决了主机缓存缺少全局管理和优化能力的技术问题。
可选地,所述至少一个处理器401还用于:在所述目标数据满足所述写入条件时,将所述目标数据写在所述硬盘的缓存中。
可选地,所述至少一个处理器401确定所述目标数据是否满足预设写入条件具体为:根据全局写缓存管理算法确定所述目标数据是否为热数据。
可选地,所述至少一个处理器401还用于:在所述确定所述目标数据是否满足预设写入条件之前,确定所述第一数据写入指令中包括写缓存使能信息。
可选地,所述至少一个处理器401所述将所述目标数据写在所述主机缓存中具体为:向所述主机端设备返回包括缓存指示信息的写入成功指令,其中,所述写入成功指令用于响应所述第一数据写入指令,所述缓存指示信息用于指示所述主机端设备将所述目标数据存储在所述主机缓存中。
可选地,所述至少一个处理器401还用于:接收所述主机端设备发送的第二数据写入指令;确定所述第二数据写入指令未包括写缓存使能信息;根据所述第二数据写入指令向所述硬盘的Nand闪存中写入数据。
需要说明的是,本领域技术人员应该理解到,图4示出的是与本发明各实施例相关的硬盘控制器的部分结构的框图。其中,该硬盘控制器具体可以为SSD控制器。并且,图4中示出的结构并不构成对硬盘控制器的限定,在具体实施过程中,该硬盘控制器40可以包括比图示更多的部件,本发明对此不做限定。
本发明实施例还提供另一种硬盘控制器50,用于实施上述方法实施例提供的一种数据存储方法,如图5所示,该硬盘控制器50包括:
接收单元501,用于接收主机端设备发送的第一数据写入指令,所述第一数据写入指令用于向硬盘中写入目标数据,所述主机端设备包括主机缓存,所述主机缓存由所述硬盘控制器控制写入;
确定单元502,用于确定所述目标数据是否满足预设写入条件;
数据写入单元503,用于在所述目标数据满足所述写入条件时,将所述目标数据写在主机缓存中;在所述目标数据不满足所述写入条件时,将所述目标数据写在所述硬盘的Nand闪存中。
可选地,所述数据写入单元503还用于:
在所述目标数据满足所述写入条件时,将所述目标数据写在所述硬盘的缓存中。
可选地,所述确定单元502具体用于:
根据全局写缓存管理算法确定所述目标数据是否为热数据。
可选地,所述确定单元502在确定所述目标数据是否满足预设写入条件之前,还用于:
确定所述第一数据写入指令中包括写缓存使能信息。
可选地,所述数据写入单元503具体用于:
向所述主机端设备返回包括缓存指示信息的写入成功指令,其中,所述写入成功指令用于响应所述第一数据写入指令,所述缓存指示信息用于指示所述主机端设备将所述目标数据存储在所述主机缓存中。
可选地,所示接收单元501还用于,接收所述主机端设备发送的第二数据写入指令;所示确定单元502还用于,确定所述第二数据写入指令未包括写缓存使能信息;所示数据写入单元503还用于,根据所述第二数据写入指令向所述硬盘的Nand闪存中写入数据。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述功能模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
采用上述硬盘控制器,主机端设备将数据写入指令发送给该硬盘控制器,由该硬盘控制器确定将数据写入硬盘Nand闪存还是写入主机缓存,相比现有技术中主机端设备不经过硬盘控制器直接在主机缓存中写入数据,本发明实施例由硬盘控制器控制主机缓存的数据写入,由于硬盘控制器具备全局的写缓存管理和优化能力,因此,硬盘控制器可以对主机缓存的数据存储进行全局管理和优化,解决了主机缓存缺少全局管理和优化能力的技术问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
具体来讲,本申请实施例中的信息处理方法对应的计算机程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与操作引导方法对应的计算机程序指令被一电子设备读取或被执行时,包括如下步骤:
接收主机端设备发送的第一数据写入指令,所述第一数据写入指令用于向硬盘中写入目标数据,所述主机端设备包括主机缓存,所述主机缓存由硬盘控制器控制写入;
确定所述目标数据是否满足预设写入条件;
在所述目标数据满足所述写入条件时,将所述目标数据写在所述主机缓存中;
在所述目标数据不满足所述写入条件时,将所述目标数据写在所述硬盘的Nand闪存中。
可选地,所述步骤还包括:
在所述目标数据满足所述写入条件时,将所述目标数据写在所述硬盘的缓存中。
可选地,所述确定所述目标数据是否满足预设写入条件,包括:
根据全局写缓存管理算法确定所述目标数据是否为热数据。
可选地,在所述确定所述目标数据是否满足预设写入条件之前,所述方法包括:
确定所述第一数据写入指令中包括写缓存使能信息。
可选地,所述将所述目标数据写在所述主机缓存中,包括:
向所述主机端设备返回包括缓存指示信息的写入成功指令,其中,所述写入成功指令用于响应所述第一数据写入指令,所述缓存指示信息用于指示所述主机端设备将所述目标数据存储在所述主机缓存中。
可选地,所述步骤还包括:
接收所述主机端设备发送的第二数据写入指令;
确定所述第二数据写入指令未包括写缓存使能信息;
根据所述第二数据写入指令向所述硬盘的Nand闪存中写入数据。
尽管已描述了本申请的优选实施例,但本领域内的普通技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。