CN106469119B - 一种基于nvdimm的数据写缓存方法及其装置 - Google Patents
一种基于nvdimm的数据写缓存方法及其装置 Download PDFInfo
- Publication number
- CN106469119B CN106469119B CN201510516219.1A CN201510516219A CN106469119B CN 106469119 B CN106469119 B CN 106469119B CN 201510516219 A CN201510516219 A CN 201510516219A CN 106469119 B CN106469119 B CN 106469119B
- Authority
- CN
- China
- Prior art keywords
- data
- nvdimm
- writing
- write request
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
公开了一种基于NVDIMM的数据写缓存方法及其装置。基于NVDIMM的写入数据的方法,包括:接收第一数据写入请求,所述第一数据写入请求指示将第一数据写入第一地址;响应于接收到所述第一数据写入请求,将所述第一数据写入NVDIMM;响应于将所述第一数据写入NVDIMM的操作完成,发送指示所述第一数据写入请求完成的消息;响应于接收到所述第一数据写入请求,还将所述第一数据写入存储设备;以及响应于将所述第一数据写入存储设备的操作完成,释放所述第一数据在所述NVDIMM中占据的存储空间。
Description
技术领域
本发明涉及高性能存储***,更具体地,本发明涉及在存储***中基于NVDIM M(Non-Volatile Dual In-line Memory Module)对写入数据实施缓存的方法及其装置。
背景技术
为提高存储***的写操作性能,一般在***中提供高速缓冲,用于缓存写入的数据。提供写缓存的一种方式是在内存中建立缓存,对文件或者块设备的写请求写到内存中的缓存后,就可以向主机返回写操作完成,然后通过后台操作异步地将数据写到磁盘。这种方法通常称为write-back(写回)。另一种方法是等待缓冲中的数据被同步到磁盘才向主机返回写操作完成,这称为write-through(写穿)。
NVDIMM是用于计算设备的存储器,其兼具类似DRAM(Dynamic Random AccessMemory)的高速数据存取能力与非易失存储器的数据保持能力,即使发生意外掉电,NVDIMM中存储的数据依然不会丢失。
参看图1,在公开号为CN104239226A的中国专利申请中公开了采用NVDIMM作为高速缓存的iSCSI存储服务器。在存储服务器工作时,所有的iSCSI读写命令都通过磁盘缓存完成相应的读写操作。当存储服务器收到iSCSI读命令时,先在磁盘缓存查找,如果找到相应的数据,直接返回给客户端;如果没找到相应的数据,将数据从磁盘读入到该磁盘缓存中,然后再返回给客户端;当存储服务器收到iSCSI写命令时,直接将数据复制到磁盘缓存的相应区域中。
现有技术中,将NVDIMM既用作读缓存又用作写缓存,对NVDIMM的容量提出了很高的需求。在面对流式数据访问请求时,现有技术的缓存方式难以获得高利用率,而频繁的缓存缺失又将引起存储***的整体性能颠簸。
发明内容
本发明的一个目的在于希望解决在掉电时数据不丢失的前提下提升写性能的问题,实现对写性能和数据可靠性的兼顾。本发明的又一个目的在于提供针对流式大数据的有效的缓存替换机制,提高缓存的利用效率。
根据本发明的第一方面,提供了根据本发明第一方面的第一基于NVDIMM的数据写缓存方法,包括:接收第一数据写入请求,所述第一数据写入请求指示将第一数据写入第一地址;影响于接收到该第一数据写入请求,将所述第一数据写入NVDIMM;响应于将所述第一数据写入NVDIMM的操作完成,发送指示所述第一数据写入请求完成的消息;响应于接收到所述第一数据写入请求,还将所述第一数据写入存储设备;响应于将所述第一数据写入存储设备的操作完成,释放所述第一数据在所述NVDIMM中占据的存储空间。
根据本发明第一方面的第一基于NVDIMM的数据写缓存方法,提供了根据本发明第一方面的第二方法,其中将所述第一数据写入NVDIMM的操作与将所述第一数据写入存储设备的操作并行执行。
根据本发明第一方面的第一或第二基于NVDIMM的数据写缓存方法,提供了根据本发明第一方面的第三方法,其中所述将所述第一数据写入NVDIMM包括:生成第一数据块,所述第一数据块中包括所述第一数据、所述第一地址以及顺序号,其中每次生成顺序号时,递增所述顺序号;将所述第一数据块写入所述NVDIMM。
根据本发明第一方面的第一至第三基于NVDIMM的数据写缓存方法,提供了根据本发明第一方面的第四方法,还包括:接收第二数据写入请求,所述第二数据写入请求指示将第二数据写入第二地址;响应于接收到所述第二数据写入请求,生成第二数据块,所述第二数据块中包括所述第二数据、所述第二地址以及顺序号;将所述第二数据块写入所述NVDIMM。
根据本发明第一方面的第一至第三基于NVDIMM的数据写缓存方法,提供了根据本发明第一方面的第五方法,还包括:响应于收到正常关机的消息,向所述NVDIMM中写入第一标记。
根据本发明第一方面的第四基于NVDIMM的数据写缓存方法,提供了根据本发明第一方面的第六方法,还包括:响应于收到正常关机的消息,向所述NVDIMM中写入第一标记。
根据本发明第一方面的第六基于NVDIMM的数据写缓存方法,提供了根据本发明第一方面的第七方法,还包括:响应于开机,若从所述NVDIMM中无法读到所述第一标记,则从所述NVDIMM中读出所述第一数据块与所述第二数据块,按照所述第一数据块与所述第二数据块中的顺序号从小到大的顺序将所述第一数据块与所述第二数据块中的第一数据与第二数据写入所述存储设备。
根据本发明第一方面的第四基于NVDIMM的数据写缓存方法,提供了根据本发明第一方面的第八方法,还包括:响应于收到异常关机的消息,向所述NVDIMM中写入第二标记;响应于开机,若从所述NVDIMM中读到所述第二标记,则从所述NVDIMM中读出所述第一数据块与所述第二数据块,按照所述第一数据块与所述第二数据块中的顺序号从小到大的顺序将所述第一数据块与所述第二数据块中的第一数据与第二数据写入所述存储设备。
根据本发明第一方面的前述基于NVDIMM的数据写缓存方法,提供了根据本发明第一方面的第九方法,其中响应于将第一数据写入所述NVDIMM,将所述第一数据在所述NVDIMM上占据的存储空间标记为占用;响应于释放所述第一数据在所述NVDIMM中占据的存储空间,将所述第一数据在所述NVDIMM上占据的存储空间标记为空闲。
根据本发明第一方面的第九基于NVDIMM的数据写缓存方法,提供了根据本发明第一方面的第十方法,其中所述将所述第一数据写入NVDIMM时将所述第一数据写入所述NVDIMM的被标记为空闲的存储空间。
根据本发明第一方面的前述基于NVDIMM的数据写缓存方法,提供了根据本发明第一方面的第十一方法,还包括:将所述第一地址写入所述存储设备。
根据本发明的第二方面,提供了根据本发明第二方面的第一基于NVDIMM的数据写缓存装置,包括:接收模块,用于接收第一数据写入请求,所述第一数据写入请求指示将第一数据写入第一地址;NVDIMM写入模块,用于响应于接收到该第一数据写入请求,将所述第一数据写入NVDIMM;消息发送模块,用于响应于将所述第一数据写入NVDIMM的操作完成,发送指示所述第一数据写入请求完成的消息;存储设备写入模块,用于响应于接收到所述第一数据写入请求,还将所述第一数据写入存储设备;以及NVDIMM释放模块,用于响应于将所述第一数据写入存储设备的操作完成,释放所述第一数据在所述NVDIMM中占据的存储空间。
根据本发明的第三方面,提供了根据本发明第三方面的第一基于NVDIMM的数据写缓存方法,包括:接收第一数据写入请求,所述第一数据写入请求指示将第一数据写入第一地址;响应于接收到该第一数据写入请求,将所述第一数据写入NVDIMM;响应于将所述第一数据写入NVDIMM的操作完成,发送指示所述第一数据写入请求完成的消息;接收第二数据写入请求,所述第二数据写入请求指示将第二数据写入第二地址;响应于接收到该第二数据写入请求,将所述第二数据写入NVDIMM;响应于将所述第二数据写入NVDIMM的操作完成,发送指示所述第二数据写入请求完成的消息;生成第一存储数据块,所述第一存储数据块中包括所述第一数据、所述第一地址、所述第二数据以及所述第二地址;将所述第一存储数据块写入存储设备;响应于将所述第一存储数据写入存储设备的操作完成,释放所述第一数据与第二数据在所述NVDIMM中占据的存储空间。
根据本发明第三方面的第一基于NVDIMM的数据写缓存方法,提供了根据本发明第三方面的第二方法,其中所述将所述第一数据写入NVDIMM包括:生成第一数据块,所述第一数据块中包括所述第一数据、所述第一地址以及顺序号;将所述第一数据块写入所述NVDIMM;以及其中所述将所述第二数据写入NVDIMM包括:生成第二数据块,所述第二数据块中包括所述第二数据、所述第二地址以及顺序号;将所述第二数据块写入所述NVDIMM;以及其中每次生成顺序号时,递增所述顺序号。
根据本发明第三方面的第一或第二基于NVDIMM的数据写缓存方法,提供了根据本发明第三方面的第三方法,还包括:响应于收到正常关机的消息,向所述NVDIMM中写入第一标记。
根据本发明第三方面的第三基于NVDIMM的数据写缓存方法,提供了根据本发明第三方面的第四方法,还包括:响应于开机,若从所述NVDIMM中无法读到所述第一标记,则从所述NVDIMM中读出所述第一数据块与所述第二数据块,按照所述第一数据块与所述第二数据块中的顺序号从小到大的顺序将所述第一数据块与所述第二数据块中的第一数据与第二数据写入所述存储设备。
根据本发明第三方面的前述基于NVDIMM的数据写缓存方法,提供了根据本发明第三方面的第五方法,其中响应于将第一数据写入所述NVDIMM,将所述第一数据在所述NVDIMM上占据的存储空间标记为占用;响应于释放所述第一数据在所述NVDIMM中占据的存储空间,将所述第一数据在所述NVDIMM上占据的存储空间标记为空闲。
根据本发明第三方面的第五基于NVDIMM的数据写缓存方法,提供了根据本发明第三方面的第六方法,其中所述将所述第一数据写入NVDIMM时将所述第一数据写入所述NVDIMM的被标记为空闲的存储空间。
根据本发明的第四方面,提供了根据本发明第四方面的第一基于NVDIMM的数据写缓存装置,包括:第一接收模块,用于接收第一数据写入请求,所述第一数据写入请求指示将第一数据写入第一地址;第一NVDIMM写入模块,用于响应于接收到该第一数据写入请求,将所述第一数据写入NVDIMM;第一消息发送模块,用于响应于将所述第一数据写入NVDIMM的操作完成,发送指示所述第一数据写入请求完成的消息;第二接收模块,用于接收第二数据写入请求,所述第二数据写入请求指示将第二数据写入第二地址;第二NVDIMM写入模块,用于响应于接收到该第二数据写入请求,将所述第二数据写入NVDIMM;第二消息发送模块,用于响应于将所述第二数据写入NVDIMM的操作完成,发送指示所述第二数据写入请求完成的消息;数据聚合模块,用于生成第一存储数据块,所述第一存储数据块中包括所述第一数据、所述第一地址、所述第二数据以及所述第二地址;存储设备写入模块,用于将所述第一存储数据块写入存储设备;以及NVDIMM释放模块,用于响应于将所述第一存储数据写入存储设备的操作完成,释放所述第一数据与第二数据在所述NVDIMM中占据的存储空间。
根据本发明的第五方面,提供一种计算机程序,当被载入计算机***并在计算机***上执行时,所述计算机程序代码使所述计算机***执行执行根据本发明的第一与第三方面而提供的多种方法之一。
根据本发明的第六方面,提供了一种计算机,包括:用于存储程序指令的机器可读存储器;用于执行存储在所述存储器中的程序指令的一个或多个处理器;所述程序指令用于使所述一个或多个处理器执行根据本发明的第一与第三方面而提供的多种方法之一。
根据本发明的第七方面,提供了一种程序,其使得计算机执行根据本发明的第一与第三方面而提供的多种方法之一。
根据本发明的第八方面,提供了一种在其上具有所记录的程序的计算机可读存储介质,其中所述程序使得计算机执行根据本发明的第一与第三方面而提供的多种方法之一。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1是现有技术的存储***的方框图;
图2是根据本发明的实施例的存储***的方框图;
图3是根据本发明的又一实施例的存储***的方框图;
图4是根据本发明的实施例的数据写入方法的流程图;
图5展示了根据本发明实施例的在NVDIMM上存储的数据块;
图6是根据本发明的实施例的存储***开机过程中执行的方法的流程图;以及
图7是根据本发明的又一实施例的数据写入方式的流程图。
具体实施方式
图2是根据本发明的实施例的存储***的方框图。在根据图2的实施例中,存储***可以是计算机或服务器,包括CPU 210、NVDIMM 220以及一个或多个盘(DISK)设备230。盘设备230可以是机械硬盘、固态硬盘和或存储卡。盘设备230可通过例如SATA、IDE、USB、PCIe、NVMe、SCSI、以太网等方式与CPU交换数据。盘设备230可以直接耦合到CPU 210,也可以通过诸如芯片组的桥接芯片(未示出)耦合到CPU 210。NVDIMM 220通过DIMM内存插槽耦合到CPU 210。CPU 210可包括一个或多个CPU芯片。一个或多个盘230可以被组织为RAID来提供高性能、高可靠性的存储服务。
在CPU 210上运行访问存储***的软件,例如应用软件、数据库软件等。根据本发明实施例的提供存储服务的软件也运行在CPU 210,用于响应存储请求,并操作诸如NVDIMM220与盘230的存储设备。因而可在诸如应用服务器、数据库服务器的服务器上实施本发明。
图3是根据本发明的又一实施例的存储***的方框图。在根据图3的实施例中,提供独立的存储***。存储***包括控制器310、NVDIMM 320、接口340以及一个或多个盘(DISK)设备330。盘设备230可以是机械硬盘、固态硬盘和或存储卡。盘设备230可通过例如SATA、IDE、USB、PCIe、NVMe、SCSI、以太网等方式与控制器交换数据。盘设备330可以直接耦合到控制器310,也可以通过诸如芯片组的桥接芯片(未示出)耦合到控制器310。NVDIMM320通过DIMM内存插槽耦合到控制器310。控制器10可包括一个或多个CPU芯片,或一个或多个应用专用集成电路。一个或多个盘330可以被组织为RAID来提供高性能、高可靠性的存储服务。接口340将存储***耦合到网络,存储***可通过网络来被访问。接口340可以是支持例如以太网、FC(Fibre Channel,光纤通道)、Infiniband的接口。访问存储***的应用运行于其他服务器上,并通过网络以及接口340来访问根据图3的实施例的存储***。本发明实施例的提供存储服务的软件运行在控制器310,用于响应存储请求,并操作诸如NVDIMM 320与盘330的存储设备。
图4是根据本发明的实施例的数据写入方法的流程图。当需要写入数据时,应用程序会发出数据写入请求。根据本发明实施例的软件接收应用程序或其他程序发出的数据写入请求。响应于接收到数据写入请求(410),在根据本发明的实施例中,将数据写入NVDIMM(420)。在将数据写入NVDIMM之后,向发出写请求的应用或其他程序发出消息,该消息用以指示数据写入请求已经处理完成(430)。虽然此时数据仅被写入到NVDIMM中,而尚未写入存储***的诸如盘230(参看图2)的存储设备,但由于NVDIMM具有非易失特性,根据本发明的实施例的写入方法中,基于数据被写入到NVDIMM而发出指示数据写入请求已经处理完成的消息,并且通过后续的步骤确保写入到NVDIMM的数据被写入到存储***的诸如盘230的存储设备。以此方式,能够保证即使在执行步骤430与执行步骤450之间发生掉电,已写入存储***的数据不丢失。在根据图4的实施例中,NVDIMM充当存储服务器的写缓存。由于NVDIMM具有高速数据存取能力,步骤420将很快完成,并能很快向发出指示数据写入请求完成的消息,从而提升了存储***的写入性能。
响应于接收到数据写入请求,在根据本发明的实施例中,还将数据写入到存储设备(450)。在根据本发明的实施例中,将数据写入到存储设备(450)的步骤与将数据写入到NVDIMM(420)的步骤均依赖于接收到数据写入请求(410)而发生。因而,在一个例子中,将数据写入到存储设备(450)的步骤与将数据写入到NVDIMM(420)的步骤并行发生。在另一个例子中,由一个CPU来处理将数据写入到存储设备(450)的步骤,而由另一个CPU来处理将数据写入到NVDIMM(420)的步骤。在依然另一个例子中,由一个CPU来分时地处理将数据写入到存储设备(450)的步骤与将数据写入到NVDIMM(420)的步骤。在依然另一个例子中,在将数据写入到存储设备(450)的步骤之后再执行将数据写入到NVDIMM(420)的步骤。
响应于将数据写入存储设备(450)的步骤执行完成,指示释放在步骤420中写入的NVDIMM的数据在NVDIMM中占据的空间。存储设备可以是诸如盘230(参见图2)的存储设备。由于在将数据写入存储设备后,及时将NVDIMM中缓存的数据释放或删除,在根据本发明的实施例中,NVDIMM的存储容量无需很大,可以远小于存储***的诸如盘230(参见图2)的存储设备的存储容量。对NVDIMM中数据的释放可以是将数据所占用的存储空间标记为空闲,而无需在NVDIMM上执行删除、写入或擦除等操作。在根据图4的实施例中,响应于接收到数据写入请求,将数据写入到存储设备(450),并从NVDIMM中释放相应的数据(460)。因而数据不会在NVDIMM中缓存很长世间,从而NVDIMM的存储空间得以很快地重复利用,减少了对NVDIMM的整体存储容量的需求。并使存储***具有可持续的高写入性能。
所属领域技术人员将意识到,会接收到多个数据写入请求。对每个数据写入请求,分别执行将数据写入NVDIMM(420)的步骤以及将数据写入存储设备(450)的步骤。以及在将数据写入NVDIMM(420)后,发送指示数据写入请求完成的消息(430)。在将数据写入存储设备(450)后,释放该数据在NVDIMM中所占据的空间(460)。
图5展示了根据本发明实施例的在NVDIMM上存储的数据块。在根据图5的实施例中,NVDIMM 500上存储有数据块510、数据块520、数据块530与数据块540。作为举例,在数据块510中至少包括数据、逻辑地址与顺序号。在一个例子中,数据块510、数据块520、数据块530与数据块540具有相同的尺寸。数据块510、数据块520、数据块530与数据块540也可以具有不同的尺寸,并在每个数据块中记录数据块各自的尺寸。
参看图4,所接收到的数据写入请求中,包括要写入的数据与要写入数据的逻辑地址。为了将数据写入到NVDIMM,生成数据块510(图5),在数据块510中记录数据写入请求所包括的要写入的数据与要写如数据的逻辑地址。在生成数据块510时,还产生顺序号,并在数据块510中包含该顺序号。顺序号是递增的,用于标识接收到数据写入请求的顺序,从而可通过顺序号而获得各个数据块生成的顺序。为了获得递增的顺序号,在一个例子中,每当接收到数据写入请求并生成数据块(例如,数据块510)时,将顺序号递增,并将递增后的顺序号的值记录在数据块510中。
在需要从NVDIMM中恢复数据时,利用数据块(例如,数据块510)中的数据与逻辑地址,能够获得向逻辑地址写入数据的数据写入请求;而利用数据块中的顺序号,能够获得各个数据写入请求的收到的顺序。准确的识别各个数据写入请求的收到的顺序是非常重要的。发生在不同时间的数据写入请求可能向相同的地址写入不同的数据,而数据写入请求的执行顺序决定了在该相同地址最终记录的数据。
在NVDIMM中还记录多种元数据。元数据可用来记录NVDIMM中空闲的和/或被占用的存储区。当向NVDIMM中写入数据块时,向NVDIMM中的空闲存储区写入数据块,并将被写入了数据的存储区标记为被占用。当响应于将数据写入诸如盘230(参看图2)的存储设备后,释放该数据在NVDIMM中占据的空间(参看图4,460)时,在元数据中标记对应的存储区为空闲。在向NVDIMM中写入数据时,若NVDIMM中没有足够的空闲存储区,该数据写入无法完成。可暂时挂起该数据写入,等待NVDIMM中被占据的存储区被释放后,再执行将数据写入NVDIMM的操作。
元数据还可用来记录标志位,用来指示在存储***上电时是否执行数据恢复操作。在一个例子中,在存储***启动时,将标志位设置为第一值,而在存储***正常关闭时,将标志设置为第二值。在此情况下,在存储***启动时,若发现标志位为第一值,表明存储***没有被正确关闭。在次情况下,需要利用NVDIMM中保存的数据进行数据恢复。后面会结合附图详细描述从NVDIMM中恢复数据的方法。在另一个例子中,在存储***异常关机时,在标志位中写入第一值,在存储***启动时,若发现标志位为第一值,表明存储***没有被正确关闭,需要利用NVDIMM中保存的数据进行数据恢复。
图6是根据本发明的实施例的存储***开机过程中执行的方法的流程图。当存储***开机(600)时,访问NVDIMM中记录的标志位(620),用以判断存储***是否需要从NVDIMM中恢复数据。在正常关机时,作为举例,NVDIMM中缓存的数据均已被写入诸如盘230的存储设备。在此情况下,无需从NVDIMM中恢复数据。在。若存储***经历了异常关机,比如在执行数据写入请求过程中发生掉电等意外事件,与数据写入请求对应的数据被写入到NVDIMM,但并未被写入诸如盘230的存储设备中。在此情况下,需要从NVDIMM中恢复数据。
通过访问NVDIMM中记录的标志位来判断存储***在上一次关机时是否经历了正常关机(630)。若是正常关机,则无需从NVDIMM中恢复数据,图6中的方法转向步骤660结束执行。若是非正常关机,则从NVDIMM中读出所有数据块(640)。在一个例子中,参看图5,从NVDIMM中读出数据块510、数据块520、数据块530与数据块540。在进一步的实施例中,还通过访问NVDIMM中记录的元数据来获得被占用的数据块的信息,进而从NVDIMM中读出被占用的数据块,而无需读出NVDIMM中的空闲数据块。
对于读出的数据块,依据各个数据块中记录的顺序号,按从小到大的方式排序,并按照排序后的顺序将各数据块对应的数据写入诸如盘230的存储设备。数据块的顺序号小,意味与该数据块对应的数据写入请求发生得较早。若数据块510(参看图5)的顺序号小于数据块520的顺序号,意味着数据块510对应的数据写入请求的发生早于数据块520对应的数据写入请求。在一个例子中,数据块510的顺序号小于数据块520的顺序号,数据块520的顺序号小于数据块530的顺序号,数据块530的顺序号小于数据块540的顺序号,则按照数据块510、数据块520、数据块530、数据块540的顺序,将各数据块对应的数据写入诸如盘230(参看图2)的存储设备。具体地,从各数据块中获得数据与逻辑地址,并根据逻辑地址将数据写入诸如盘230的存储设备。在一个例子中,根据逻辑地址与数据重新生成数据写入写请求,并基于数据写入请求将数据写入存储设备。
图7是根据本发明的又一实施例的数据写入方式的流程图。当需要写入数据时,应用程序会发出数据写入请求。根据本发明实施例的软件接收应用程序或其他程序发出的数据写入请求。而另一个实施例中,根据本发明的存储***通过网络接收应用程序或其他程序或其他服务器发出的数据写入请求。
响应于接收到第一数据写入请求(710),在根据图7的实施例中,将第一数据写入NVDIMM(712)。在第一数据写入请求中,包括第一数据以及要写入第一数据的第一逻辑地址。在将第一数据写入NVDIMM之后,向发出写请求的应用、其他程序或服务器发出消息,该消息用以指示第一数据写入请求已经处理完成(714)。虽然此时数据仅被写入到NVDIMM中,而尚未写入存储***的诸如盘230(参看图2)的存储设备,但由于NVDIMM具有非易失特性,根据本发明的实施例的写入方法中,基于数据被写入到NVDIMM而发出指示数据写入请求已经处理完成的消息,并且通过后续的步骤确保写入到NVDIMM的数据被写入到存储***的诸如盘230的存储设备。
在根据图7的实施例中,在接收到第一数据写入请求后,并非立即将第一写入请求对应的第一数据写入到诸如盘230的存储设备。而是等待接收到第二写入请求(720)。通过将第一写入请求与第二写入请求合并处理,能够在保证数据可靠性的前提下,减少存储设备执行写操作的次数,从而提升存储***性能。在第二数据写入请求中,包括第二数据以及要写入第二数据的第二逻辑地址。
响应于接收到第二数据写入请求(720),将第二数据写入NVDIMM(722)。在将第二数据写入NVDIMM之后,向发出写请求的应用、其他程序或服务器发出消息,该消息用以指示第二数据写入请求已经处理完成(724)。
响应于接收到第一写入请求与第二写入请求,将第一数据与第二数据写入存储设备(730)。在一个例子中,生成存储数据块,在存储数据块中记录第一数据与第二数据,并将存储数据块写入存储设备。存储数据块可具有与存储设备的物理存储块相同的大小。在另一个例子中,在第一数据写入请求与第二数据写入请求在逻辑地址上连续的情况下,将第二数据追加在第一数据之后,并写入存储设备。
响应于将第一数据与第二数据写入存储设备,在NVDIMM中释放第一数据与第二数据(740)。在一个例子中,在NVDIMM中释放与第一数据对应的第一存储块,以及与第二数据对应的第二存储块。
需要指出的是,在步骤730中合并的数据可以来自两个或更多个数据写入请求。在另一个例子中,在收到第二数据写入请求后,若第一数据与第二数据不适于合并,将第一数据与第二数据分别写入存储设备。在根据图7的实施例中,向NVDIMM写入的存储块可以是如图5所展示的存储块。在根据图7的实施例将第一数据与第二数据写入NVDIMM后,若经历了异常掉电,也可通过如图6所示的实施例来从NVDIMM中恢复数据。
本发明实施例还提供一种包含计算机程序代码的计算机程序,当被载入计算机***并在计算机***上执行时,所述计算机程序代码使所述计算机***执行上面所述的方法。
本发明实施例还提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述计程序代码使所述存储设备执行上面所述的方法。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机***实现,或由专用硬件和计算机指令的组合实现。
上面已经公开了基于NVDIMM的数据写缓存方法及其装置。所属领域技术人员还将意识到本发明中所公开的方法或操作流程可由软件、固件及其任何组合实现。实现本发明实施例的方法或操作流程的软件、固件可由访问存储设备的主机的CPU执行。实现本发明实施例的方法或操作的软件、固件可存储于网络服务器、访问存储设备的主机和/或存储设备。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (11)
1.一种基于NVDIMM的写入数据的方法,包括:
接收第一数据写入请求,所述第一数据写入请求指示将第一数据写入第一地址;
响应于接收到所述第一数据写入请求,将所述第一数据写入NVDIMM;
响应于将所述第一数据写入NVDIMM的操作完成,发送指示所述第一数据写入请求完成的消息;
响应于接收到所述第一数据写入请求,还将所述第一数据写入存储设备;以及
响应于将所述第一数据写入存储设备的操作完成,释放所述第一数据在所述NVDIMM中占据的存储空间;
其中,数据写入到存储设备的步骤与将数据写入到NVDIMM的步骤并行发生。
2.根据权利要求1所述的方法,其中所述将所述第一数据写入NVDIMM包括:
生成第一数据块,所述第一数据块中包括所述第一数据、所述第一地址以及顺序号,其中每次生成顺序号时,递增所述顺序号;
将所述第一数据块写入所述NVDIMM。
3.根据权利要求2所述的方法,还包括:
接收第二数据写入请求,所述第二数据写入请求指示将第二数据写入第二地址;
响应于接收到所述第二数据写入请求,生成第二数据块,所述第二数据块中包括所述第二数据、所述第二地址以及顺序号;
将所述第二数据块写入所述NVDIMM。
4.根据权利要求3所述的方法,还包括:
响应于收到正常关机的消息,向所述NVDIMM中写入第一标记。
5.根据权利要求4所述的方法,还包括:
响应于开机,若从所述NVDIMM中无法读到所述第一标记,则从所述NVDIMM中读出所述第一数据块与所述第二数据块,按照所述第一数据块与所述第二数据块中的顺序号从小到大的顺序将所述第一数据块中的第一数据与所述第二数据块中的第二数据写入所述存储设备。
6.根据权利要求3所述的方法,还包括:
响应于收到异常关机的消息,向所述NVDIMM中写入第二标记;
响应于开机,若从所述NVDIMM中读到所述第二标记,则从所述NVDIMM中读出所述第一数据块与所述第二数据块,按照所述第一数据块与所述第二数据块中的顺序号从小到大的顺序将所述第一数据块中的第一数据与所述第二数据块中的第二数据写入所述存储设备。
7.根据权利要求1-6之一所述的方法,其中响应于将第一数据写入所述NVDIMM,将所述第一数据在所述NVDIMM上占据的存储空间标记为占用;
响应于释放所述第一数据在所述NVDIMM中占据的存储空间,将所述第一数据在所述NVDIMM上占据的存储空间标记为空闲。
8.根据权利要求7所述的方法,其中所述将所述第一数据写入NVDIMM时将所述第一数据写入所述NVDIMM的被标记为空闲的存储空间。
9.一种基于NVDIMM的写入数据的方法,包括:
接收第一数据写入请求,所述第一数据写入请求指示将第一数据写入第一地址;
响应于接收到该第一数据写入请求,将所述第一数据写入NVDIMM;
响应于将所述第一数据写入NVDIMM的操作完成,发送指示所述第一数据写入请求完成的消息;
接收第二数据写入请求,所述第二数据写入请求指示将第二数据写入第二地址;
响应于接收到该第二数据写入请求,将所述第二数据写入NVDIMM;
响应于将所述第二数据写入NVDIMM的操作完成,发送指示所述第二数据写入请求完成的消息;
生成第一存储数据块,所述第一存储数据块中包括所述第一数据与所述第二数据;
将所述第一存储数据块写入存储设备;以及
响应于将所述第一存储数据块写入存储设备的操作完成,释放所述第一数据与第二数据在所述NVDIMM中占据的存储空间;
其中,数据写入到存储设备的步骤与将数据写入到NVDIMM的步骤并行发生。
10.一种基于NVDIMM的写入数据的装置,包括:
接收模块,用于接收第一数据写入请求,所述第一数据写入请求指示将第一数据写入第一地址;
NVDIMM写入模块,用于响应于接收到所述第一数据写入请求,将所述第一数据写入NVDIMM;
消息发送模块,用于响应于将所述第一数据写入NVDIMM的操作完成,发送指示所述第一数据写入请求完成的消息;
存储设备写入模块,用于响应于接收到所述第一数据写入请求,还将所述第一数据写入存储设备;以及
NVDIMM释放模块,用于响应于将所述第一数据写入存储设备的操作完成,释放所述第一数据在所述NVDIMM中占据的存储空间;
其中,数据写入到存储设备的步骤与将数据写入到NVDIMM的步骤并行发生。
11.一种计算机,包括:用于存储程序指令的机器可读存储器;用于执行存储在所述存储器中的程序指令的一个或多个处理器;所述程序指令用于使所述一个或多个处理器执行根据权利要求1-9之一所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510486048 | 2015-08-10 | ||
CN2015104860482 | 2015-08-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106469119A CN106469119A (zh) | 2017-03-01 |
CN106469119B true CN106469119B (zh) | 2020-07-07 |
Family
ID=58229139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510516219.1A Active CN106469119B (zh) | 2015-08-10 | 2015-08-20 | 一种基于nvdimm的数据写缓存方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106469119B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255428B (zh) * | 2018-01-10 | 2020-07-24 | 联想(北京)有限公司 | 一种数据处理方法、装置及电子设备 |
CN108829613B (zh) * | 2018-05-24 | 2020-12-29 | 中山市江波龙电子有限公司 | 数据存储方法及存储设备 |
CN109144778A (zh) * | 2018-07-27 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种存储服务器***及其备份方法、***及可读存储介质 |
TWI688859B (zh) | 2018-12-19 | 2020-03-21 | 財團法人工業技術研究院 | 記憶體控制器與記憶體頁面管理方法 |
CN111273868A (zh) * | 2020-01-19 | 2020-06-12 | 西安奥卡云数据科技有限公司 | 一种全闪存阵列垃圾回收减少写放大的方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000165844A (ja) * | 1998-11-19 | 2000-06-16 | Hewlett Packard Co <Hp> | 連続メディア・ストリーム再生システムおよびその方法 |
US6378037B1 (en) * | 1999-06-29 | 2002-04-23 | International Business Machines Corporation | Write-twice method of fail-safe write caching |
JP4078010B2 (ja) * | 2000-03-03 | 2008-04-23 | 株式会社日立グローバルストレージテクノロジーズ | 磁気ディスク装置及び情報記録方法 |
US7127549B2 (en) * | 2004-02-04 | 2006-10-24 | Sandisk Corporation | Disk acceleration using first and second storage devices |
CN1304957C (zh) * | 2005-01-07 | 2007-03-14 | 清华大学 | 基于移动存储的计算机***磁盘同步写性能提高方法 |
US7360112B2 (en) * | 2005-02-07 | 2008-04-15 | International Business Machines Corporation | Detection and recovery of dropped writes in storage devices |
CN101727299B (zh) * | 2010-02-08 | 2011-06-29 | 北京同有飞骥科技股份有限公司 | 连续数据存储中面向raid5的写操作优化设计方法 |
WO2011153478A2 (en) * | 2010-06-04 | 2011-12-08 | Flashsoft Corporation | Cache management and acceleration of storage media |
CN102681952B (zh) * | 2012-05-12 | 2015-02-18 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法与存储设备 |
CN103150128A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 基于ssd和磁盘的可靠混合存储***实现方法 |
CN103617009A (zh) * | 2013-12-10 | 2014-03-05 | 北京奇虎科技有限公司 | 一种开机启动中通过缓存向磁盘写数据的方法和装置 |
CN103777537B (zh) * | 2014-01-28 | 2018-03-13 | 无锡云动科技发展有限公司 | 一种低功耗控制电路及存储装置 |
CN104598168B (zh) * | 2015-01-23 | 2017-09-29 | 华为技术有限公司 | 一种数据恢复方法及对象存储设备 |
CN104794070B (zh) * | 2015-04-23 | 2017-10-31 | 南京道熵信息技术有限公司 | 基于动态非覆盖raid技术的固态闪存写缓存***及方法 |
-
2015
- 2015-08-20 CN CN201510516219.1A patent/CN106469119B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106469119A (zh) | 2017-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106445405B (zh) | 一种面向闪存存储的数据访问方法及其装置 | |
US10127166B2 (en) | Data storage controller with multiple pipelines | |
KR101702201B1 (ko) | 솔리드 스테이트 드라이브(ssd)에 대한 최적화된 컨텍스트 드롭 | |
CN106469119B (zh) | 一种基于nvdimm的数据写缓存方法及其装置 | |
US9703816B2 (en) | Method and system for forward reference logging in a persistent datastore | |
EP2879040B1 (en) | Data storage method, data storage apparatus, and storage device | |
US20160224588A1 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
US20190324859A1 (en) | Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive | |
WO2017113213A1 (zh) | 访问请求处理方法、装置及计算机*** | |
US20190042460A1 (en) | Method and apparatus to accelerate shutdown and startup of a solid-state drive | |
WO2019120133A1 (zh) | 一种基于固态硬盘的日志文件的读写方法及固态硬盘 | |
JP2017079053A (ja) | ストレージジャーナリングを改善する方法およびシステム | |
WO2016101165A1 (zh) | 事务处理的方法、装置及计算机*** | |
EP3496356A1 (en) | Atomic cross-media writes on storage devices | |
US10783021B2 (en) | Transaction management for multi-node clusters | |
US10031689B2 (en) | Stream management for storage devices | |
KR102366512B1 (ko) | 논리 블록 어드레싱 범위 충돌 크롤러 | |
US9740423B2 (en) | Computer system | |
US20240086113A1 (en) | Synchronous write method and device, storage system and electronic device | |
US8145839B2 (en) | Raid—5 controller and accessing method with data stream distribution and aggregation operations based on the primitive data access block of storage devices | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
US10872041B2 (en) | Method and apparatus for journal aware cache management | |
US11662949B2 (en) | Storage server, a method of operating the same storage server and a data center including the same storage server | |
EP3058461A1 (en) | Concurrently accessing memory | |
CN111475112B (zh) | 一种提升Oracle数据库性能的装置及数据读写方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Patentee before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd. |