数据处理方法、装置、设备及可读存储介质与流程

文档序号:18475180发布日期:2019-08-20 20:55阅读:135来源:国知局
数据处理方法、装置、设备及可读存储介质与流程

本发明涉及数据处理技术领域,具体涉及一种数据处理方法、装置、设备及可读存储介质。



背景技术:

全球网络存储工业协会(storagenetworkingindustryassociation,snia)对快照(snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。snapshot可以是其所表示的数据的一个副本,也可以是数据的一个复制品。

snapshot的一个主要用途是能够进行在线数据备份与恢复,当存储设备发生应用故障或者文件损坏时可以进行快速的数据恢复,将数据恢复某个可用的时间点的状态;另一个主要用途是为存储用户提供了另外一个数据访问通道,当原数据进行在线应用处理时,用户可以访问快照数据,还可以利用快照进行测试等工作。

当前实现快照的一种主要方式是写时复制(copyonwrite,cow)快照。cow是在某时间点接受存储控制面的快照命令,存储数据面只需要新增快照元数据,因此,cow快照可以瞬间完成。但是cow快照之后,对磁盘的写操作需要特殊处理,对于快照后没写过的区域进行写时,需要先将该区域数据块从磁盘上拷贝到另外的区域存储,在快照元数据中记录原有数据映射记录,然后覆盖写磁盘。可见,采用cow方式实现快照,会导致快照后业务磁盘的写输入/输出(input/output,i/o)性能明显下降。



技术实现要素:

本申请提供了一种数据处理方法、装置、设备及可读存储介质,能够有效改善由于cow快照所导致的写操作请求的业务性能下降的问题。

第一方面,本申请提供了一种数据处理方法,方法应用于主机中,主机分别与第一存储设备和第二存储设备连接,数据处理方法包括:接收对第一存储设备的操作请求,操作请求为写操作请求或cow快照请求;以顺序存储的方式,将操作请求的日志信息写入预配置的日志存储空间,其中,日志存储空间包括第二存储设备中的指定存储空间,写操作请求的日志信息包括待写入数据、待写入数据的起始存储位置和待写入数据长度,cow快照请求的日志信息为包括快照标识id的快照标签,起始存储位置为待写入数据在第一存储设备中的起始存储位置;返回操作请求的操作完成信息;在返回操作完成信息后,根据日志存储空间中日志信息的存储顺序,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放,并将回放成功的日志信息从日志存储空间中删除。

本申请中,主机在接收到客户端应用程序对存储设备的写操作请求或快照请求时,首先将操作请求的日志信息进行存储,在存储成功后即可向客户端返回操作成功的响应信息,之后可以再根据所存储的日志信息通过后台执行的方式,将日志信息在存储设备上进行回放,完成相应操作请求在存储设备上的持久化。通过该方式,在对存储设备进行cow快照操作时,可以使客户端不感知快照的过程,与现有的cow快照方式相比,改善了因cow快照导致应用程序写i/o性能下降的问题,提高了cow快照后存储设备业务的写i/o性能。

结合第一方面,在一种可能的实施方式中,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放,包括:若待回放的日志信息为写操作请求的日志信息,则根据待回放的日志信息生成写操作指令,将写操作指令发送至第一存储设备;若待回放的日志信息为快照标签,则控制对第一存储设备进行cow快照操作。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,日志存储空间还包括主机的内存中的指定内存空间;将操作请求的日志信息写入预配置的日志存储空间,包括:将操作请求的日志信息写入指定存储空间;在将操作请求的日志信息写入指定存储空间之后,将操作请求的日志信息写入指定内存空间;根据日志存储空间中日志信息的存储顺序,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放,包括:根据指定内存空间中日志信息的存储顺序,控制将指定内存空间中所存储的日志信息在第一存储设备上依次进行回放。

本申请中,由于内存比第一存储设备的访问速度快,通过操作请求的日志信息存储在指定内存空间,能够有效提高日志信息读取或回放的效率,通过将操作请求信息存储在日志存储空间,则保障了在主机断电或系统崩溃等异常情况发生,导致指定内存空间中的日志信息丢失时,能够根据指定存储空间中所存储的日志信息,将所有日志信息正确的回放到第一存储设备上。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,若操作请求为写操作请求,接收对第一存储设备的操作请求之后,还包括:根据写操作请求的接收顺序,为写操作请求分配操作序号,写操作请求的日志信息还包括写操作请求所对应的操作序号。

本申请中,主机接收到读操作请求时,若读操作请求中待读取数据的起始存储位置在日志存储空间中对应的日志信息为两个或两个以上时,可以通过所分配的写操作请求的操作序号,确定出待读取数据所对应的最新的日志信息,从而实现了能够快速的读取到正确的待读取数据。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,指定内存空间包括第一内存空间、第二内存空间和第三内存空间;将操作请求的日志信息写入指定内存空间,包括:若操作请求为写操作请求,则将写操作请求中的待写入数据写入第一内存空间,并生成待写入数据的位置索引;将以待写入数据的起始存储位置为键、以待写入数据的位置索引为值的键值对写入第二内存空间;将以待写入数据所对应的操作序号为键、以待写入数据的位置索引为值的键值对写入第三内存空间;若操作请求为cow快照请求,则将cow快照请求的快照标签写入到第三内存空间。

本申请中,采用键值对进行数据存储时,可对所存储的数据没有统一的字段格式要求,数据的存储与读取均是以键值对作为标识进行,采用该方案,能够有效提高数据的读写效率。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,根据指定内存空间中日志信息的存储顺序,控制将指定内存空间中所存储的日志信息在第一存储设备上依次进行回放,包括:顺序读取第三内存空间中所存储的日志信息中的数据;若所读取的数据为键值对,则根据读取的键值对的值在第一内存空间中查找对应的待写入数据,根据读取的键值对的值在第二内存空间中查找对应的起始存储位置;根据查找到的待写入数据和起始存储位置生成写操作指令,将写操作指令发送给第一存储设备;若读取的数据为快照标签,则控制对第一存储设备进行cow快照操作。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,将写操作请求中的待写入数据写入第一内存空间,包括:确定第一内存空间的可用存储空间是否大于设定值;若第一内存空间的可用存储空间大于设定值,则将写操作请求中的待写入数据写入第一内存空间;若第一内存空间的可用存储空间不大于设定值,则获取待写入数据在指定存储空间中的存储位置信息,以待写入数据在指定存储空间中的存储位置信息替代待写入数据,写入到第一内存空间;根据读取的键值对的值在第二内存空间中查找对应的待写入数据,包括:若根据读取的键值对的值在第二内存空间中查找到的为存储位置信息,则根据查找到的存储位置信息在指定存储空间中读取对应的待写入数据。

本申请中,由于内存的存储空间相对较小,在第一内存空间的可用存储空间不大于设定值时,可以将待写入数据在指定存储空间的存储位置信息替代待写入数据写入到第一内存空间中,从而达到节省内存空间的目的,避免因第一内存空间的可用存储空间不足导致数据溢出或其它异常问题。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,将写操作请求中的待写入数据写入第一内存空间,包括:若第一内存空间的可用存储空间大于设定值,确定写操作请求是否符合预设的存储筛选条件;若写操作请求符合存储筛选条件,则将写操作请求的待写入数据写入第一内存空间;若写操作请求不符合存储筛选条件,则获取待写入数据在指定存储空间中的存储位置信息,以待写入数据在指定存储空间中的存储位置信息替代待写入数据,写入到第一内存空间。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,若操作请求为写操作请求,将操作请求的日志信息写入预配置的日志存储空间之后,方法还包括:通过布隆过滤器记录写操作请求中的起始存储位置的位置标识为第一标识,第一标识用于标识起始存储位置所对应的最新数据存储于日志存储空间中;若待回放的日志信息为写操作请求的日志信息,则控制将写操作请求的日志信息在第一存储设备上进行回放之后,还包括:通过布隆过滤器更新所回放的日志信息中的起始存储位置的位置标识为第二标识,第二标识用于标识起始存储位置所对应的最新数据存储在第一存储设备中。

本申请中,可以通过配置布隆过滤器来记录写操作请求中的待写入数据是已经回写到了第一存储设备中,还是存储在上述日志存储空间中,从而在接收到读操作请求时,能够通过布隆过滤器快速的确定出待读取数据所在的存储位置,大大提高的数据的读取效率。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,布隆过滤器设置在主机中或者设置在第一存储设备中。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,数据处理方法还包括:接收客户端对第一存储设备的读操作请求,读操作请求包括待读取数据的起始存储位置和待读取数据的第一数据长度;通过布隆过滤器确定待读取数据的起始存储位置的位置标识;若待读取数据的起始存储位置的位置标识为第一标识,则根据读操作请求在日志存储空间中读取待读取数据;若待读取数据的起始存储位置的位置标识为第二标识,则根据读操作请求在第一存储设备中读取待读取数据。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,若日志存储空间还包括指定内存空间,根据读操作请求在日志存储空间中读取待读取数据,包括:根据待读取数据的起始存储位置在指定内存空间中读取对应的待写入数据。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,根据读操作请求在日志存储空间中读取待读取数据,包括:根据待读取数据的起始存储位置在日志存储空间中查找对应的日志信息;确定查找到的日志信息中的待写入数据的第二数据长度;若第二数据长度不小于第一数据长度,则从查找到的日志信息中的待写入数据中顺序读取长度等于第一数据长度的待读取数据;若第二数据长度小于第一数据长度,则读取查找到的日志信息中的待写入数据,并通过布隆过滤器确定新的起始存储位置的位置标识,根据新的起始存储位置的位置标识从日志存储空间或第一存储设备中再次读取对应的数据,将再次读取的数据与日志信息中的待写入数据拼接,得到待读取数据;其中,新的起始存储位置为待读取数据的起始位置与第二数据长度之和,新的数据长度为第一数据长度与第二数据长度之差。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,写操作请求的日志信息还包括写操作请求所对应的操作序号;若待读取数据的起始存储位置在日志存储空间中对应的日志信息为至少两条,方法还包括:将至少两条日志信息中操作序号最大的日志信息确定为待读取数据的起始存储位置在日志存储空间中对应的日志信息。

本申请中,通过设置写操作请求的操作序号,保证了在进行数据读取时,如果所需要读取的待读取数据的起始存储位置在日志存储空间中对应的日志信息为至少两条时,能够根据操作序号,获取到待读取数据的起始存储位置的最新数据,保障了所读取的数据的正确性。

结合第一方面或第一方面的上述实施方式中,在一种可能的实施方式中,根据读操作请求在第一存储设备中读取待读取数据,包括:将读操作请求发送至第一存储设备,接收第一存储设备返回的待读取数据。

第二方面,本申请提供了一种数据处理装置,数据处理装置设置在主机中,主机分别与第一存储设备和第二存储设备连接,装置包括:操作请求接收模块,用于接收对第一存储设备的操作请求,操作请求为写操作请求或cow快照请求;操作日志存储模块,用于以顺序存储的方式,将操作请求的日志信息写入预配置的日志存储空间,其中,日志存储空间包括第二存储设备中的指定存储空间,写操作请求的日志信息包括待写入数据、待写入数据的起始存储位置和待写入数据长度,cow快照请求的日志信息为包括快照标识id的快照标签,起始存储位置为待写入数据在第一存储设备中的起始存储位置;操作请求响应模块,用于返回操作请求的操作完成信息;操作日志回放模块,用于在操作请求响应模块返回操作完成信息后,根据日志存储空间中日志信息的存储顺序,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放,并将回放成功的日志信息从日志存储空间中删除。

结合第二方面,在一种可能的实施方式中,操作日志回放模块包括:

回写单元,用于在待回放的日志信息为写操作请求的日志信息时,根据待回放的日志信息生成写操作指令,将写操作指令发送至第一存储设备;

快照单元,用于在待回放的日志信息为快照标签时,控制对第一存储设备进行cow快照操作。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,日志存储空间还包括主机的内存中的指定内存空间;操作日志存储模块包括:第一日志存储单元,用于将操作请求的日志信息写入指定存储空间;第二日志存储单元,用于在将操作请求的日志信息写入指定存储空间之后,将操作请求的日志信息写入指定内存空间;

操作日志回放模块在根据日志存储空间中日志信息的存储顺序,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放时,具体用于:根据指定内存空间中日志信息的存储顺序,控制将指定内存空间中所存储的日志信息在第一存储设备上依次进行回放。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,若操作请求为写操作请求,操作请求接收模块在接收对第一存储设备的操作请求之后,还用于:根据写操作请求的接收顺序,为写操作请求分配操作序号,写操作请求的日志信息还包括写操作请求所对应的操作序号。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,指定内存空间包括第一内存空间、第二内存空间和第三内存空间;第二日志存储单元在将操作请求的日志信息写入指定内存空间时,具体用于:若操作请求为写操作请求,则将写操作请求中的待写入数据写入第一内存空间,并生成待写入数据的位置索引;将以待写入数据的起始存储位置为键、以待写入数据的位置索引为值的键值对写入第二内存空间;将以待写入数据所对应的操作序号为键、以待写入数据的位置索引为值的键值对写入第三内存空间;若操作请求为cow快照请求,则将cow快照请求的快照标签写入到第三内存空间。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,操作日志回放模块在根据指定内存空间中日志信息的存储顺序,控制将指定内存空间中所存储的日志信息在第一存储设备上依次进行回放时,具体用于:顺序读取第三内存空间中所存储的日志信息中的数据;若所读取的数据为键值对,则根据读取的键值对的值在第一内存空间中查找对应的待写入数据,根据读取的键值对的值在第二内存空间中查找对应的起始存储位置;根据查找到的待写入数据和起始存储位置生成写操作指令,将写操作指令发送给第一存储设备;若读取的数据为快照标签,则控制对第一存储设备进行cow快照操作。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,第二日志存储单元在将写操作请求中的待写入数据写入第一内存空间时,具体用于:确定第一内存空间的可用存储空间是否大于设定值;若第一内存空间的可用存储空间大于设定值,则将写操作请求中的待写入数据写入第一内存空间;若第一内存空间的可用存储空间不大于设定值,则获取待写入数据在指定存储空间中的存储位置信息,以待写入数据在指定存储空间中的存储位置信息替代待写入数据,写入到第一内存空间;

操作日志回放模块在根据读取的键值对的值在第二内存空间中查找对应的待写入数据时,具体用于:若根据读取的键值对的值在第二内存空间中查找到的为存储位置信息,则根据查找到的存储位置信息在指定存储空间中读取对应的待写入数据。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,第二日志存储单元将写操作请求中的待写入数据写入第一内存空间时,具体用于:若第一内存空间的可用存储空间大于设定值,确定写操作请求是否符合预设的存储筛选条件;若写操作请求符合存储筛选条件,则将写操作请求的待写入数据写入第一内存空间;若写操作请求不符合存储筛选条件,则获取待写入数据在指定存储空间中的存储位置信息,以待写入数据在指定存储空间中的存储位置信息替代待写入数据,写入到第一内存空间。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,装置还包括:存储位置确定模块,用于在操作请求为写操作请求时,在将操作请求的日志信息写入预配置的日志存储空间之后,通过布隆过滤器记录写操作请求中的起始存储位置的位置标识为第一标识,第一标识用于标识起始存储位置所对应的最新数据存储于日志存储空间中;以及用于在待回放的日志信息为写操作请求的日志信息时,在控制将写操作请求的日志信息在第一存储设备上进行回放之后,通过布隆过滤器更新所回放的日志信息中的起始存储位置的位置标识为第二标识,第二标识用于标识起始存储位置所对应的最新数据存储在第一存储设备中。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,操作请求接收模块,还用于接收客户端对第一存储设备的读操作请求,读操作请求包括待读取数据的起始存储位置和待读取数据的第一数据长度;存储位置确定模块,还用于通过布隆过滤器确定待读取数据的起始存储位置的位置标识;装置还包括:数据读取模块,用于在待读取数据的起始存储位置的位置标识为第一标识,根据读操作请求在日志存储空间中读取待读取数据,在待读取数据的起始存储位置的位置标识为第二标识,则根据读操作请求在第一存储设备中读取待读取数据。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,若日志存储空间还包括指定内存空间,数据读取模块在根据读操作请求在日志存储空间中读取待读取数据时,具体用于:根据待读取数据的起始存储位置在指定内存空间中读取对应的待写入数据。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,数据读取模块在根据读操作请求在日志存储空间中读取待读取数据时,具体用于:根据待读取数据的起始存储位置在日志存储空间中查找对应的日志信息;确定查找到的日志信息中的待写入数据的第二数据长度;若第二数据长度不小于第一数据长度,则从查找到的日志信息中的待写入数据中顺序读取长度等于第一数据长度的待读取数据;若第二数据长度小于第一数据长度,则读取查找到的日志信息中的待写入数据,并生成新的读操作请求,将新的读操作请求发送至第一存储设备,接收第一存储设备返回的数据,将第一存储设备返回的数据与查找到的待写入数据拼接,得到待读取数据;其中,新的读操作请求包括新的起始存储位置和新的数据长度,新的起始存储位置为待读取数据的起始位置与第二数据长度之和,新的数据长度为第一数据长度与第二数据长度之差。

结合第二方面或第二方面的上述实施方式中,在一种可能的实施方式中,若写操作请求的日志信息还包括写操作请求所对应的操作序号;数据读取模块在根据待读取数据的起始存储位置在日志存储空间中查找对应的日志信息时,具体用于:若待读取数据的起始存储位置在日志存储空间中对应的日志信息为至少两条,将至少两条日志信息中操作序号最大的日志信息确定为待读取数据的起始存储位置在日志存储空间中对应的日志信息。

第三方面,本申请提供一种数据处理设备,数据处理设备包括存储器和处理器;存储器用于存储计算机程序代码;处理器用于读取计算机程序代码来运行与计算机程序代码对应的计算机程序,以执行如第一方面或第一方面的任一种实施方式中的数据处理方法。

第四方面,本申请提供了一种计算机可读存储介质,可读存储介质中存储有计算机指令,当计算机指令在处理器上运行时,使得处理器执行如第一方面或第一方面的任一种实施方式中的数据处理方法。

第五方面,本申请提供了一种计算机程序产品,计算机产品包括可读计算机指令,当计算机产品在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一种实施方式中的数据处理方法。

第六方面,本申请提供了一种计算机程序,当计算机程序在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一种实施方式中的数据处理方法。

附图说明

图1示出了本发明实施例所适用的一种存储系统的结构示意图;

图2示出了本发明一实施例的操作请求的日志信息的存储结构示意图;

图3示出了本发明实施例的一种数据处理方法的流程示意图;

图4示出了本发明一实施例中一种数据处理装置的示意性框图;

图5示出了本发明另一实施例中一种数据处理装置的示意性框图;

图6示出了本发明又一实施例中一种数据处理装置的示意性框图;

图7示出了根据本发明实施例的一种数据处理设备的示意性框图。

具体实施方式

本发明实施例提供了一种数据处理方法、装置、设备及可读存储介质。本发明实施例的方案,主机在接收到主机上的应用程序客户端发送的对存储设备的写操作请求或快照请求时,首先将操作请求的日志信息进行存储,在存储成功后即可向客户端返回操作成功的响应信息,再根据存储的日志信息通过后台执行的方式,将日志信息在存储设备上进行回放,完成相应操作请求在存储设备上的持久化。通过该方法,在对存储设备进行cow快照操作时,通过后台的方式控制完成对存储设备的cow快照操作,可以使应用程序客户端不感知快照的过程,与现有的cow快照方式相比,提高了cow快照后存储设备业务的写i/o性能。

图1示出了本发明实施例所适用的一种存储系统的结构示意图。如图1所示,该存储系统包括主机100。主机100主要可以包括处理器110、以及分别与处理器110连接的i/o模块120、内存130、第一存储设备140、第二存储设备150、以及布隆过滤器160。其中,主机100可以是计算机、个人电脑(pc)等计算设备,第一存储设备140和第二存储设备150可以是磁盘或硬盘等存储介质。

处理器110通过i/o模块120接收应用程序客户端200200对第一存储设备140的操作请求,该操作请求可以是写操作请求、cow快照请求或读操作请求。其中,写操作请求中包括待写入数据、待写入数据的起始存储位置(待写入数据在第一存储设备140中的起始存储位置)以及待写入数据的数据长度(简称待写入数据长度)等信息,读操作请求则包括待读取数据在第一存储设备140中的起始存储位置以及待读取数据的数据长度等信息。对于cow快照请求,处理器110在接收到cow快照请求时,会为该快照请求生成能够唯一标识快照请求的快照标识。

图1所示的存储系统中,内存130和第二存储设备150中均设置有用于存储处理器110所接收到的操作请求的日志信息的日志存储空间,为了区分内存130和第二存储设备150中用于存储日志信息的不同存储空间,主机100的内存130中用于存储日志信息的存储空间称为指定内存空间131,第二存储设备150中用于存储日志信息的存储空间称为指定存储空间151。由于内存150的访问速度比磁盘或硬盘等存储设备的访问速度快,因此,通过指定内存空间131存储日志信息能够有效提高日志信息读取或回放的速度。指定存储空间151则用于保证在主机100断电或系统崩溃等异常情况发生,导致指定内存空间131中的日志信息丢失时,能够根据指定存储空间151中所存储的日志信息,将所有日志信息正确的回放到第一存储设备140上。

其中,写操作请求的日志信息可以包括待写入数据、待写入数据的起始存储位置、以及待写入数据长度,cow快照请求的日志为包括快照标识的快照标签(tag)。

布隆过滤器160用于记录写操作请求中的待写入数据的起始存储位置的位置标识,其中,起始存储位置的位置标识为第一标识或第二标识,第一标识用于标识起始存储位置所对应的最新数据存储于日志存储空间中,第二标识用于标识起始存储位置所对应的最新数据存储在第一存储设备140中。处理器110可以通过布隆过滤器160快速确定出第一存储设备140的某一起始存储位置所对应的最新数据是存储在日志存储空间中,还是已经回写到第一存储设备140中。

处理器110通过i/o模块接收到客户端发送的写操作请求或cow快照请求时,首先以顺序存储的方式,将写操作请求或快照请求的日志信息写入到指定存储空间151中,之后再以顺序存储的方式,将日志信息写入到指定内存空间131中。其中,在将日志信息写入到指定存储空间151成功后,即可向客户端返回操作成功的响应信息,这是因为日志信息以顺序存储的方式写入指定存储空间151成功后,处理器110便可以通过后台运行的方式,控制将指定存储空间151中所记录的日志信息依次回放到第一存储设备140中,保证了客户端操作的成功执行。通过该方案,在操作请求为cow快照请求时,基于所存储的cow快照请求的日志信息以及后台日志回放的方式实现了异步cow快照操作,解决了现有cow快照操作时在业务i/o过程中进行数据拷贝,导致快照后对第一存储设备140的写操作请求的性能明显下降的问题。

如果操作请求为写操作请求,在将写操作请求的日志信息先后写入指定存储空间151和指定内存空间131之后,处理器110通过布隆过滤器160记录该写操作请求中的起始存储位置的位置标识为第一标识,即记录以该写操作请求中的该起始存储位置为起始存储位置的存储空间的当前最新数据位于日志存储空间中。

由于日志信息是以顺序存储的方式写入到日志存储空间中的,因此,处理器110可以依据日志存储空间中日志信息的存储顺序,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放,以实现客户端操作请求的持久化,如果操作请求为写操作请求,则将写操作请求中的待写入数据持久化到第一存储设备140中,如果操作请求为cow快照请求,则控制对第一存储设备140进行cow快照操作。

对于图1中所示的存储系统,由前文描述可知,指定内存空间131和指定存储空间151中均存储了所接收到的操作请求的日志信息,处理器110在控制将日志信息在第一存储设备140上进行回放时,为了提高日志信息的回放效率,处理器110可以根据指定内存空间130中日志信息的存储顺序,控制将指定内存空间中所存储的日志信息在第一存储设备140上依次进行回放。若在日志信息回放过程中,主机100出现断电或者系统崩溃等异常现象,导致内存130中存储的数据丢失时,则主机100在重新上电恢复正常时,则可以根据指定存储空间151中存储的日志信息进行回放,保证了客户端对第一存储设备140的所有操作请求,都能够在第一存储设备140上执行。

其中,日志信息的回放指的是将日志信息所对应的操作请求在第一存储设备140上执行。具体的,例如,若待回放的日志信息为写操作请求的日志信息,则控制将日志信息在第一存储设备140上进行回放,是指根据待回放的日志信息生成写操作指令,并将写操作指令发送至第一存储设备140,以使第一存储设备140根据该写操作指令,将指令中的待写入数据写入到第一存储设备140中以指令中起始存储位置为起始存储位置的存储空间中。若待回放的日志信息为快照tag,处理器110直接控制对第一存储设备140进行cow快照操作即可。在每一条日志信息回放成功之后,处理器110需要将第二存储设备150和内存130中所存储的该日志信息删除,以释放该日志信息所占用的存储空间,并避免日志信息被重复回放导致数据处理出错的问题。

此外,对于写操作请求的日志信息,日志信息在第一存储设备140中回放成功后,处理器110还需要通过布隆过滤器160更新该日志信息中的起始存储位置的位置标识为第二标识,即更新以该起始存储位置为起始存储位置的存储空间的当前最新数据已经持久化到了第一存储设备140中。

对于图1中所示的存储系统,处理器110在通过i/o模块120接收到客户端对第一存储设备140的读操作请求时,由于布隆过滤器160中记录了第一存储设备140中的起始存储位置的位置标识,因此,处理器110可以通过布隆过滤器140快速的确定出读操作请求中的起始存储位置的最新数据的存储位置是位于日志存储空间中,还是位于第一存储设备140中,如果位于日志存储空间中,则可以根据读操作请求中的起始存储位置在指定内存空间151中查找对应的待读取数据,如果位于第一存储设备140中,则从第一存储设备140的对应起始存储位置中读取待读取数据即可。

可以理解的,在实际应用中,根据待读取数据的数据长度,待读取数据也有可能出现部分位于日志存储空间,部分位于第一存储设备140中的情况。这是因为根据起始存储位置确定出待读取数据位于日志存储空间时,如果日志存储空间中存储的待写入数据的数据长度小于待读取数据的数据长度,则剩余部分的待读取数据需要从第一存储设备140中读取。

本发明实施例,可以通过内存130存储日志信息的方式,加快日志信息回放至第一存储设备140的速度,从而使得大部分待读取数据都是位于第一存储设备140中,大部分数据直接从第一存储设备140中读取即可,而无需多次查找最新数据的存储位置,提高了读i/o的性能。

可以理解的是,图1中只是本发明实施例所适用的一种存储系统的示意性结构图。在实际应用中,第一存储设备140、第二存储设备150、以及布隆过滤器160的实际设置位置均不唯一的。例如,第一存储设备140和第二存储设备150可以是主机100内部的存储设备,也可以是与主机100连接的外接存储设备。在第一存储设备140是与主机100连接的外接存储设备时,布隆过滤器160可以是设置在主机100中,也可以是设置在第一存储设备140中。日志信息在指定存储空间151和指定内存空间131中的具体存储形式也并不是唯一的,是根据需要进行设置的。

图2示出了本发明一个具体示例中的日志信息的存储结构示意图。如图2中所示,本具体示例中,第一存储设备140具体实现为图2中所示的硬盘,预写式日志(writeaheadlog,wal)文件为本具体示例中第二存储设备150中预划分的指定存储空间151。内存130中预划分的指定内存空间131包括三个部分,分别为第一内存空间(图2中所示的数据块存储块所占用的存储空间)、第二内存空间(图2中所示的io位置字典(map)所占用的存储空间)和第三内存空间(图2中所示io序列map所占用的存储空间)。

在实际你应用中,主机100在接收到读操作请求时,如果待读取数据的最新数据还未持久化到第一存储设备140中,且待读取数据的起始存储位置所对应的日志信息在日志存储空间中有两个或两个以上时,为了能够快速正确的确定出所需要读取的最新数据,处理器110在接收到客户端i/0模块120发送的写操作请求之后,可以根据写操作请求的接收顺序,为写操作请求分配操作序号(图2中所示的io序号),操作序号标识了当前写处理操作请求在处理器110所接收到的写操作请求中排序,写操作请求的日志信息还可以包括该操作序号。通过该方式,在根据读操作请求中的待读取数据的起始位置标识在指定内存空间131中查找待读取数据时,如果待读取数据的起始位置标识对应的日志信息为多个,则可以根据操作序号,读取操作序号最大的日志信息中的待写入数据,得到正确的待读取数据。

本示例中,处理器110在接收到cow快照请求时,直接将该cow快照请求的日志信息即快照标签写入第三内存空间即可。处理器110在接收到写操作请求时,首先根据该写操作请求的接收顺序,为写操作请求分配io序号,将写操作请求的io序号、io位置和待写入数据顺序写入到wal文件中。在将日志信息写入到wal文件中之后,再将日志信息写入到指定内存空间的第一内存空间、第二内存空间和第三内存空间中,具体的,可以将写操作请求中的待写入数据写入到数据存储块,并生成待写入数据在数据存储块中的位置索引,将以写操作请求中的待写入数据在硬盘的起始存储位置(图中所示的io位置)为键、以待写入数据在第一内存空间的位置索引为值的键值对写入io位置map,将以操作请求的io序号为键、以待写入数据在第一指定空间的位置索引为值的键值对写入io序列map。将写操作请求的日志信息写入到指定内存空间131之后,处理器110通过布隆过滤器160记录将该日志信息中的起始存储位置即io的位置标识为第一标识。

对于图2中所示的存储结构,处理器110根据指定内存空间131中所存储的日志信息,控制将日志信息在硬盘上进行回放时,处理器110顺序读取io序列map中的数据,如果读取到的数据为键值对,则说明读取的日志信息为写操作请求的日志信息,则根据读取的键值对的值(位置索引)在第一内存空间中查找对应的待写入数据,根据读取的键值对的值(位置索引)在io位置map中查找对应的io位置,根据查找到的待写入数据和io位置生成对应的写操作指令并发送至硬盘,以使硬盘的控制器根据该写操作指令将指令中的待写入数据写入到以指令中的起始存储位置为起始存储位置的存储空间中。若在io序列map读取的过程中,读取到了快照标签,则控制对硬盘进行cow快照操作。

图3示出了本发明实施例提供的一种数据处理方法的流程示意图,该数据处理方法应用于主机中,具体可以由主机的处理器执行,主机分别与第一存储设备和第二存储设备连接。其中,需要说明的是,第一存储设备和/或第二存储设备既可以是主机中的存储元件,也可以是外设的与主机连接的第一存储设备和/或第二存储设备。具体的,例如主机可以是电脑,第一存储设备和/或第二存储设备可以是电脑的不同磁盘或硬盘,第一存储设备和/或第二存储设备也可以是与主机连接的外置存储设备,例如,外挂的硬盘。如图3所示,该数据处理方法主要可以包括以下步骤:

步骤s110:接收对第一存储设备的操作请求,操作请求为写操作请求或cow快照请求。

其中,写操作请求中包括待写入数据、待写入数据的起始存储位置以及待写入数据长度。待写入数据的起始存储位置指的第一存储设备中的起始存储位置,也就是待写入数据在第一存储设备中的存储位置的起始位置。对于cow快照请求,主机在接收到该请求时,会生成该快照请求的快照标识,一个cow快照请求的快照标识用于唯一标识根据该cow快照请求所生成的快照。

步骤s120:以顺序存储的方式,将操作请求的日志信息写入预配置的日志存储空间。

步骤s130:返回操作请求的操作完成信息。

步骤s140:根据日志存储空间中日志信息的存储顺序,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放,并将回放成功的日志信息从日志存储空间中删除。

本发明实施例中,日志存储空间包括第二存储设备中的指定存储空间(如图2中所示的wal日志文件),写操作请求的日志信息包括待写入数据、待写入数据的起始存储位置和待写入数据长度,cow快照请求的日志信息为包括快照标识的快照标签,起始存储位置为待写入数据在第一存储设备中的起始存储位置。

本发明实施例中,主机在接收到应用程序客户端对第一存储设备的操作请求时(写操作请求或cow快照请求)时,并不直接控制将操作请求在第一存储设备上执行,也就是说,主机并不直接控制将待写入数据持久化在第一存储设备或者在应用程序的业务进行过程中直接对第一存储设备进行cow快照,而是采用日志追加的形式,根据操作请求的接收顺序,将所接收到的操作请求的日志信息顺序存储到日志存储空间中。由于操作请求的日志信息已经被保存,因此,主机可以采用在后台进行日志回放的方式,根据日志存储空间中所存储的日志信息的存储顺序,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放,将写操作请求中的待写入数据持久化到第一存储设备中或者完成对第一存储设备的cow快照操作,实现了后台对写操作请求或cow快照请求的异步执行,提高了对客户端的操作请求的响应效率。

为了避免对日志存储空间中所存储的日志信息的重复回放,导致数据处理出现问题,在日志信息回放成功后,需要将回放成功的日志信息从日志存储空间中删除。

采用本发明实施例的数据处理方法,由于可以根据已经存储到日志存储空间中的操作请求的日志信息,后台异步实现对日志信息的回放,因此,在写操作请求或cow快照请求的日志信息存储到日志存储空间之后,即可向客户端返回操作完成信息,解决了现有的在接收到对第一存储设备的cow快照请求时,直接由前台(呈现给用户的视觉和基本的操作页界面)同步根据cow快照请求对第一存储设备开启快照所导致的业务写性能下降的问题。

本发明一可选实施例中,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放,包括:

若待回放的日志信息为写操作请求的日志信息,则根据待回放的日志信息生成写操作指令,将写操作指令发送至第一存储设备;

若待回放的日志信息为快照标签,则控制对第一存储设备进行cow快照操作。

本发明实施例中,控制将操作请求的日志信息在第一存储设备上进行回放,是指控制将操作请求在第一存储设备上执行。具体的,对于写操作请求的日志信息,是指根据写操作请求中待写入数据的起始存储位置,控制将写操作请求的待写入数据写入到第一存储设备中,对于cow快照请求,则控制对第一存储设备进行cow快照。

可以理解的是,根据待回放的写操作请求的日志信息所生成的写操作指令中,包括写操作请求的日志信息中的待写入数据、待写入数据的起始存储位置和待写入数据长度。主机在根据待回放的日志信息生成写操作指令后,将写操作指令发送给第一存储设备,从而使第一存储设备可以根据接收到的写操作指令,将写操作请求的待写入数据从待写入数据在第一存储设备的起始存储位置开始,写入到第一存储设备中,完成待写入数据在第一存储设备上的持久化。对于cow快照请求的日志信息,则由主机控制对第一存储设备进行cow快照操作即可。

需要说明的是,主机控制对第一存储设备进行cow快照操作的具体实现方式、以及在完成cow快照操作之后的需要进行的其它操作(例如,若当前cow快照操作不是对第一存储设备的第一次cow快照操作,则完成当前cow快照操作之后,还需要将之前获取的cow快照的快照卷指针更新到当前获取的cow快照的快照空间)实现均为现有技术,在此不再详细描述。

本发明一可选实施例中,日志存储空间还可以包括主机的内存中的指定内存空间。此时,将操作请求的日志信息写入预配置的日志存储空间,包括:

将操作请求的日志信息写入指定存储空间;

在将操作请求的日志信息写入指定存储空间之后,将操作请求的日志信息写入指定内存空间。

对应的,根据日志存储空间中日志信息的存储顺序,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放,可以具体包括:

根据指定内存空间中日志信息的存储顺序,控制将指定内存空间中所存储的日志信息在第一存储设备上依次进行回放。

本发明实施例中,由于内存的读写速度远远快于硬盘、磁盘等一般存储设备的读写速度,因此,可以在将操作请求的日志信息存储到指定存储空间之后,也存储到指定内存空间中,采用该方式,在进行日志信息回放时,可以通过从指定内存空间中读取日志信息,利用内存加快日志信息的读取速度,从而加快了将日志信息回放到第一存储设备上的速度。

此外,内存读写速度虽然快,但在出现主机掉电或其它异常时,内存中所存储的数据容易丢失,因此,存储在指定存储空间的日志信息保证了即使主机发生掉电或其它异常时,也能够依据指定存储空间中所存储的日志信息,控制将日志信息回放到第一存储设备上。

可以理解的是,在日志存储空间包括上述指定存储空间和指定内存空间时,将一条日志信息回放成功后,需要将回放成功的日志信息从指定存储空间和指定内存空间中均删除。

本发明一可选实施例中,若操作请求为写操作请求,接收对第一存储设备的操作请求之后,还包括:

根据写操作请求的接收顺序,为写操作请求分配操作序号,写操作请求的日志信息还包括写操作请求所对应的操作序号。

本发明一可选实施例中,指定内存空间可以包括第一内存空间、第二内存空间和第三内存空间;对应的,将操作请求的日志信息写入指定内存空间,具体可以包括:

若操作请求为写操作请求,则将写操作请求中的待写入数据写入第一内存空间,并生成待写入数据的位置索引;

将以待写入数据的起始存储位置为键、以待写入数据的位置索引为值的键值对写入第二内存空间;

将以待写入数据所对应的操作序号为键、以待写入数据的位置索引为值的键值对写入第三内存空间;

若操作请求为cow快照请求,则将cow快照请求的快照标签写入到第三内存空间。

由于采用键值对的存储方式中,对键值对中值的格式、大小等都可以不作限定,且数据查询效率高,因此,采用上述键值对来存储写操作请求的日志信息,可以待写入数据的位置索引的格式不作限定,在进行数据查询时,可以通过键值对中的键快速查找到待写入数据的位置索引,从而根据位置索引读取到所需的数据,提高了数据查询的效率。

对应于上述采用第一内存空间、第二内存空间和第三内存空间存储日志信息的方式,本发明一可选实施例中,根据指定内存空间中日志信息的存储顺序,控制将指定内存空间中所存储的日志信息在第一存储设备上依次进行回放,包括:

顺序读取第三内存空间中所存储的日志信息中的数据;

若所读取的数据为键值对,则根据读取的键值对的值在第一内存空间中查找对应的待写入数据,根据读取的键值对的值在第二内存空间中查找对应的起始存储位置;

根据查找到的待写入数据和起始存储位置生成写操作指令,将写操作指令发送给第一存储设备;

若读取的数据为快照标签,则控制对第一存储设备进行cow快照操作。

本发明一可选实施例中,将写操作请求中的待写入数据写入第一内存空间,具体可以包括:

确定第一内存空间的可用存储空间是否大于设定值;

若第一内存空间的可用存储空间大于设定值,则将写操作请求中的待写入数据写入第一内存空间;

若第一内存空间的可用存储空间不大于设定值,则获取待写入数据在指定存储空间中的存储位置信息,以待写入数据在指定存储空间中的存储位置信息替代待写入数据,写入到第一内存空间。

相应的,此时根据读取的键值对的值在第二内存空间中查找对应的待写入数据,包括:

若根据读取的键值对的值在第二内存空间中查找到的为存储位置信息,则根据查找到的存储位置信息在指定存储空间中读取对应的待写入数据。

由于主机的内存的存储空间相对磁盘等存储设备而言较小,因此,为了避免指定内存空间的可用存储空间不足导致数据溢出的问题,在将写操作请求的待写入数据写入指定内存空间之前,首先需要确定一下指定内存空间中用于存储待写入数据的可用存储空间是否大于设定值,若可用存储空间大于设定值,则可以将写操作请求中的待写入数据写入指定内存空间中,若可用存储空间不大于设定值,为了避免数据溢出,则可以以该待写入数据在指定存储空间中的存储位置信息替代待写入数据来写入到指定内存空间,与直接存储待写入数据相比,能够大大较少所占用的指定内存空间中的存储空间。采用该方式,在进行该待写入数据的读取时,可以首先在读取到数据在指定内存空间中的存储位置信息,再基于该位置信息从指定存储空间中读取到所需要的数据。

本发明一可选实施例中,将写操作请求中的待写入数据写入第一内存空间,具体可以包括:

若第一内存空间的可用存储空间大于设定值,确定写操作请求是否符合预设的存储筛选条件;

若写操作请求符合存储筛选条件,则将写操作请求的待写入数据写入第一内存空间;

若写操作请求不符合存储筛选条件,则获取待写入数据在指定存储空间中的存储位置信息,以待写入数据在指定存储空间中的存储位置信息替代待写入数据,写入到第一内存空间。

本申请中,可以根据实际应用场景需要,设置用于确定是否将写操请求中的待写入数据写入到第一内存空间中的存储筛选条件,通过该方案,可以只将符合筛选条件的待写入数据直接写入第一内存空间,不符合筛选条件的待写入数据以待写入数据在指定存储空间的存储位置信息替代写入第一内存空间即可,从而减少了对内存空间的占用,由于符合筛选条件的待写入数据直接写入到内存中,又保证了对符合筛选条件的待写入数据的读/写操作效率。

可以理解的是,上述存储筛选条件可以根据实际需要进行配置,例如,存储筛选条件可以配置为指定起始存储位置(可以为一个或多个),若写操作请求中的起始存储位置为指定起始存储位置中的一个,则说明写操作请求符合存储筛选条件。其中,指定起始存储位置可以热点数据所在的起始存储位置,也就是说,第一存储设备中经常被读/写的存储位置。

本发明一可选实施例中,若操作请求为写操作请求,将操作请求的日志信息写入预配置的日志存储空间之后,该数据处理方法还可以包括:

通过布隆过滤器记录写操作请求中的起始存储位置的位置标识为第一标识,第一标识用于标识起始存储位置所对应的最新数据存储于日志存储空间中。

对应的,若待回放的日志信息为写操作请求的日志信息,则控制将写操作请求的日志信息在第一存储设备上进行回放之后,还包括:

通过布隆过滤器更新所回放的日志信息中的起始存储位置的位置标识为第二标识,第二标识用于标识起始存储位置所对应的最新数据存储在第一存储设备中。

由于在接收到读操作请求时,所需要读取的待读取数据的起始存储位置可能是位于第一存储设备中(待读取数据对应的日志信息已经在第一存储设备上回放),也可能是位于日志存储空间中(待读取数据对应的日志信息还未在第一存储设备上回放),因此,可以通过设置布隆过滤器来记录写操作请求中的起始存储位置的位置标识来标识起始存储位置所对应的最新数据的是在第一存储设备中,还是在日志存储空间中。采用该方式,在接收到的读操作请求,根据读操作请求中待读取数据的起始存储位置快速的判断出是应该从日志存储空间中查找待读取数据,还是应该从第一存储设备中直接读取待读取数据,提高了数据的读取效率。

本发明实施例中,上述布隆过滤器可以设置在主机中或者设置在第一存储设备中。

可以理解的是,若布隆过滤器设置在第一存储设备中,主机通过布隆过滤器记录写操作请求中的起始存储位置的位置标识为第一标识,或者,通过布隆过滤器更新所回放的日志信息中的起始存储位置的位置标识为第二标识时,需要向第一存储设备发送位置标识记录或更新指令,以使第一存储设备根据相应的指令完成位置标识在布隆过滤器中的记录或更新。若布隆过滤器设置在主机中,则主机可以直接完成位置标识在布隆过滤器中的记录或更新。

本发明一可选实施例中,该数据处理方法还可以包括:

接收客户端对第一存储设备的读操作请求,读操作请求包括待读取数据的起始存储位置和待读取数据的第一数据长度;

通过布隆过滤器确定待读取数据的起始存储位置的位置标识;

若待读取数据的起始存储位置的位置标识为第一标识,则根据读操作请求在日志存储空间中读取待读取数据;

若待读取数据的起始存储位置的位置标识为第二标识,则根据读操作请求在第一存储设备中读取待读取数据。

本发明实施例中,若在主机或者第一存储设备中设置了布隆过滤器时,则在接收到应用程序客户端对上述第一存储设备的读操作请求时,便可以通过布隆过滤器快速的确定出读操作请求中待读取数据的起始存储位置(待读取数据在第一存储设备中的起始存储位置)的位置标识是第一标识,还是第二标识,若待读取数据的起始存储位置的标识为第一标识,则可以确定出所需要读取的待读取数据的起始读取位置是在日志存储空间中,此时则可以根据待读取数据的起始存储位置在日志存储空间中查找该起始存储位置对应的日志信息,读取查找到的日志信息中的待写入数据,得到所需的待读取数据;若待读取数据的起始存储位置的标识为第二标识,则表明所需要读取的待读取数据已经持久化到了第一存储设备中,直接根据待读取数据的起始存储位置在第一存储设备的对应位置处开始读取第一数据长度的数据即可。

可以理解的是,若主机或第一存储设备中未设置布隆过滤器,主机在接收到读操作请求时,为了保证读取到正确的最新数据,则需要首先根据读操作请求中的待读取数据的起始存储位置在日志存储空间中查找是否存在该起始存储位置所对应的日志信息,如果存在,则根据读操作请求在日志存储空间中读取待读取数据,如果不存在,则说明待读取数据是存储在第一存储设备中,需要根据读操作请求从第一存储设备中读取待读取数据。可见,未设置布隆过滤器时,如果待读取数据存储在第一存储设备中,需要首先确定待读取数据不在日志存储空间中,之后再从第一存储设备中读取待读取数据,与通过布隆过滤器直接确定待读取数据所在存储位置的方式相比,读取效率较低。

本发明一可选实施例中,若日志存储空间还包括指定内存空间,根据读操作请求在日志存储空间中读取待读取数据,包括:

根据待读取数据的起始存储位置在指定内存空间中读取对应的待写入数据。

本发明实施例中,在日志存储空间包括第二存储设备中的指定存储空间和主机的内存中的指定内存空间中时,优选根据待读取数据的起始存储位置从指定内存空间中读取所需要读取的数据,以提高数据读取的速度。

由前文的描述可知,在上述将写操作请求的待写入数据存储到指定内存空间时,如果指定内存空间中用于存储待写入数据的可用存储空间不大于设定值,为了避免数据溢出问题,可以以待写入数据在指定存储空间的存储位置信息替代待写入数据写入到指定内存空间中。因此,在根据待读取数据的起始存储位置在指定内存空间中读取对应的待写入数据时,读取到的数据也可能是指定存储空间的存储位置信息,此时,则还需要根据读取到的指定存储空间的存储位置信息在指定存储空间中读取真正的待读取数据。

本发明一可选实施例中,根据读操作请求在日志存储空间中读取待读取数据,包括:

根据待读取数据的起始存储位置在日志存储空间中查找对应的日志信息;

确定查找到的日志信息中的待写入数据的第二数据长度;

若第二数据长度不小于第一数据长度,则从查找到的日志信息中的待写入数据中顺序读取长度等于第一数据长度的待读取数据;

若第二数据长度小于第一数据长度,则读取查找到的日志信息中的待写入数据,并生成新的读操作请求,将新的读操作请求发送至第一存储设备,接收第一存储设备返回的数据,将第一存储设备返回的数据与查找到的待写入数据拼接,得到待读取数据;

其中,新的读操作请求包括新的起始存储位置和新的数据长度,新的起始存储位置为待读取数据的起始位置与第二数据长度之和,新的数据长度为第一数据长度与第二数据长度之差。

本发明实施例中,根据待读取数据的起始存储位置在日志存储空间中读取待读取数据时,由于该起始存储位置所对应的日志信息中的待写入数据的第二数据长度,可能小于待读取数据的第一数据长度,则此时除需要读取该起始位置所对应的日志信息中的全部待写入数据外,还需要读取等于第一数据长度与第二数据长度之差的数据长度,而该部分需要读取的数据的起始存储位置则为读操作请求中待读取数据的起始存储位置加上已经读取的上述日志信息中的全部待写入数据的长度,此时则需要根据该部分数据的起始存储位置再从第一存储设备中读取对应长度的数据,将从日志存储空间中读取的待写入数据和从第一存储设备中读取的数据拼接,得到所需要的完整的待读取数据。

可见,读操作请求中的待读取数据可能位于第一存储设备中,也可能位于日志存储空间中,还可能会出现部分数据存储在日志存储空间,部分数据在第一存储设备中的情况,此时则需要分别从日志存储空间和第一存储设备中分别读取一部分数据之后,再将读取的数据拼接,得到待读取数据。

本发明一可选实施例中,写操作请求的日志信息还包括写操作请求所对应的操作序号,此时,若待读取数据的起始存储位置在日志存储空间中对应的日志信息为至少两条,方法还包括:

将至少两条日志信息中操作序号最大的日志信息确定为待读取数据的起始存储位置在日志存储空间中对应的日志信息。

在实际应用中,在读操作请求中待读取数据的起始存储位置的位置标识为第一标识时,该起始存储位置在起始存储空间中所对应的日志信息可能为两条,甚至多条,也就说,在接收到该读操作请求之前,接收到对该待读取数据的起始存储位置所对应的数据的两次或多次的写操作请求,且两次或多次的写操作请求的日志信息均还未回放到第一存储设备上,此时,接收到该读操作请求时,为了保证所读取的待读取数据的正确性,需要读取两条或多条日志信息中最新的一条日志信息中的待写入数据,这是因为,在进行相同起始存储位置所对应的写操作请求的日志信息回放时,新的日志信息(时间上后接收到的写操作请求的日志信息)会被后回放,新的日志信息中的待写入数据会覆盖旧的日志信息中的待写入数据,因此,可以根据日志信息的操作序号,方便快捷的确定出所需要的日志信息。

可以理解的是,若写操作请求的日志信息不包括写操作请求所对应的操作序号时,对于上述两条或多条日志信息的情况,则需要根据两条或多条日志信息的存储顺序确定出其中最新的日志信息。

本发明一可选实施例中,根据读操作请求在第一存储设备中读取待读取数据,包括:

将读操作请求发送至第一存储设备,接收第一存储设备返回的待读取数据。

在读操作请求中的待读取数据的起始存储位置的位置标识为第二标识时,表明待读取数据的存储位置为第一存储设备中,此时,从第一存储设备中获取待读取数据即可,具体的,主机通过向第一存储设备发送读操作请求,以指示第一存储设备根据读操作请求中的待读取数据的起始存储位置和待读取数据的第一数据长度,在第一存储设备中对应的存储位置中读取第一数据长度的待读取数据并返回,主机接收第一存储设备返回的该待读取数据,将接收到的待读取数据发送给客户端,完成对客户端读操作请求的响应。

对应于图3中所示的数据处理方法,本发明实施例还提供了一种数据处理装置,该数据处理装置设置在主机中,主机分别与第一存储设备和第二存储设备连接。如图4所示,该数据处理装置100主要可以包括操作请求接收模块110、操作日志存储模块120、操作请求响应模块130和操作日志回放模块140。

操作请求接收模块110,用于接收对第一存储设备的操作请求,操作请求为写操作请求或cow快照请求。

操作日志存储模块120,用于以顺序存储的方式,将操作请求的日志信息写入预配置的日志存储空间,其中,日志存储空间包括第二存储设备中的指定存储空间,写操作请求的日志信息包括待写入数据、待写入数据的起始存储位置和待写入数据长度,cow快照请求的日志信息为包括快照标识id的快照标签,起始存储位置为待写入数据在第一存储设备中的起始存储位置。

操作请求响应模块130,用于返回操作请求的操作完成信息。

操作日志回放模块140,用于在操作请求响应模块返回操作完成信息后,根据日志存储空间中日志信息的存储顺序,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放,并将回放成功的日志信息从日志存储空间中删除。

可以理解的是,本发明实施例的数据处理装置100,可对应于根据本发明实施例的数据处理方法的执行主体,实现数据处理装置100中的各个模块的操作和/或功能是分别是为了实现图3中所示的本发明实施例的数据处理方法中的相应流程,为了简洁,在此不再赘述。

本发明一可选实施例中,操作日志回放模块140具体用于:

在待回放的日志信息为写操作请求的日志信息时,根据待回放的日志信息生成写操作指令,将写操作指令发送至第一存储设备;

在待回放的日志信息为快照标签时,控制对第一存储设备进行cow快照操作。

本发明一可选实施例中,日志存储空间还包括主机的内存中的指定内存空间;操作日志存储模块120包括第一日志存储单元和第二日志存储单元。

第一日志存储单元,用于将操作请求的日志信息写入指定存储空间;

第二日志存储单元,用于在将操作请求的日志信息写入指定存储空间之后,将操作请求的日志信息写入指定内存空间。

对应的,操作日志回放模块140在根据日志存储空间中日志信息的存储顺序,控制将日志存储空间中所存储的日志信息在第一存储设备上依次进行回放时,可以具体用于:

根据指定内存空间中日志信息的存储顺序,控制将指定内存空间中所存储的日志信息在第一存储设备上依次进行回放。

本发明一可选实施例中,若操作请求为写操作请求,操作请求接收模块110在接收对第一存储设备的操作请求之后,还用于:

根据写操作请求的接收顺序,为写操作请求分配操作序号,写操作请求的日志信息还包括写操作请求所对应的操作序号。

本发明一可选实施例中,指定内存空间包括第一内存空间、第二内存空间和第三内存空间;第二日志存储单元在将操作请求的日志信息写入指定内存空间时,具体用于:

若操作请求为写操作请求,则将写操作请求中的待写入数据写入第一内存空间,并生成待写入数据的位置索引;

将以待写入数据的起始存储位置为键、以待写入数据的位置索引为值的键值对写入第二内存空间;

将以待写入数据所对应的操作序号为键、以待写入数据的位置索引为值的键值对写入第三内存空间;

若操作请求为cow快照请求,则将cow快照请求的快照标签写入到第三内存空间。

本发明一可选实施例中,操作日志回放模块140在根据指定内存空间中日志信息的存储顺序,控制将指定内存空间中所存储的日志信息在第一存储设备上依次进行回放时,具体用于:

顺序读取第三内存空间中所存储的日志信息中的数据;

若所读取的数据为键值对,则根据读取的键值对的值在第一内存空间中查找对应的待写入数据,根据读取的键值对的值在第二内存空间中查找对应的起始存储位置;

根据查找到的待写入数据和起始存储位置生成写操作指令,将写操作指令发送给第一存储设备;

若读取的数据为快照标签,则控制对第一存储设备进行cow快照操作。

本发明一可选实施例中,第二日志存储单元在将写操作请求中的待写入数据写入第一内存空间时,具体用于:

确定第一内存空间的可用存储空间是否大于设定值;

若第一内存空间的可用存储空间大于设定值,则将写操作请求中的待写入数据写入第一内存空间;

若第一内存空间的可用存储空间不大于设定值,则获取待写入数据在指定存储空间中的存储位置信息,以待写入数据在指定存储空间中的存储位置信息替代待写入数据,写入到第一内存空间;

操作日志回放模块140在根据读取的键值对的值在第二内存空间中查找对应的待写入数据时,具体用于:

若根据读取的键值对的值在第二内存空间中查找到的为存储位置信息,则根据查找到的存储位置信息在指定存储空间中读取对应的待写入数据。

本发明一可选实施例中,所述第二日志存储单元在将写操作请求中的待写入数据写入所述第一内存空间时,可以具体用于:

若所述第一内存空间的可用存储空间大于所述设定值,确定写操作请求是否符合预设的存储筛选条件;

若写操作请求符合所述存储筛选条件,则将写操作请求的待写入数据写入所述第一内存空间;

若写操作请求不符合所述存储筛选条件,则获取待写入数据在所述指定存储空间中的存储位置信息,以待写入数据在所述指定存储空间中的存储位置信息替代待写入数据,写入到所述第一内存空间。

本发明一可选实施例中,数据处理装置100还可以包括存储位置确定模块150,如图5所示。

存储位置确定模块150,用于在操作请求为写操作请求时,在将操作请求的日志信息写入预配置的日志存储空间之后,通过布隆过滤器记录写操作请求中的起始存储位置的位置标识为第一标识,第一标识用于标识起始存储位置所对应的最新数据存储于日志存储空间中;

以及用于在待回放的日志信息为写操作请求的日志信息时,在控制将写操作请求的日志信息在第一存储设备上进行回放之后,通过布隆过滤器更新所回放的日志信息中的起始存储位置的位置标识为第二标识,第二标识用于标识起始存储位置所对应的最新数据存储在第一存储设备中。

本发明一可选实施例中,数据处理装置100还可以包括数据读取模块160,如图6所示。

该实施例中,操作请求接收模块110,还用于接收客户端对第一存储设备的读操作请求,读操作请求包括待读取数据的起始存储位置和待读取数据的第一数据长度;

存储位置确定模块150,还用于通过布隆过滤器确定待读取数据的起始存储位置的位置标识。

数据读取模块160,用于在待读取数据的起始存储位置的位置标识为第一标识时,根据读操作请求在日志存储空间中读取待读取数据,在待读取数据的起始存储位置的位置标识为第二标识时,根据读操作请求在第一存储设备中读取待读取数据。

本发明一可选实施例中,若日志存储空间还包括指定内存空间,数据读取模块160在根据读操作请求在日志存储空间中读取待读取数据时,具体用于:

根据待读取数据的起始存储位置在指定内存空间中读取对应的待写入数据。

本发明一可选实施例中,数据读取模块160在根据读操作请求在日志存储空间中读取待读取数据时,具体用于:

根据待读取数据的起始存储位置在日志存储空间中查找对应的日志信息;

确定查找到的日志信息中的待写入数据的第二数据长度;

若第二数据长度不小于第一数据长度,则从查找到的日志信息中的待写入数据中顺序读取长度等于第一数据长度的待读取数据;

若第二数据长度小于第一数据长度,则读取查找到的日志信息中的待写入数据,并生成新的读操作请求,将新的读操作请求发送至第一存储设备,接收第一存储设备返回的数据,将第一存储设备返回的数据与查找到的待写入数据拼接,得到待读取数据;

其中,新的读操作请求包括新的起始存储位置和新的数据长度,新的起始存储位置为待读取数据的起始位置与第二数据长度之和,新的数据长度为第一数据长度与第二数据长度之差。

本发明一可选实施例中,写操作请求的日志信息还包括写操作请求所对应的操作序号;数据读取模块160在根据待读取数据的起始存储位置在日志存储空间中查找对应的日志信息时,具体用于:

若待读取数据的起始存储位置在日志存储空间中对应的日志信息为至少两条,将至少两条日志信息中操作序号最大的日志信息确定为待读取数据的起始存储位置在日志存储空间中对应的日志信息。

图7示出了根据本发明一实施例的数据处理设备200的示意性框图。如图7所示,数据处理设备200包括处理器201、存储器202和通信接口203,存储器202用于存储可执行的程序代码,处理器201通过读取存储器202中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行本发明上述任一实施例的数据处理方法。通信接口203用于与外部设备通信,网络传输设备200还可以包括总线204,总线204用于连接处理器201、存储器202和通信接口203,使处理器201、存储器202和通信接口203通过总线204进行相互通信。

根据本发明实施例的数据处理设备200,可对应于根据本发明实施例的数据处理方法中的执行主体,具体可以实现为主机,数据处理设备200中的各个模块的操作和/或功能分别为了实现本发明各实施例中的数据处理方法的相应流程,为了简洁,在此不再赘述。

本发明实施例还提供了一种计算机可读存储介质,该可读存储介质中存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行本发明上述任一实施例中的数据处理方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1