CN109710498B - 一种管理日志的方法和装置 - Google Patents

一种管理日志的方法和装置 Download PDF

Info

Publication number
CN109710498B
CN109710498B CN201711021894.2A CN201711021894A CN109710498B CN 109710498 B CN109710498 B CN 109710498B CN 201711021894 A CN201711021894 A CN 201711021894A CN 109710498 B CN109710498 B CN 109710498B
Authority
CN
China
Prior art keywords
time
snapshot
data
time tag
tag
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
Application number
CN201711021894.2A
Other languages
English (en)
Other versions
CN109710498A (zh
Inventor
王霖
杨忠兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201711021894.2A priority Critical patent/CN109710498B/zh
Publication of CN109710498A publication Critical patent/CN109710498A/zh
Application granted granted Critical
Publication of CN109710498B publication Critical patent/CN109710498B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种管理日志的方法和装置,涉及计算机技术领域,有助于节省刷盘所耗费的时间。该方法应用于缓存,缓存包括缓存控制器和日志盘,缓存控制器用于将数据保存到日志盘,日志盘包括多条日志,每条日志对应一个快照操作的数据或一个IO操作的数据;方法包括:接收IO操作,并获取第一时间标签;在确定第一时间标签早于系统时间的当前值的情况下,为该IO操作配置第二时间标签,系统时间指示缓存控制器进行快照操作的时间,缓存控制器每进行一次快照操作,系统时间相应更新一次,第二时间标签为执行第二时间标签配置操作时的系统时间或执行第二时间标签配置操作时的操作时间;将该IO操作的数据写入日志盘,该IO操作的数据包括第二时间标签。

Description

一种管理日志的方法和装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种管理日志的方法和装置。
背景技术
快照(snapshot)是存储的一个重要特性,其一个作用是能够进行在线数据的备份与恢复。快照是关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(即拷贝开始的时间点)的映像。快照可以是其所指定的数据的一个副本。而从技术角度来讲,快照是指向保存在存储系统中的数据的引用标记或指针。
存储系统每接收到一个快照操作,会在日志盘的一条日志(log)中记录该快照操作的数据。日志盘是存储系统的缓存(cache)中的存储空间。一个快照操作的数据包括该快照操作的标识以及该快照操作的时间标签等,不同快照操作的时间标签不同。存储系统每接收到一个输入输出(input/output,IO)操作(具体是指写操作),会在日志盘的一条日志中记录该IO 操作的数据。一个IO操作的数据包括该IO操作的标识、该IO操作携带的待写数据以及该 IO操作的时间标签等,不同IO操作的时间标签可以相同也可以不同。存储系统接收到的第1 个快照操作所指定的数据集合,是时间标签早于或等于该第1个快照操作的时间标签的IO操作所携带的待写数据构成的集合;存储系统接收到的其他快照操作所指定的数据集合,是时间标签晚于上一个快照操作的时间标签,且早于或等于该其他快照操作的时间标签的IO操作所携带的待写数据构成的集合。
通常,存储系统先将IO操作的数据写入日志盘,然后再通过日志回放,将日志盘中的IO 操作所携带的待写数据刷盘至持久性介质中。并且,存储系统需要按照以下规则进行刷盘:完成对一个快照操作所指定的数据集合中的所有数据的刷盘之后,才能执行对下一个快照操作所指定的数据的刷盘。为了方便描述,下文中将记录快照操作的数据的日志称为snapLog,将记录IO操作的数据的日志称为dataLog。将一个snapLog中记录的快照操作所指定的数据所在的dataLog,称为该snapLog对应的dataLog。如果不对日志进行管理,则可能出现snapLog 之后存在该snapLog对应的dataLog的情况,这样,在日志回放时,需要把日志盘上所有log 回放完,才能启动对该快照操作所指定的数据的刷盘,这会导致刷盘需要耗费的时间较长。
发明内容
为了节省刷盘所耗费的时间,本申请提供了一种管理日志的方法和装置。
第一方面,本申请提供了一种管理日志的方法。该方法可以应用于缓存,缓存包括缓存控制器和日志盘,缓存控制器用于将数据保存到日志盘,日志盘包括多条日志,每条日志对应一个快照操作的数据或一个IO操作的数据;方法包括:接收IO操作,并获取该IO操作的第一时间标签;在确定该IO操作的第一时间标签早于系统时间的当前值的情况下,为该IO 操作配置第二时间标签,系统时间指示缓存控制器进行快照操作的时间,缓存控制器每进行一次快照操作,系统时间相应更新一次,第二时间标签为执行第二时间标签配置操作时的系统时间或执行第二时间标签配置操作时的操作时间;将该IO操作的数据写入日志盘,其中该 IO操作的数据包括第二时间标签。该技术方案中,缓存控制器若确定某一IO操作的时间标签早于系统时间的当前值,则重新为该IO操作配置时间标签。这样,能够保证后写入日志盘的IO操作的时间标签均等于或晚于,先写入日志盘的快照操作的时间标签。如此一来,可以实现在日志回放时,每遇到一条snapLog,就可以认为针对该snapLog对应的快照操作所指定的数据已经全部回放完毕,从而可以启动对该快照操作所指定的数据的刷盘,进而节省刷盘时间。另外该方法可以支持缓存控制器并发进行至少两个操作(包括IO操作和/或快照操作),因此能够提高cache的性能,以及因及时执行快照操作而提高快照性能。
在一种可能的设计中,在确定该IO操作的第一时间标签早于系统时间的当前值的情况下,为该IO操作配置第二时间标签,可以包括:产生错误指示,根据错误指示重新进行该IO 操作,在重新进行该IO操作的过程中,为该IO操作配置第二时间标签。其中,进行IO操作,是指从对接收到的IO操作进行处理开始至将该IO操作的数据写入日志盘的过程。该可能的设计,提供了一种配置第二时间标签的实现方式,具体实现时不限于此。
在一种可能的设计中,将该IO操作的数据写入日志盘,可以包括:确定第二时间标签等于或晚于系统时间的当前值时,将该IO操作的数据写入日志盘。
在一种可能的设计中,该方法还可以包括:若该IO操作的数据写入日志盘失败,则为该 IO操作的配置第三时间标签,将该IO操作的数据写入日志盘,其中该IO操作的数据包括第三时间标签;其中,第三时间标签为执行第三时间标签配置操作时的系统时间或执行第三时间标签配置操作时的操作时间。该可能的设计提供了一种IO操作写入失败时的处理方式。
在一种可能的设计中,获取该IO操作的第一时间标签,可以包括:在接收到该IO操作时读取系统时间,将接收到该IO操作时的系统时间设置为第一时间标签。或者,将执行第一时间标签配置操作时的操作时间设置为第一时间标签。或者,将接收到该IO操作的接收时间设置为第一时间标签。当然本申请不限于此,例如,该IO操作中可以携带一个时间信息,然后,直接将该时间信息设置为第一时间标签。
在一种可能的设计中,接收到该IO操作时的系统时间为进行第一快照操作的时间;在设置第一时间标签之后,以及在确定该IO操作的第一时间标签与系统时间的当前值的关系之前,该方法还可以包括:进行第二快照操作,以及更新系统时间,更新后的系统时间为进行第二快照操作的时间。其中,第一快照操作是最近一次写入日志盘的快照操作。更新后的系统时间可以作为后续接收到的第二快照操作的下一个快照操作的时间标签,以及在接收到该下一个快照操作之前接收到的IO操作的时间标签。
在一种可能的设计中,进行第二快照操作,可以包括:获取第二快照操作的第四时间标签;在确定第二快照操作的第四时间标签早于系统时间的当前值的情况下,为第二快照操作配置第五时间标签,第五时间标签为执行第五时间标签配置操作时的系统时间或执行第五时间标签配置操作时的操作时间;将第二快照操作的数据写入日志盘,其中第二快照操作的数据包括第五时间标签。可选的,若第五时间标签等于或晚于系统时间的当前值,则将第二快照操作的数据写入日志盘。这样,有助于实现写入日志盘的任意两个快照操作的时间标签不同,从而可以支持缓存控制器并发进行多个快照操作,因此能够提高cache的性能,以及因及时执行快照操作而提高快照性能。
在一种可能的设计中,该方法还可以包括:若第二快照操作的数据写入失败,则获取第二快照操作的第六时间标签,将第二快照操作的数据写入日志盘,其中,第二快照操作的数据包括第六时间标签,第六时间标签是执行第六时间标签配置操作时的系统时间或执行所述第六时间标签配置操作时的操作时间。若第二快照操作的数据写入成功,则更新系统时间的值;其中,执行该获取步骤时系统时间的值。或者,若第二快照操作的数据写入失败,则输出第二快照操作执行失败的信息。该可能的设计提供了两种快照操作的数据写入失败时缓存控制器的处理方式。
第二方面,本申请提供了一种管理日志的方法。该方法可以应用于缓存,缓存包括缓存控制器和日志盘,缓存控制器用于将数据保存到日志盘,日志盘包括多条日志,每条日志对应一个快照操作的数据或一个IO操作的数据;方法包括:接收快照操作,并获取该快照操作的第四时间标签;在确定该快照操作的第四时间标签早于系统时间的当前值的情况下,为该快照操作配置第五时间标签,第五时间标签为执行第五时间标签配置操作时的系统时间或执行第五时间标签配置操作时的操作时间;将该快照操作的数据写入日志盘,其中该快照操作的数据包括第五时间标签。可选的,若第五时间标签等于或晚于系统时间的当前值,则将该快照操作的数据写入日志盘。该技术方案的有益效果可参考上文,此处不再赘述。
在一种可能的设计中,将该快照操作的数据写入日志盘,可以包括:若第五时间标签晚于或等于系统时间的当前值,则将该快照操作的数据写入日志盘。
在一种可能的设计中,该方法还可以包括:若该快照操作的数据写入成功,则更新系统时间,即更新系统时间的值。
基于第二方面提供的任一技术方案,在一种可能的设计中,该方法还可以包括:若该快照操作的数据写入失败,则获取该快照操作的第六时间标签,将该快照操作的数据写入日志盘,若该快照操作的数据写入成功,则更新系统时间的值;其中,第六时间标签是执行第六时间标签配置操作时的系统时间或执行第六时间标签配置操作时的操作时间。
基于第二方面提供的任一技术方案,在一种可能的设计中,该方法还可以包括:若该快照操作的数据写入失败,则输出该快照操作执行失败的信息。
第三方面,本申请提供了一种管理日志的装置,用于执行上述第一方面提供的管理日志的方法。
在一种可能的设计中,可以根据上述第一方面提供的方法对该装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。
在另一种可能的设计中,该装置可以包括:存储器和处理器,其中,存储器用于存储计算机程序,该计算机程序被处理器执行时,使得第一方面提供的任一方法被执行。其中,存储器可以是存储芯片等。处理器可以是缓存控制器等。该装置可以是存储设备。
第四方面,本申请提供了一种管理日志的装置,用于执行上述第二方面提供的管理日志的方法。
在一种可能的设计中,可以根据上述第二方面提供的方法对该装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。
在另一种可能的设计中,该装置可以包括:存储器和处理器,其中,存储器用于存储计算机程序,该计算机程序被处理器执行时,使得第二方面提供的任一方法被执行。其中,存储器可以是存储芯片等。处理器可以是缓存控制器等。该装置可以是存储设备。
本申请还提供了一种计算机可读存储介质,其上储存有计算机程序,当该程序在计算机上运行时,使得计算机执行上述第一方面至第二方面的任一种可能的方法。
本申请还提供了一种计算机程序产品,当其在计算机上运行时,使得第一方面至第二方面提供的任一方法被执行。
可以理解的,上述提供的任一种装置或计算机存储介质或计算机程序产品均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
附图说明
图1为现有技术提供的一种日志盘中记录的日志的示意图;
图2为本申请实施例提供的一种管理日志的方法的过程示意图;
图3为本申请实施例提供的技术方案所适用的一种存储系统的结构示意图;
图4为本申请实施例提供的一种缓存控制器的逻辑结构示意图;
图5A为本申请实施例提供的一种时间标签的示意图;
图5B为本申请实施例提供的另一种时间标签的示意图;
图6为本申请实施例提供的另一种时间标签的示意图;
图7为本申请实施例提供的一种管理日志的方法的流程示意图;
图8为本申请实施例提供的另一种管理日志的方法的流程示意图;
图9为本申请实施例提供的另一种管理日志的方法的流程示意图;
图10为本申请实施例提供的另一种管理日志的方法的流程示意图;
图11为本申请实施例提供的一种管理日志的方法的过程示意图;
图12为本申请实施例提供的另一种缓存控制器的结构示意图。
具体实施方式
如背景技术所述,如果不对日志进行管理,则可能出现snapLog之后存在该snapLog对应的dataLog的情况,这样,在日志回放时,需要把日志盘上所有log回放完,才能启动对该快照操作所指定的数据的刷盘,这会导致刷盘需要耗费的时间较长。例如,如图1所示,假设存储系统接收到的操作依次为:IO操作1、快照操作1、IO操作2。并且这3个操作的时间标签分别是tp0、tp0、tp1,tp1>tp0。由此可知,快照操作1所指定的数据集合是快照1携带的待写数据。若日志盘中log0、log1、log2中分别记录:快照操作1的数据,IO2操作的数据,IO操作1的数据。那么,在日志回放时,需要将log0、log1、log2全部回放完,才可以找到快照操作1所指定的数据(即log2中记录的IO操作1携带的待写数据),从而启动对该快照操作所指定的数据的刷盘,这会导致刷盘需要耗费的时间较长。
目前,一种管理日志的方法如下:在cache中设置一个队列,并且,缓存控制器接收到的每一个IO操作和每一个快照操作均按照接收先后顺序入队排序,然后按照先进先出的原则,依次将各操作的数据写入日志盘。假设存储设备接收到的操作依次为:IO操作1、快照操作1、IO操作2、IO操作3,则队列中的各操作的顺序,以及最终写到日志盘中的各操作的顺序均与此相同。图2示出了:缓存控制器已在log0中写入IO操作1的数据,此时,队列中缓存有快照操作1、IO操作2、IO操作3的场景下,将队列头的快照操作1的数据写入 log1的过程的示意图。然而,该技术方案虽然能够实现节省刷盘所耗费的时间,但是,该技术方案中,缓存控制器只有进行完一个操作(包括快照操作或IO操作)才能进行下一个操作,换句话说,缓存控制器是串行进行各操作的。这可能导致快照操作因不能及时处理而影响了快照的性能,并且存储设备串行进行各操作降低了cache的性能。
本申请实施例提供了一种管理日志的方法和装置。该技术方案能够实现节省刷盘所耗费的时间。另外,可以支持缓存控制器并发进行至少两个操作(包括IO操作和/或快照操作),因此有助于提高快照的性能和cache的性能。其基本原理是:缓存控制器若确定获取到的IO 操作的时间标签早于系统时间的当前值,则重新进行该IO操作。若确定获取到的IO操作的时间标签等于或晚于系统时间的当前值,则将该IO操作的数据写入日志盘。
如图3所示,是本申请提供的技术方案所适用的一种存储系统的结构示意图。该存储系统包括处理器10、cache20和持久性介质30。其中,处理器10是存储系统的控制中心,其可以例如但不限于是中央处理器(central processing unit,CPU)。cache20是介于处理器10与持久性介质30之间的高速存储器,主要用于提升存储系统的读写性能。cache20可以包括缓存控制器201和缓存空间202。缓存控制器201用于对缓存空间202中的数据进行管理,例如可以用于向缓存空间202中写入数据,或者,将缓存空间202中存储的数据写入持久性介质 30(即刷盘过程或下盘过程)等。缓存空间202用于缓存数据。持久性介质30又称非易失性存储介质,其一个特点是断电时,内容仍能保持。本申请对持久性介质30的具体实现不进行限定,例如可以是固态硬盘(solid state disk,SSD)等。
在log机制中,缓存空间202包括日志盘,日志盘包括一条或多条日志。每条日志对应一个快照操作的数据或一个IO操作的数据。其中,与一个快照操作的数据对应的日志中记录有该快照操作的数据,与一个IO操作的数据对应的日志中记录有该IO操作的数据。
按照功能进行模块划分时,缓存控制器201的一种逻辑结构示意图可以参考图4。如图4 所示,缓存控制器201可包括:cache代理(agent)2011、cache工作模块2012、数据管理(data manager)模块2013,以及cache日志模块2014。各模块之间的连接关系如图4所示。
cache代理2011,是cache的接入层,负责接收处理器10下发的IO操作和快照操作等控制面的命令。其中,处理器10发送的控制面的命令可以来自用户,也可以来自另外一个设备。若来自另外一个设备,则具体可以来自该另外一个设备的虚拟块服务(virtualblock service, VBS)模块。VBS模块用于向用户提供块设备语义,并接收用户从操作界面上下发的创建卷、删除卷、快照操作、IO操作等命令。
cache工作模块2012,负责执行cache业务流程,如回写、透写、读、预取、刷盘等。
数据管理模块2013,负责管理cache中的数据和元数据,例如管理IO操作的数据、IO 操作的元数据。另外,还可以负责管理系统时间等。
cache日志模块2014,负责将IO操作的数据和快照操作的数据以追加写的方式写到日志盘上。
可以理解的,上述对各模块所具备的功能的相关描述均是示例性的,其不对各模块所具备的功能进行限定。实际实现时,上述任意一个或多个模块还可以具有其他功能。并且,上述任意两个或两个模块之间可以是集成在一起的,也可以是独立存在的。下文中均是以上述任意两个模块是独立存在的为例进行说明。
以下,对本申请提供的技术方案所涉及的技术及术语进行简单介绍,以方便读者理解:
1)、系统时间
系统时间,用于指示缓存控制器进行快照操作的时间。系统时间可以是缓存控制器维护的一个参数。系统时间的值是可以更新的。具体的,缓存控制器每进行一次快照操作,系统时间相应更新一次,即:日志盘每记录一个快照操作的数据,系统时间的值就相应更新一次。
在本申请的一些实施例中,系统时间具体可以是每进行一次快照操作均累加的一个时间标识。示例的,可以设置系统时间的初始值是tp0,tp0可以例如但不限于是0。例如,缓存控制器进行第1个快照操作,即缓存控制器在日志盘上记录第1个快照操作的数据后,系统时间的值由tp0更新为tp1。缓存控制器进行第2个快照操作,即缓存控制器在日志盘上记录第2个快照操作的数据后,系统时间的值由tp1更新为tp2。tp2>tp1>tp0。系统时间的值每次增加的幅度可以是预设值,例如,该预设值可以是1,即tp2=tp1+1,tp1=tp0+1等。不同次增加的幅度可以相等,也可以不相等。
在本申请的另一些实施例中,系统时间具体可以是进行快照操作的操作时间。应注意,本申请中涉及的操作时间和接收时间均可以是绝对时间,例如10:00:00等,也可以是相对时间,即相对某一参考时刻的一个时间。
应注意,由于系统时间的值是可以更新的,因此缓存控制器在不同时刻获取到的系统时间的值,可以相同也可以不同。并且,本申请中的任一步骤中描述的“系统时间的当前值”均是指缓存控制器执行该步骤时系统时间的值。
2)、时间标签
时间标签,用于对IO操作和快照操作进行标记,以使存储系统确定快照操作所指定的数据集合。具体的:IO操作的时间标签用于对该IO操作进行标记。快照操作的时间标签用于对该快照操作进行标记。不同IO操作的时间标签可以相同也可以不同。不同快照操作的时间标签往往不同。本申请对IO操作的时间标签和快照操作的时间标签的获取方式不进行限定。
时间标签具体可以是执行该时间标签配置操作时的系统时间,或者执行该时间标签配置操作时的操作时间。
以下,通过具体示例,说明系统时间与时间标签之间的关系。假设存储系统接收到的操作依次为:IO操作1、快照操作1、IO操作2、IO操作3、快照操作2,IO操作4,那么:
若时间标签是执行该时间标签配置操作时的系统时间,系统时间是每进行一次快照操作均累加的一个时间标识,系统时间的初始值是tp0,则这些操作的时间标签可以依次是:tp0、 tp0、tp1、tp1、tp1、tp2,如图5A所示。其中,tp2>tp1>tp0。
若时间标签是执行该时间标签配置操作时的系统时间,系统时间是进行快照操作的操作时间,且系统时间的初始值是00:00:00,进行快照操作1的操作时间是00:00:02,进行快照操作2的操作时间是00:00:05,则这些操作的时间标签可以依次是:00:00:00、00:00:00、00:00:02、 00:00:02、00:00:02、00:00:05,如图5B所示。
若时间标签是执行该时间标签配置操作时的操作时间,则无论系统时间是每进行一次快照操作均累加的一个时间标识,还是进行快照操作的操作时间,这些操作的时间标签可以依次是:00:00:01、00:00:02、00:00:03、00:00:04、00:00:05、00:00:06,如图6所示。
上述对时间标签的具体实现方式的描述仅为示例,本申请不限于此。例如,在本申请的一些实施例中,缓存控制器在执行一个IO操作时,获取到的该IO操作的第一个时间标签(如下文中描述的第一时间标签),还可以是该IO操作中携带的一个时间信息,或者是存储系统接收到的该IO操作的接收时间。缓存控制器在执行一个快照操作时,获取到的该快照操作的第一个时间标签(如下文中描述的第四时间标签),还可以是该快照操作中携带的一个时间信息,或者是存储系统接收到的该快照操作的接收时间。
3)、IO操作的数据,快照操作的数据
IO操作的数据可以例如但不限于包括:IO操作的标识,IO操作携带的待写数据,IO操作的元数据,以及IO操作的时间标签等。IO操作的元数据是数据管理模块2013维护的,例如但不限于包括待写数据的物理地址,以及待写数据的长度等。
快照操作的数据可以例如但不限于包括:快照操作的标识、快照操作的时间标签等。
4)、进行IO操作,进行快照操作
进行IO操作,是指缓存控制器从对接收到的IO操作进行处理开始至将该IO操作的数据写入日志盘的过程。具体的,从cache代理2011向cache工作模块2012发送该IO操作开始,至cache日志模块2014执行将该IO操作的数据写入日志盘的过程。
进行快照操作,是指缓存控制器从对接收到的快照操作进行处理开始至将该快照操作的数据写入日志盘的过程。具体的,从cache代理2011向cache工作模块2012发送该快照操作开始,至cache日志模块2014将该快照操作的数据写入日志盘的过程。
在本申请的一些实施例中,缓存控制器在进行一次IO操作或快照操作的过程中,可能因某些因素重新开始进行该IO操作或该快照操作。其相关说明可参考下文。
5)、其他术语
本申请中的术语“多个”是指两个或两个以上。本申请中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。本申请中的术语“第一”、“第二”等是为了区分不同的对象,并不限定该不同对象的顺序。
以下,结合附图对本申请提供的技术方案进行说明。
如图7所示,为本申请提供的一种管理日志的方法。具体是缓存控制器在进行IO操作的过程中管理日志的方法。具体可以包括如下步骤S101至S106:
S101:缓存控制器接收IO操作,并获取该IO操作的第一时间标签。可选的,缓存控制器还可以获取该IO操作的元数据等。
该IO操作可以是缓存控制器接收到的任一IO操作。本申请中,缓存控制器接收到一个 IO操作后,可以直接进行该IO操作,即立即获取该IO操作的第一时间标签,并执行S102~S106。而无需判断是否已经进行完上一个操作(包括IO操作或快照操作等),从而有助于实现并发进行IO操作和快照操作,或并发进行多个IO操作。
缓存控制器获取该IO操作的第一时间标签,可以例如但不限于通过以下任一方式实现:
方式1:在接收到该IO操作时读取系统时间,将接收到该IO操作时的系统时间设置为第一时间标签。
方式2:将执行所述第一时间标签配置操作时的操作时间设置为第一时间标签。
方式3:将接收到该IO操作的接收时间设置为第一时间标签。
方式4:将该IO操作中携带的时间信息设置为第一时间标签。该方式中,实际实现时,可以在IO操作中携带一个时间信息,缓存控制器在接收到该IO操作时,可以将该时间信息作为第一时间标签。
S102:缓存控制器判断第一时间标签是否等于或晚于系统时间的当前值。其中,系统时间的当前值,是指执行该步骤S102时系统时间的值。
若是,则执行S103。若否,则执行S104。
若第一时间标签是通过上述方式1获取到的,则由于本申请中,缓存控制器可以并发进行IO操作和快照操作,因此在执行S101之后且执行S102之前,缓存控制器可能因进行了快照操作而导致系统时间的值增加了,该情况下,第一时间标签早于执行S102时系统时间的当前值。在执行S101之后且执行S102之前,也可能没有增加系统时间的值,该情况下,第一时间标签等于执行S102时系统时间的当前值。
若第一时间标签是通过上述方式2~4获取到的,则无论在执行S101之后且执行S102之前,系统时间的值是否增加了,均可能出现第一时间标签早于、等于或晚于执行S102时系统时间的当前值的情况。
需要说明的是,在具体实现过程中,若第一时间标签与系统时间的值不属于同一个时间域,即第一时间标签与系统时间的值的标记方式不同,则可以通过在存储系统中预存不同时间域中的时间的转换关系,从而判断不同时间域中的时间的早晚。例如,若第一时间标签是执行第一时间标签配置操作时的操作时间,如00:00:03,而系统时间的当前值是tp0,则可以将操作时间00:00:03转换到系统时间所在的时间域中,假设转换后为tp1,且tp1>tp0,那么,第一时间标签晚于系统时间的当前值。基于此可知,属于不同时间域的时间之间可以比较早晚(或大小),关于两个时间(包括两个时间标签,或一个时间标签和一个系统时间的当前值等)的比较的相关描述,均与此类似,下文中不再赘述。本文中描述的两个时间相同,是指两个时间在同一个时间域中相同。两个时间不同,是指这两个时间在同一个时间域中不同。
S103:缓存控制器将该IO操作的数据写入日志盘。具体的,缓存控制器以追加写的方式将该IO操作的数据写到日志盘上。该情况下,该IO操作的数据可以包括第一时间标签。另外,还可以包括:该IO操作的标识,该IO操作携带的待写数据,该IO操作的元数据等。
执行S103之后,执行S105。
S104:缓存控制器为该IO操作配置第二时间标签,并将该IO操作的数据写入日志盘。具体的,在第二时间标签等于或晚于系统时间的当前值时,将该IO操作的数据写入日志盘。其中,第二时间标签为执行第二时间标签配置操作时的系统时间或执行第二时间标签配置操作时的操作时间。系统时间的当前值是缓存控制器判断第二时间标签与系统时间的当前值的早晚关系时系统时间的值。该情况下,该IO操作的数据可以包括第二时间标签,可选的,还可以包括:该IO操作的标识,该IO操作携带的待写数据,该IO操作的元数据等。第二时间标签与第一时间标签一般不同。
在本申请的一些实施例中,S104可以包括:缓存控制器产生错误指示,并根据该错误指示重新进行该IO操作,在重新进行该IO操作的过程中,为该IO操作配置第二时间标签。
需要说明的是,S102中的“系统时间的当前值”是指执行S102时获取到的系统时间的值。 S104中的“系统时间的当前值”是指执行S104时获取到的系统时间的值。这两次获取到的系统时间的当前值可以相等也可以不相等。若不相等,则在S104中,可能出现第二时间标签早于系统时间的当前值的情况,此时,缓存控制器可以继续为该IO操作配置新的时间标签……直至某一次为该IO操作配置的时间标签等于或晚于系统时间的当前值时,将该IO操作的数据写入日志盘为止。另外,在一些实施例中,也可以设置重新进行同一IO操作的总次数,从而限定进行同一IO操作的次数小于等于该总次数。其中,本申请对该总次数的具体取值以及如何取值均不进行限定。
S105:缓存控制器判断该IO操作的数据是否写入成功。
若是,则进行该IO操作的流程结束。若否,则执行S106。
S106:缓存控制器为该IO操作配置第三时间标签,并将IO操作的数据写入日志盘。具体的,在第三时间标签等于或晚于系统时间的当前值时,将该IO操作的数据写入日志盘。其中,第三时间标签为执行第三时间标签配置操作时的系统时间或执行第三时间标签配置操作时的操作时间。系统时间的当前值是判断第三时间标签与系统时间的当前值的早晚关系时系统时间的值。该情况下,该IO操作的数据可以包括第三时间标签,可选的,还可以包括该IO 操作的标识,该IO操作携带的待写数据,该IO操作的元数据等。其中,第三时间标签与第一时间标签可以相等也可以不相等,第三时间标签与第二时间标签可以相等也可以不相等。
执行S106之后,则结束。S106给出了IO操作的数据写入失败时的一种处理方式,具体是重新进行该IO操作。
在本申请的一些实施例中,S106可以包括:缓存控制器产生错误指示,并根据该错误指示重新进行该IO操作,在重新进行该IO操作的过程中,为该IO操作配置第三时间标签。
可以理解的,若在本步骤中,第三时间标签早于系统时间的当前值或者写入失败,则可以重新进行该IO操作……直至将该IO操作的数据成功写入日志盘为止,或者在进行该IO 操作的次数达到预设值时结束进行该IO操作的流程。
本实施例提供的管理日志的方法中,缓存控制器若确定某一IO操作的时间标签早于系统时间的当前值,则重新为该IO操作配置时间标签。若确定某一IO操作的时间标签等于或晚于系统时间的当前值,则将该IO操作的数据写入日志盘。这样,能够保证后写入日志盘的IO 操作的时间标签均等于或晚于,先写入日志盘的快照操作的时间标签。如此一来,可以实现在日志回放时,每遇到一条snapLog,就可以认为针对该snapLog对应的快照操作所指定的数据已经全部回放完毕,从而可以启动对该快照操作所指定的数据的刷盘,进而节省刷盘时间。另外,该方法可以支持缓存控制器并发进行至少两个操作(包括IO操作和/或快照操作),因此能够提高cache的性能,以及因及时进行快照操作而提高快照性能。
结合图4,上述图7所示的实施例可以如图8所示。其中,该实施例中是以第一时间标签、第二时间标签和第三时间标签均是执行相应时间标签配置操作时的系统时间为例进行说明的。图8所示的方法具体可以包括如下步骤S201至S206:
S201:cache代理接收到处理器发送的IO操作,并将该IO操作发送给cache工作模块。 cache工作模块接收到该IO操作后,从数据管理模块中获取系统时间的当前值,并将该当前值作为该IO操作的第一时间标签。可选的,cache工作模块还可以从数据管理模块中获取该 IO操作的元数据。
cache代理可以在接收到一个IO操作后,直接将该IO操作发送给cache工作模块,而无需判断cache工作模块是否已经进行完上一个操作(包括IO操作或快照操作等),从而有助于实现并发进行IO操作和快照操作,或并发进行多个IO操作。
S202:cache工作模块从数据管理模块中获取系统时间的当前值,并判断第一时间标签是否等于系统时间的当前值。
若是,则执行S203。若否,则执行S204。
应注意,由于本实施例中,时间标签是执行相应时间标签配置操作时的系统时间,因此,若S202的判断结果是“否”,说明第一时间标签早于系统时间的当前值。具体分析过程可参考上文,此处不再赘述。
应注意,由于在执行S201中获取系统时间的当前值至执行S202中判断步骤的过程中,缓存控制器可能因进行了快照操作而使得系统时间更新了,因此,在执行判断步骤时,可以再获取一次系统时间的当前值,以获取最新的系统时间。
S203:cache工作模块将该IO操作的数据发送给cache日志模块。cache日志模块在接收到该IO操作的数据之后,以追加写的方式将该IO操作的数据写到日志盘上。
其中,这里的该IO操作的数据可以包括:该IO操作的标识、该IO操作携带的待写数据、该IO操作的元数据以及第一时间标签。该IO操作的元数据可以例如但不限于是cache工作模块在获取第一时间标签时从数据管理模块中获得的。
执行S203之后,执行S205。
S204:cache工作模块向cache代理反馈第一错误指示,第一错误指示用于指示第一时间标签早于系统时间的当前值。cache代理接收到第一错误指示后,决策重新进行该IO操作。其中,重新进行该IO操作可以包括:cache代理重新将该IO操作发送给cache工作模块。cache 工作模块接收到该IO操作后,从数据管理模块中获取系统时间的当前值,并将该当前值作为该IO操作的第二时间标签。然后获取系统时间的当前值,并在第二时间标签等于系统时间的当前值时,将该IO操作的数据发送给cache日志模块。cache日志模块接收到该IO操作的数据后,以追加写的方式将该IO操作的数据写到日志盘上。
其中,这里的该IO操作的数据可以包括:该IO操作的标识、该IO操作携带的待写数据、该IO操作的元数据以及第二时间标签等。这里的该IO操作的元数据可以例如但不限于是cache工作模块在获取第二时间标签时从数据管理模块中获得的。需要说明的是,S204和S203中该IO操作的数据包括的元数据,可以相同也可以不同。
应注意,在一种实现方式中,cache工作模块是在cache代理的控制下工作的,换句话说, cache工作模块是被动工作的。基于此,在S204中,cache代理需要向cache代理反馈第一错误指示,然后由cache代理决定是否重新进行该IO操作。当然,本申请不限于此,例如,在一种实现方式中,cache工作模块在步骤S202中确定第一时间标签早于系统时间的当前值时,可以直接重新从数据管理模块中获取系统时间的当前值,并将该当前值作为该IO操作的第二时间标签,而无需向cache代理反馈第一错误指示。
S205:cache日志模块判断该IO操作的数据是否写入成功。
若是,则进行该IO操作的流程结束。若否,则执行S206。
S206:cache日志模块向cache代理反馈第二错误指示,第二错误指示用于指示该IO操作的数据写入失败。cache代理接收到第二错误指示后,决策重新进行该IO操作。其中,重新进行该IO操作可以包括:cache代理重新将该IO操作发送给cache工作模块。cache工作模块接收到该IO操作后,从数据管理模块中获取系统时间的当前值,并将该当前值作为该IO 操作的第三时间标签。然后获取系统时间的当前值,并在第三时间标签等于系统时间的当前值时,将该IO操作的数据发送给cache日志模块。cache日志模块接收到该IO操作的数据后,以追加写的方式将该IO操作的数据写到日志盘上。
其中,这里的该IO操作的数据可以包括:该IO操作的标识、该IO操作携带的待写数据、该IO操作的元数据以及第三时间标签等。这里的该IO操作的元数据可以例如但不限于是cache工作模块在获取第三时间标签时从数据管理模块中获得的。需要说明的是,S206、S204和S203中的该IO操作的数据包括的元数据中的任意两个可以相同也可以不同。
应注意,上述S206中,也是以cache工作模块是被动工作的为例进行说明的。当然,本申请不限于此,例如,在一种实现方式中,cache日志模块在S205中确定该IO操作的数据没有写入成功时,直接向给cache工作模块反馈第二错误指示;cache工作模块在接收到第二错误指示后,直接从数据管理模块中获取系统时间的当前值,并将该当前值作为该IO操作的第三时间标签。
可以理解的,本实施例中,若第二时间标签早于系统时间的当前值,或者第三时间标签早于系统时间的当前值,或者写入失败,则可以重新进行该IO操作,直至将该IO操作的数据写入日志盘为止或者在进行该IO操作的次数达到预设值时结束进行该IO操作的流程。
如图9所示,为本申请提供的一种管理日志的方法。具体是缓存控制器在进行快照操作的过程中管理日志的方法。具体可以包括如下步骤S301至S307:
S301:缓存控制器接收第二快照操作,并获取第二快照操作的第四时间标签。
第二快照操作可以是缓存控制器接收到的任一快照操作。本申请中,缓存控制器接收到第二快照操作后,可以直接进行第二快照操作,即立即获取第二快照操作的时间标签,并继续执行S302~S306。而无需判断是否已经进行完上一个操作(包括IO操作或快照操作等),从而有助于实现并发进行IO操作和快照操作,或并发进行多个快照操作。
缓存控制器获取第二操作的第四时间标签,可以例如但不限于通过以下任一方式实现:
方式A:在接收到第二快照操作时读取系统时间,将接收到第二快照操作时的系统时间设置为第四时间标签。
方式B:将执行第四时间标签配置操作时的操作时间设置为第四时间标签。
方式C:将接收到第二快照操作的接收时间设置为第四时间标签。
方式D:将第二快照操作中携带的时间信息设置为第四时间标签。该方式中,实际实现时,可以在第二快照中携带一个时间信息,缓存控制器在接收到第二快照操作时,可以将该时间信息作为第四时间标签。
S302:缓存控制器判断第四时间标签是否等于或晚于系统时间的当前值。其中,系统时间的当前值,是指执行该步骤S302时系统时间的值。若此时日志盘中已写入了快照操作的数据,则系统时间的当前值可以是进行第一快照操作的时间,其中,第一快照操作是最近一次写入日志盘的快照操作。若此时日志盘中还没有写入快照操作的数据,则系统时间的当前值可以是系统时间的初始值。
若是,则执行S303。若否,则执行S304。
若第四时间标签是通过上述方式A获取到的,则由于本申请中,缓存控制器可以并发进行至少两个快照操作,因此,在执行S301之后且执行S302之前,缓存控制器可能因进行了其他快照操作而导致系统时间的值增加了,该情况下,第四时间标签早于执行S302时系统时间的当前值。在执行S301之后且执行S302之前,也可能没有增加系统时间的值,该情况下,第四时间标签等于执行S302时系统时间的当前值。
若第四时间标签是通过上述方式B~D获取到的,则无论在执行S301之后且执行S302 之前,系统时间的值是否增加了,均可能出现第四时间标签早于、等于或晚于执行S302时系统时间的当前值的情况。
S303:缓存控制器将第二快照操作的数据写入日志盘。具体的,缓存控制器以追加写的方式将第二快照操作的数据写到日志盘上。该情况下,第二快照操作的数据可以包括第四时间标签,可选的,还可以包括第二快照操作的标识等。
执行S303之后,执行S305。
S304:缓存控制器为第二快照操作配置第五时间标签,并将第二快照操作的数据写入日志盘。具体的,在第五时间标签等于或晚于系统时间的当前值时,将第二快照操作的数据写入日志盘。其中,第五时间标签是缓存控制器执行第五时间标签配置操作时的系统时间或执行第五时间标签配置操作时的操作时间。系统时间的当前值是判断第五时间标签与系统时间的当前值的早晚时系统时间的值。第五时间标签与第四时间标签一般不同。
在本申请的一些实施例中,S304可以包括:缓存控制器产生错误指示,并根据该错误指示重新进行该第二快照操作,在重新进行第二快照操作的过程中,为第二快照操作配置第五时间标签。
可以理解的,若第五时间标签早于系统时间的当前值的情况,此时,缓存控制器可以继续为第二快照操作配置新的时间标签……直至某一次为第二快照操作配置的时间标签等于或晚于系统时间的当前值时,将第二快照操作的数据写入日志盘。
S305:缓存控制器判断第二快照操作的数据是否写入成功。
若是,则执行S306。若否,则执行S307。
S306:缓存控制器更新系统时间的值。
执行S306之后,则进行第二快照操作的流程结束。
S307:缓存控制器为第二快照操作配置第六时间标签,并将第二快照操作的数据写入日志盘,具体的,在第六时间标签等于或晚于系统时间的当前值时,将第二快照操作的数据写入日志盘。并在写入成功时,更新系统时间的值。其中,第六时间标签是执行第六时间标签配置操作时的系统时间或执行所述第六时间标签配置操作时的操作时间。系统时间的当前值是判断第六时间标签与系统时间的当前值的早晚时系统时间的值。第六时间标签与第四时间标签可以相等也可以不相等,第六时间标签与第五时间标签可以相等也可以不相等。
执行S307之后,则进行第二快照操作的流程结束。
在本申请的一些实施例中,S307可以包括:缓存控制器产生错误指示,并根据该错误指示重新进行该第二快照操作,在重新进行第二快照操作的过程中,为第二快照操作配置第六时间标签。
需要说明的是,在S305的判断结果为“否”时,缓存控制器可以不执行S307,而执行输出第二快照操作进行失败的信息。另外,更新后的系统时间为进行第二快照操作的时间,在一些实施例中,更新后的系统时间可以作为缓存控制器接收到的下一个快照操作的时间标签,以及可以作为缓存控制器在接收到下一个快照操作之前接收到的IO操作的时间标签。
以下通过具体示例说明,进行某一快照操作的时间与该快照操作的时间标签之间的关系:
参见图5A,假设最近一次写入日志盘的快照操作(即第一快照操作)是快照操作1,则进行快照操作1的时间是tp1,而快照操作1的时间标签是tp0。该情况下,第二快照操作即为图5A中的快照操作2,进行快照操作2的时间是tp2,而快照操作2的时间标签是tp1。
参见图5B,假设最近一次写入日志盘的快照操作(即第一快照操作)是快照操作1,则进行快照操作1的时间是00:00:02,而快照操作1的时间标签是00:00:00。该情况下,第二快照操作即为图5B中的快照操作2,进行快照操作2的时间是00:00:05,而快照操作2的时间标签是00:00:02。
本实施例中,相关内容的描述可参考上文,此处不再赘述。
本实施例提供的管理日志的方法中,缓存控制器若确定某一快照操作的时间标签早于系统时间的当前值,则重新进行该快照操作。若确定某一快照操作的时间标签等于或晚于系统时间的当前值,则将该快照操作的数据写入日志盘。这样,有助于实现写入日志盘的任意两个快照操作的时间标签不同,从而可以支持缓存控制器并发进行多个快照操作,因此能够提高cache的性能,以及因及时进行快照操作而提高快照性能。另外,本实施例给出了快照操作的数据写入失败时缓存控制器的处理方式,具体是重新进行该快照操作或者输出该快照操作进行失败的信息。
结合图4,上述图9所示的实施例可以如图10所示。其中,该实施例中是以第四时间标签、第五时间标签和第六时间标签均是执行相应时间标签配置操作时的系统时间为例进行说明的。具体可以包括如下步骤S401至S407:
S401:cache代理接收到处理器发送的快照操作,并将该快照操作发送给cache工作模块。 cache工作模块接收到该快照操作后,从数据管理模块中获取系统时间的当前值,并将该当前值作为该快照操作的第四时间标签。
cache代理可以在接收到一个快照操作后,直接将该快照操作发送给cache工作模块,而无需判断cache工作模块是否已经进行完上一个操作(包括快照操作或快照操作等),从而有助于实现并发进行IO操作和快照操作,或并发进行多个快照操作。
S402:cache工作模块从数据管理模块中获取系统时间的当前值,并判断第四时间标签是否等于系统时间的当前值。
若是,则执行S403。若否,则执行S404。本实施例中,若否,说明第四时间标签早于系统时间的当前值。其相关内容的解释可参考上文,此处不再赘述。
应注意,由于在执行S401中获取系统时间的当前值至执行S402中判断步骤的过程中,缓存控制器可能因进行了其他快照操作而使得系统时间更新了,因此,在执行判断步骤时,可以再获取一次系统时间的当前值,以获取最新的系统时间。
S403:cache工作模块将该快照操作的数据发送给cache日志模块。cache日志模块在接收到该快照操作的数据之后,以追加写的方式将该快照操作的数据写到日志盘上。
其中,这里的该快照操作的数据可以包括:该快照操作的标识以及第四时间标签等。
执行S403之后,执行S405。
S404:cache工作模块向cache代理反馈第三错误指示,第三错误指示用于指示第四时间标签早于系统时间的当前值。cache代理接收到第三错误指示后,决策重新进行该快照操作。其中,重新进行该快照操作可以包括:cache代理将该快照操作发送给cache工作模块。cache 工作模块接收到该快照操作后,从数据管理模块中获取系统时间的当前值,并将该当前值作为该快照操作的第五时间标签。然后获取系统时间的当前值,并在第五时间标签等于系统时间的当前值时,将该快照操作的数据发送给cache日志模块。cache日志模块接收到该快照操作的数据后,以追加写的方式将该快照操作的数据写到日志盘上。其中,这里的该快照操作的数据可以包括:该快照操作的标识以及第五时间标签等。
S405:cache日志模块判断该快照操作的数据是否写入成功。
若是,则执行S406。若否,则执行S407。
S406:cache日志模块向cache工作模块发送指示信息,该指示信息用于指示该快照操作写入成功。cache工作模块接收到该指示信息之后,向数据管理模块发送更新指示信息,该更新指示信息用于指示数据管理模块更新系统时间的值。数据管理模块接收到该更新指示信息后,更新系统时间的值。
执行S406之后,则进行该快照操作的流程结束。
S407:cache日志模块向cache代理反馈第四错误指示,第四错误指示用于指示该快照操作的数据写入失败。cache代理接收到第四错误指示后,决策重新进行该快照操作。其中,重新进行该快照操作可以包括:重新将该快照操作发送给cache工作模块。cache工作模块接收到该快照操作后,从数据管理模块中获取系统时间的当前值,并将该当前值作为该快照操作的第六时间标签。然后获取系统时间的当前值,并在第六时间标签等于系统时间的当前值时,将该快照操作的数据发送给cache日志模块。cache日志模块接收到该快照操作的数据后,以追加写的方式将该快照操作的数据写到日志盘上。在写入成功时,cache日志模块向cache工作模块发送指示信息,该指示信息用于指示该快照操作写入成功。cache工作模块接收到该指示信息之后,向数据管理模块发送更新指示信息,该更新指示信息用于指示数据管理模块更新系统时间的值。数据管理模块接收到该更新指示信息后,增加系统时间的值。其中,这里的该快照操作的数据可以包括:该快照操作的标识以及第六时间标签等。
需要说明的是,若S403的判断结果是“否”,则另一种实现方式可以是:cache代理接收到第三错误指示后,决策并输出第一快照操作进行失败的信息。图10中未示出。
可以理解的,本实施例中,若第五时间标签早于系统时间的当前值,或者第六时间标签早于系统时间的当前值,或者写入失败,则可以重新进行该IO操作,直至将该IO操作的数据写入日志盘为止或者在进行该IO操作的次数达到预设值时结束进行该IO操作的流程。
下面以一个具体示例对上文提供的管理日志的方法进行示例性说明。
如图11所示,为本申请提供的一种管理日志的方法的过程示意图。其中,该实施例中是以时间标签是执行该时间标签配置操作时的系统时间为例进行说明的。图11所示的方法包括以下步骤S1至S7:
S1:cache代理依次接收到处理器发送的IO操作1、快照操作1、IO操作2,图11中分别标记为IO1、快照1、IO2。cache代理将接收到的上述操作发送给cache工作模块。
S2:对于IO操作1,cache工作模块接收到IO操作1后,获取系统时间的当前值tp0,并将该当前值tp0作为IO操作1的时间标签。
后续,可以继续按照上文图7所示的实施例进行IO操作1。其中,本实施例中,假设继续进行IO操作1的过程中,在判断IO操作1的时间标签tp0与系统时间的当前值之前,系统时间的值由tp0更新成了tp1。基于此,继续进行IO操作1可参考下述S5、S7。
S3:对于快照操作1,cache工作模块接收到快照操作1后,获取系统时间的当前值tp0,并将该当前值tp0作为快照操作1的时间标签。由于快照操作1的时间标签tp0等于系统时间的当前值tp0,因此,以追加写的方式,将快照操作1的信息写入日志盘的log0中。写入成功后,将系统时间的值由tp0增加至tp1。其中,log0中记录的快照操作1的时间标签是tp0。
S4:对于IO操作2,cache工作模块接收到IO操作2后,获取系统时间的当前值tp1,并将该当前值tp1作为IO操作2的时间标签。
后续,可以继续按照上文图7所示的实施例进行IO操作2,具体可参考下述S6。
S5:对于IO操作1,由于IO操作1的时间标签tp0小于系统时间的当前值tp1,因此,可以重新进行IO操作1。具体过程可以参考上文,此处不再赘述。
S6:对于IO操作2,由于IO操作2的时间标签tp1等于系统时间的当前值tp1,因此,将IO操作2的信息写入日志盘的log1中。其中,log1中记录的IO操作2的时间标签是tp1。
S7:重新进行IO操作1的过程中,cache工作模块获取到的系统时间的当前值是tp1,由于此时IO1操作的时间标签tp1等于系统时间的当前值tp1,因此,将IO操作1的信息写入日志盘的log2中。其中,log2中记录的IO操作1的时间标签是tp1。
可以理解的,上述图11所示的实施例仅为一种示例,实际实现时,不限于此。但是,按照上文图7~图10所示的方法执行,均能够保证后写入日志盘的IO操作的时间标签均等于或晚于,先写入日志盘的快照操作的时间标签。如此一来,可以实现在日志回放时,每遇到一条snapLog,就可以认为针对该snapLog对应的快照操作所指定的数据已经全部回放完毕,从而可以启动对该快照操作所指定的数据的刷盘,进而节省刷盘时间。另外,该方法可以支持缓存控制器并发进行至少两个操作(包括IO操作和/或快照操作),因此能够提高cache的性能,以及因及时进行快照操作而提高快照性能。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对缓存控制器进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。其中,一种功能模块划分方式可如图4所示,下面提供另一种功能划分划分方式。
如图12所示,为本申请实施例提供的一种缓存控制器,该缓存控制器可以是图3中的缓存控制器201。该装置用于将数据保存到日志盘,日志盘包括多条日志,每条日志对应一个快照操作的数据或一个IO操作的数据;该缓存控制器可以包括:接收单元1201、获取单元 1202、配置单元1203和写入单元1204。其中,接收单元1201,用于接收IO操作。获取单元1202,用于获取该IO操作的第一时间标签。配置单元1203,用于在确定该IO操作的第一时间标签早于系统时间的当前值的情况下,为该IO操作配置第二时间标签,系统时间指示缓存控制器进行快照操作的时间,缓存控制器每进行一次快照操作,系统时间相应更新一次,第二时间标签为执行第二时间标签配置操作时的系统时间或执行第二时间标签配置操作时的操作时间。写入单元1204,用于将该IO操作的数据写入日志盘,其中该IO操作的数据包括第二时间标签。结合图7,接收单元1201可以用于执行S101中的接收步骤。获取单元1202可以用于执行S101中的获取步骤。配置单元1203可以用于执行S104中的获取步骤。写入单元1204可以用于执行S104中的写入步骤。
在一种可能的设计中,配置单元1203具体可以用于:产生错误指示,根据错误指示重新进行该IO操作,在重新进行该IO操作的过程中,为该IO操作配置第二时间标签。结合图8,配置单元1203可以用于执行S204中的发送第一错误指示,发送该IO操作,以及获取系统时间的当前值并将该当前值作为第二时间标签的步骤。
在一种可能的设计中,写入单元1204具体可以用于:确定第二时间标签等于或晚于系统时间的当前值时,将该IO操作的数据写入日志盘。
在一种可能的设计中,配置单元1203还可以用于:若该IO操作的数据写入日志盘失败,则为该IO操作的配置第三时间标签;其中,第三时间标签为执行第三时间标签配置操作时的系统时间或执行第三时间标签配置操作时的操作时间。写入单元1204还可以用于:将该IO 操作的数据写入日志盘;其中该IO操作的数据包括第三时间标签。结合图7,配置单元1203 还可以用于S106中的配置步骤,写入单元1204还可以用于执行S106中的写入步骤。
在一种可能的设计中,获取单元1201具体可以用于:在接收到该IO操作时读取系统时间,将接收到该IO操作时的系统时间设置为第一时间标签;或者,将执行第一时间标签配置操作时的操作时间设置为第一时间标签;或者,将接收到该IO操作的接收时间设置为第一时间标签。
在一种可能的设计中,接收到该IO操作时的系统时间为进行第一快照操作的时间;缓存控制器还可以包括:执行单元1205和更新单元1206。其中,执行单元1205,用于在设置第一时间标签之后,以及在确定该IO操作的第一时间标签与系统时间的当前值的关系之前,进行第二快照操作。更新单元1206,用于在进行第二快照操作之后,以及在确定该IO操作的第一时间标签与系统时间的当前值的关系之前,更新系统时间,更新后的系统时间为进行第二快照操作的时间。
在一种可能的设计中,执行单元1205具体可以用于:获取第二快照操作的第四时间标签;在确定第二快照操作的第四时间标签早于系统时间的当前值的情况下,为第二快照操作配置第五时间标签,第五时间标签为执行第五时间标签配置操作时的系统时间或执行第五时间标签配置操作时的操作时间;将第二快照操作的数据写入日志盘,其中第二快照操作的数据包括第五时间标签。结合图9,执行单元1205具体可以用于执行S301至S304。
在一种可能的设计中,结合图4,接收单元1201可以对应cache代理2011。获取单元1202、配置单元1203、执行单元1205可以对应cache工作模块2012。写入模块1204可以对应cache 日志模块2014。更新单元1206可以对应数据管理模块2013。
由于本申请实施例提供的管理日志的装置可以用于执行上述管理日志的方法,因此其所能获得的技术效果可参考上述方法实施例,本申请实施例在此不再赘述。
结合本申请公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理模块执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(readonly memory,ROM)、可擦除可编程只读存储器(erasable programmable ROM,EPROM)、电可擦可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围。

Claims (16)

1.一种管理日志的方法,其特征在于,应用于缓存,所述缓存包括缓存控制器和日志盘,所述缓存控制器用于将数据保存到所述日志盘,所述日志盘包括多条日志,每条日志对应一个快照操作的数据或一个IO操作的数据;所述方法包括:
接收IO操作,并获取所述IO操作的第一时间标签;在确定所述IO操作的第一时间标签早于系统时间的当前值的情况下,为所述IO操作配置第二时间标签,所述系统时间指示所述缓存控制器进行快照操作的时间,所述缓存控制器每进行一次快照操作,所述系统时间相应更新一次,所述第二时间标签为执行所述第二时间标签配置操作时的系统时间或执行所述第二时间标签配置操作时的操作时间;
将所述IO操作的数据写入所述日志盘,其中所述IO操作的数据包括所述第二时间标签。
2.根据权利要求1所述的方法,其特征在于,所述在确定所述IO操作的第一时间标签早于系统时间的当前值的情况下,为所述IO操作配置第二时间标签包括:
产生错误指示,根据所述错误指示重新进行所述IO操作,在重新进行所述IO操作的过程中,为所述IO操作配置第二时间标签。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述IO操作的数据写入所述日志盘包括:
确定所述第二时间标签等于或晚于所述系统时间的当前值时,将所述IO操作的数据写入所述日志盘。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若所述IO操作的数据写入所述日志盘失败,则为所述IO操作的配置第三时间标签,将所述IO操作的数据写入所述日志盘,其中所述IO操作的数据包括所述第三时间标签;其中,所述第三时间标签为执行所述第三时间标签配置操作时的系统时间或执行所述第三时间标签配置操作时的操作时间。
5.根据权利要求1或2所述的方法,其特征在于,所述获取所述IO操作的第一时间标签包括:
在接收到所述IO操作时读取所述系统时间,将接收到所述IO操作时的系统时间设置为所述第一时间标签;
或者,将执行所述第一时间标签配置操作时的操作时间设置为所述第一时间标签;
或者,将接收到所述IO操作的接收时间设置为所述第一时间标签。
6.根据权利要求5所述的方法,其特征在于,所述接收到所述IO操作时的系统时间为进行第一快照操作的时间;在设置所述第一时间标签之后,以及在所述确定所述IO操作的第一时间标签与系统时间的当前值的关系之前,所述方法还包括:
进行第二快照操作,以及更新所述系统时间,所述更新后的系统时间为进行所述第二快照操作的时间。
7.根据权利要求6所述的方法,其特征在于,所述进行第二快照操作包括:
获取所述第二快照操作的第四时间标签;
在确定所述第二快照操作的第四时间标签早于系统时间的当前值的情况下,为所述第二快照操作配置第五时间标签,所述第五时间标签为执行所述第五时间标签配置操作时的系统时间或执行所述第五时间标签配置操作时的操作时间;
将所述第二快照操作的数据写入所述日志盘,其中所述第二快照操作的数据包括所述第五时间标签。
8.一种缓存控制器,其特征在于,所述缓存控制器用于将数据保存到日志盘,所述日志盘包括多条日志,每条日志对应一个快照操作的数据或一个IO操作的数据;所述缓存控制器包括:
接收单元,用于接收IO操作;
获取单元,用于获取所述IO操作的第一时间标签;
配置单元,用于在确定所述IO操作的第一时间标签早于系统时间的当前值的情况下,为所述IO操作配置第二时间标签,所述系统时间指示所述缓存控制器进行快照操作的时间,所述缓存控制器每进行一次快照操作,所述系统时间相应更新一次,所述第二时间标签为执行所述第二时间标签配置操作时的系统时间或执行所述第二时间标签配置操作时的操作时间;
写入单元,用于将所述IO操作的数据写入所述日志盘,其中所述IO操作的数据包括所述第二时间标签。
9.根据权利要求8所述的缓存控制器,其特征在于,
所述配置单元具体用于:产生错误指示,根据所述错误指示重新进行所述IO操作,在重新进行所述IO操作的过程中,为所述IO操作配置第二时间标签。
10.根据权利要求8或9所述的缓存控制器,其特征在于,
所述写入单元具体用于:确定所述第二时间标签等于或晚于所述系统时间的当前值时,将所述IO操作的数据写入所述日志盘。
11.根据权利要求8或9所述的缓存控制器,其特征在于,
所述配置单元还用于:若所述IO操作的数据写入所述日志盘失败,则为所述IO操作的配置第三时间标签;其中,所述第三时间标签为执行所述第三时间标签配置操作时的系统时间或执行所述第三时间标签配置操作时的操作时间
所述写入单元还用于:将所述IO操作的数据写入所述日志盘;其中所述IO操作的数据包括所述第三时间标签。
12.根据权利要求8或9所述的缓存控制器,其特征在于,
所述获取单元具体用于:在接收到所述IO操作时读取所述系统时间,将接收到所述IO操作时的系统时间设置为所述第一时间标签;或者,将执行所述第一时间标签配置操作时的操作时间设置为所述第一时间标签;或者,将接收到所述IO操作的接收时间设置为所述第一时间标签。
13.根据权利要求12所述的缓存控制器,其特征在于,所述接收到所述IO操作时的系统时间为进行第一快照操作的时间;所述缓存控制器还包括:执行单元和更新单元;
所述执行单元,用于在设置所述第一时间标签之后,以及在所述确定所述IO操作的第一时间标签与系统时间的当前值的关系之前,进行第二快照操作;
所述更新单元,用于在进行第二快照操作之后,以及在所述确定所述IO操作的第一时间标签与系统时间的当前值的关系之前,更新所述系统时间,所述更新后的系统时间为进行所述第二快照操作的时间。
14.根据权利要求13所述的缓存控制器,其特征在于,所述执行单元具体用于:
获取所述第二快照操作的第四时间标签;
在确定所述第二快照操作的第四时间标签早于系统时间的当前值的情况下,为所述第二快照操作配置第五时间标签,所述第五时间标签为执行所述第五时间标签配置操作时的系统时间或执行所述第五时间标签配置操作时的操作时间;
将所述第二快照操作的数据写入所述日志盘,其中所述第二快照操作的数据包括所述第五时间标签。
15.一种管理日志的装置,其特征在于,包括:存储器和处理器,其中,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,使得如权利要求1至7任一项所述的方法被执行。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序在计算机上运行时,使得如权利要求1至7任一项所述的方法被执行。
CN201711021894.2A 2017-10-26 2017-10-26 一种管理日志的方法和装置 Active CN109710498B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711021894.2A CN109710498B (zh) 2017-10-26 2017-10-26 一种管理日志的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711021894.2A CN109710498B (zh) 2017-10-26 2017-10-26 一种管理日志的方法和装置

Publications (2)

Publication Number Publication Date
CN109710498A CN109710498A (zh) 2019-05-03
CN109710498B true CN109710498B (zh) 2020-09-29

Family

ID=66253577

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711021894.2A Active CN109710498B (zh) 2017-10-26 2017-10-26 一种管理日志的方法和装置

Country Status (1)

Country Link
CN (1) CN109710498B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100198793A1 (en) * 2009-02-03 2010-08-05 Ofer Elrom Methods of multi-server application synchronization without stopping i/o
CN102043687A (zh) * 2009-10-20 2011-05-04 杭州华三通信技术有限公司 实现数据快照的首写拷贝装置及控制方法
CN102779080A (zh) * 2012-06-18 2012-11-14 上海爱数软件有限公司 生成快照的方法、利用快照进行数据恢复的方法及装置
US20150277800A1 (en) * 2012-07-16 2015-10-01 Compellent Technologies Systems and methods for replication of data utilizing delta volumes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100198793A1 (en) * 2009-02-03 2010-08-05 Ofer Elrom Methods of multi-server application synchronization without stopping i/o
CN102043687A (zh) * 2009-10-20 2011-05-04 杭州华三通信技术有限公司 实现数据快照的首写拷贝装置及控制方法
CN102779080A (zh) * 2012-06-18 2012-11-14 上海爱数软件有限公司 生成快照的方法、利用快照进行数据恢复的方法及装置
US20150277800A1 (en) * 2012-07-16 2015-10-01 Compellent Technologies Systems and methods for replication of data utilizing delta volumes

Also Published As

Publication number Publication date
CN109710498A (zh) 2019-05-03

Similar Documents

Publication Publication Date Title
KR101824295B1 (ko) 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리
US9335931B2 (en) System and method for making snapshots of storage devices
KR20170021287A (ko) 비휘발성 데이터 저장장치 내부에서 원자적으로 복수의 기록 트랜잭션을 수행하는 장치 제어기 및 방법
US8161259B2 (en) Computer system, storage system and method for saving storage area by integrating same data
US20150253992A1 (en) Memory system and control method
CN107870869A (zh) 包括由主机控制的存储装置的计算系统
CN104969168A (zh) 具有用于分级写入的nvram的持久性存储装置
JP4561168B2 (ja) データ処理システムおよび方法並びにその処理プログラム
CN108829342B (zh) 一种日志存储方法、系统及存储装置
US20130067147A1 (en) Storage device, controller, and read command executing method
CN105210028A (zh) 在持久存储器装置中的连续数据块和非连续组的逻辑地址块之间的读取和写入
US20150149741A1 (en) Storage System and Control Method Thereof
US8327041B2 (en) Storage device and data transfer method for the same
CN111399750A (zh) 闪存数据写入方法及计算机可读取存储介质
WO2012167582A1 (en) System and method for making snapshots of storage devices
US9483395B2 (en) Asynchronous bad block management in NAND flash memory
CN112214157A (zh) 主机输出输入命令的执行装置及方法及计算机可读取存储介质
CN111240879A (zh) 一种sas卡固件日志收集方法、系统、装置及存储介质
US8631166B2 (en) Storage devices with bi-directional communication techniques and method of forming bi-directional communication layer between them
CN109710498B (zh) 一种管理日志的方法和装置
JP2005316632A (ja) キャッシュ制御およびデータ処理システム並びにその処理プログラム
US7010650B2 (en) Multiple data management method, computer and storage device therefor
CN115629714B (zh) Raid卡的写方法、raid卡的写系统及相关装置
KR100981064B1 (ko) 저널링 파일 시스템을 이용한 소프트웨어 레이드에서의 일관성 유지방법
CN112650445B (zh) 一种固态硬盘执行Trim的方法和设备

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