一种磁盘状态信息的同步方法及装置与流程

文档序号:13912977阅读:166来源:国知局

本发明涉及计算机存储领域,尤其涉及一种磁盘状态信息的同步方法及装置。



背景技术:

磁盘是最常用的一种辅助存储器,用于存放当前不需要立即使用的信息,一旦需要,再和计算机成批交换数据,它是主存储器的后备,存储容量大,可靠性高,价格低。为了实现能对磁盘空间的有效利用,并提高对文件的访问效率,需要对磁盘资源妥善管理。

目前常用的磁盘空间管理方法为采用位图(bitmap)对磁盘状态信息进行存储,即用一个或者多个bit位来表示某个key对应的value。假设我们使用一个bit来表示一个状态,则该状态有两种可能的取值(0或1),key为数字,对应的value存储的位置就在key*1bit=keybit。一方面,由于使用bit来存储数据,所以可以节约大量的存储空间,所以通常来讲,位图用于存储大量的简单状态。另一方面,由于bitmap的数据结构是一种连续存储的结构,bitmap比较节约空间,在计算机内存和外存之间进行同步时,只需要一次操作即可完全载入计算机内存/同步到外存。

但是,在某些特定的需求中,对状态位图bitmap的修改需要立即保存到外存中,才能执行后续流程。在机械磁盘上,这会导致很大的寻道开销,从而降低整个磁盘的运转效率。

例如,假设数据块有三种状态:未初始化、已初始化、已写入数据。使用一个bitmap来保存这块磁盘中所有数据块的状态。当数据块的状态变更为“已写入数据”时,需要在数据真正写入之前,将bitmap的状态同步到磁盘中。否则如果此时发生意外断电,数据块的状态将与bitmap中的状态发生不一致,从而导致bitmap的内容不可信。然而,bitmap在磁盘中是连续存储的,存储位置固定,在写数据时,如果每次写入都需要更新bitmap的内容,必将造成磁头的频繁的在bitmap存储位置与数据写入的位置之间往复移动。这会带来很大的寻道开销,从而降低整个数据写入的效率。

因此,如何提供一种低寻道开销、能够提高数据写入效率的将磁盘状态信息在机械磁盘与计算机内存之间进行同步的方法是目前亟待解决的技术问题。



技术实现要素:

为解决现有磁盘状态存储方法中存在的高寻道开销,数据写入效率低的技术问题,本发明提供一种磁盘状态信息的同步方法及装置。

第一方面,本发明提供一种将磁盘状态信息从计算机内存向机械磁盘进行同步的方法,所述机械磁盘的空间包括数据块空间和状态位图空间;所述数据块空间由多个数据块组构成,每个数据块组由预设数目的连续数据块构成,每个数据块存储元数据和用户数据,所述磁盘状态信息包括数据块状态、数据块组同步状态和数据块同步状态,所述数据块状态、所述数据块组同步状态和数据块同步状态以位图形式存储在所述计算机内存中,所述方法包括:

实时基于用户对每个数据块中用户数据的操作类型,确定当前时刻所述每个数据块在内存中的元数据,所述元数据用于指示所述数据块中的用户数据的状态;

若判断获知当前时刻所述数据块的用户数据处于中间状态或最终状态,并且当前时刻所述数据块对应的数据块组在内存中的数据块组同步状态的取值为第一预设值,下一时刻所述数据块组在内存中的数据块组同步状态的取值则为第二预设值,并将所述数据块组同步状态更新至所述状态位图空间;

每隔预设时长将所述数据块在内存中的数据块状态位图同步至所述状态位图空间。

第二方面,本发明实施例提供一种将磁盘状态信息从机械磁盘向计算机内存载入的方法,所述磁盘状态信息包括数据块状态、数据块组同步状态和数据块同步状态,所述数据块状态和所述数据块组同步状态以位图形式存储在所述机械磁盘中,所述方法包括:

将所述机械磁盘中的数据块状态位图和数据块组同步状态位图载入到所述计算机内存中;

根据所述数据块状态位图和数据块组同步状态位图,在所述计算机内存中创建数据块同步状态位图。

第三方面,本发明提供一种将磁盘状态信息从计算机内存向机械磁盘进行同步的装置,所述机械磁盘的空间包括数据块空间和状态位图空间;所述数据块空间由多个数据块组构成,每个数据块组由预设数目的连续数据块构成,每个数据块存储元数据和用户数据,所述磁盘状态信息包括数据块状态、数据块组同步状态和数据块同步状态,所述数据块状态、所述数据块组同步状态和数据块同步状态以位图形式存储在所述计算机内存中,所述装置包括:

确定单元,实时基于用户对每个数据块中用户数据的操作类型,确定当前时刻所述每个数据块在内存中的元数据,所述元数据用于指示所述数据块中的用户数据的状态;

判断单元若判断获知当前时刻所述数据块的用户数据处于中间状态或最终状态,并且当前时刻所述数据块对应的数据块组在内存中的数据块组同步状态的取值为第一预设值,下一时刻所述数据块组在内存中的数据块组同步状态的取值则为第二预设值,并将所述数据块组同步状态更新至所述状态位图空间;

同步单元,每隔预设时长将所述数据块在内存中的数据块状态位图同步至所述状态位图空间。

第四方面,本发明实施例提供一种将磁盘状态信息从机械磁盘向计算机内存载入的装置,所述磁盘状态信息包括数据块状态、数据块组同步状态和数据块同步状态,所述数据块状态、所述数据块组同步状态和数据块同步状态以位图形式存储在所述机械磁盘中,所述装置包括:

载入单元,将所述机械磁盘中的数据块状态位图和数据块组同步状态位图载入到所述计算机内存中;

创建单元,根据所述数据块状态位图和数据块组同步状态位图,在所述计算机内存中创建数据块同步状态位图。

第五方面,本发明提供一种电子设备,包括:第一存储器和第一处理器,所述第一处理器和所述第一存储器通过第一总线完成相互间的通信;所述第一存储器存储有可被所述第一处理器执行的程序指令,所述第一处理器调用所述程序指令能够执行如下方法:实时基于用户对每个数据块中用户数据的操作类型,确定当前时刻所述每个数据块在内存中的元数据,所述元数据用于指示所述数据块中的用户数据的状态;若判断获知当前时刻所述数据块的用户数据处于中间状态或最终状态,并且当前时刻所述数据块对应的数据块组在内存中的数据块组同步状态的取值为第一预设值,下一时刻所述数据块组在内存中的数据块组同步状态的取值则为第二预设值,并将所述数据块组同步状态更新至所述状态位图空间;每隔预设时长将所述数据块在内存中的数据块状态位图同步至所述状态位图空间。

第六方面,本发明实施例还提供一种电子设备,包括:第二存储器和第二处理器,所述第二处理器和所述第二存储器通过第二总线完成相互间的通信;所述第二存储器存储有可被所述第二处理器执行的程序指令,所述第二处理器调用所述程序指令能够执行如下方法:将所述机械磁盘中的数据块状态位图和数据块组同步状态位图载入到所述计算机内存中;根据所述数据块状态位图和数据块组同步状态位图,在所述计算机内存中创建数据块同步状态位图。

第七方面,本发明提供一种第一计算机可读存储介质,其上存储有第一计算机程序,该第一计算机程序被处理器执行时实现如下方法:实时基于用户对每个数据块中用户数据的操作类型,确定当前时刻所述每个数据块在内存中的元数据,所述元数据用于指示所述数据块中的用户数据的状态;若判断获知当前时刻所述数据块的用户数据处于中间状态或最终状态,并且当前时刻所述数据块对应的数据块组在内存中的数据块组同步状态的取值为第一预设值,下一时刻所述数据块组在内存中的数据块组同步状态的取值则为第二预设值,并将所述数据块组同步状态更新至所述状态位图空间;每隔预设时长将所述数据块在内存中的数据块状态位图同步至所述状态位图空间。

第八方面,本发明实施例还提供一种第二计算机可读存储介质,其上存储有第二计算机程序,该第二计算机程序被处理器执行时实现如下方法:将所述机械磁盘中的数据块状态位图和数据块组同步状态位图载入到所述计算机内存中;根据所述数据块状态位图和数据块组同步状态位图,在所述计算机内存中创建数据块同步状态位图。

本发明提供的磁盘状态信息的同步方法及装置,通过将磁盘状态信息分为数据块状态、数据块组同步状态和数据块同步状态,将数据块组同步状态和数据块同步状态等等集中式状态信息,以及数据块状态等分散式状态信息结合进行存储,从而在将磁盘状态信息在机械磁盘与计算机内存之间进行同步时,减少磁盘状态信息同步时的寻道开销,提高数据写入效率。

附图说明

图1为本发明实施例提供的磁盘状态信息数据结构的示意图;

图2为本发明实施例提供的将磁盘状态信息从计算机内存向机械磁盘进行同步的方法的流程示意图;

图3为本发明实施例提供的将磁盘状态信息从机械磁盘向计算机内存载入的方法的流程示意图;

图4为本发明实施例提供的将磁盘状态信息从计算机内存向机械磁盘进行同步的装置的结构示意图;

图5为本发明实施例提供的将磁盘状态信息从机械磁盘向计算机内存载入的装置的结构示意图;

图6为本发明实施例提供的电子设备的结构框图;

图7为本发明又一实施例提供的电子设备的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的一种磁盘状态信息数据结构的示意图。如图1所示,机械磁盘的空间包括状态位图空间和数据块空间;所述数据块空间由多个“数据块组”构成(图1仅示出1个数据块组作为举例),每个数据块组由预设数目的连续数据块构成,每个数据块存储“元数据”和“用户数据”。所述“数据块”的“元数据”存储了“用户数据”的状态信息;所述第一磁盘“状态位图空间”由“数据块状态位图空间”和“数据块组同步状态位图空间”两部分构成;“数据块状态位图空间”以位图的形式存储“数据块空间”的全部数据块的元数据,“数据块组同步状态位图空间”以位图的形式存储全部数据块组的元数据与数据块状态位图之间的同步状态;所述数据块的状态与具体的应用场景相结合,不同的应用场景具有不同的状态表,该状态表用于指示元数据的取值与数据块状态之间的映射关系。

例如,可以抽象的分类为未初始化状态、初始化状态、中间状态、最终状态几种。在各种抽象状态中,某个数据块的初始化状态是唯一确定的,可以将初始化状态的块作为未初始化的块进行重新初始化;中间状态可以被划分为多种子状态;最终状态不会向其他状态发生转化。

本发明中的磁盘指机械磁盘,不包括ssd盘。上述数据块指的是磁盘上的一段连续空间,同类数据块的大小一般是固定的。例如,在本发明的实际应用中,数据块的大小被设定为固定的1mb。一个数据块及该数据块对应的分散式状态信息的组合称为chunk。磁盘中的chunk是按照chunk-id依次排列的,chunk-id表示数据块在磁盘中的序号标识。

图2为本发明提供的将磁盘状态信息从计算机内存向机械磁盘进行同步的方法的流程示意图。如图2所示,在上述磁盘状态信息数据结构的基础上,该方法包括以下步骤:

步骤201、实时基于用户对每个数据块中用户数据的操作类型,确定当前时刻所述每个数据块在内存中的元数据,所述元数据用于指示所述数据块中的用户数据的状态;

具体地,实时基于对磁盘“数据块”中“数据部分”的读取、写入等操作,确定当前时刻每个数据块中元数据的取值,根据元数据的取值,确定“数据块”状态信息的变化。

步骤202、若判断获知当前时刻所述数据块的用户数据处于中间状态或最终状态,并且当前时刻所述数据块对应的数据块组在内存中的数据块组同步状态的取值为第一预设值,下一时刻所述数据块组在内存中的数据块组同步状态的取值则为第二预设值,并将所述数据块组同步状态更新至所述状态位图空间;

具体地,如果当前时刻数据块的状态为“中间状态”或“最终状态”,并且当前时刻该数据块对应的数据块组在内存中的同步状态为真(即同步状态的取值为第一预设值时),则将此数据块组在内存中的同步状态修改为假(即同步状态的取值为第二预设值),并实时将所述修改后的数据块组同步状态更新到机械磁盘的状态位图空间。

例如,若上一时刻数据块状态为非初始化状态或初始化状态,用户对该数据块进行了写操作,则当前时刻数据块状态可能处于中间状态或最终状态,也即当数据块由非初始化状态或初始化状态向其他状态变更时,需要对该数据块对应的数据块组在数据块组同步状态位图中的状态进行处理。因为非初始化状态或初始化状态并不涉及到磁盘上的有效数据,但是,一旦某个数据块因用户数据的变更而切换至其他状态,则必须将该数据块对应的数据块组的同步状态置为假,因为此时数据块已经从“丢失也无所谓”的状态切换至“不确定”的其他状态。

步骤203、每隔预设时长将所述数据块在内存中的数据块状态位图同步至所述状态位图空间。

具体地,预设时长会设置得较长,比如1分钟,从而降低同步频率和同步寻道的平均开销。

例如,对于某种磁盘初始化程序而言,假设数据块的状态信息大致可分为以下三类:未初始化状态(uninitializedstate)、已初始化状态(initializedstate)及已写入状态(finalstate)。此时,每个数据块对应的元数据需要采用两比特位来表示数据块的状态。

当查询数据块时,若此时数据块的内容都是不确定的,是无意义的,则元数据可用第一取值“00”来表示未初始化状态。

当查询数据块时,若此时数据块的内容都是有意义的,内容为设定的初始值,比如全0或者全1,则元数据可用第二取值“01”表示数据块为已初始状态。

当查询数据块时,若数据块的内容不会发生变化,则元数据可用第三取值“11”来表示数据块为已写入状态。

按照上述存储方法,在数据块的状态发生变化时,一方面,由于数据块的元数据的存储位置与用户数据的存储相邻,可以实时更新数据块的元数据,降低了寻道开销;另一方面,数据块状态位图和数据块组同步状态位图则集中存储了数据块的状态信息,可以实现快速载入内存;此外,可以通过定义数据块的大小控制第一磁盘状态信息的数量,从而控制空间开销。

可选地,基于数据块组同步状态位图信息与数据块状态位图之间的预设压缩比例以及所述数据块空间包括的数据块的个数,确定所述数据块组同步状态位图占用的比特数以及每个比特对应的数据块的个数。

具体地,数据块组同步状态位图与数据块状态位图之间设置有预设压缩比例,也就是说数据块组同步状态位图粗略地保存了数据块状态位图与数据块组的元数据之间的同步状态,即使用数据块组同步状态位图的一个比特位来表示一组“数据块状态位图”的同步状态,如此,同步信息用于在某些情况下加速“数据块状态位图”与“数据块组的元数据”的同步速度,例如,当数据块的状态从“未初始化状态”到“初始化状态”转换时,由于数据块状态位图为定时基于数据块中数据存储情况进行更新,存在数据块状态位图更新延迟情况,就不得不查询分散存储的“数据块的元数据”,但是这样就导致加载很慢;此时,若查询到数据块组同步状态位图处于已同步状态,就可以认为数据块状态位图即为数据块的真实状态,而无需查询分散存储的“数据块的元数据”。

由上述实施例可以看出,该同步方法通过设置数据块组同步状态位图与数据块状态位图间的压缩比例,可以在一定程度上,加速数据块状态信息的同步速度,加快数据的写入速度。

图3为本发明实施例提供的将磁盘状态信息从机械磁盘向计算机内存载入的方法的流程示意图,如图3所示,该方法包括以下步骤:

s301、将所述机械磁盘中的数据块状态位图和数据块组同步状态位图载入到所述计算机内存中;

具体地,所述磁盘状态信息包括数据块状态、数据块组同步状态和数据块同步状态,所述数据块状态和所述数据块组同步状态以位图形式存储在所述机械磁盘中。

s302、根据所述数据块状态位图和数据块组同步状态位图,在所述计算机内存中创建数据块同步状态位图。

具体地,遍历所述计算机内存中的数据块状态位图,根据每个数据块的状态信息以及每个数据块对应的数据块组在数据块组同步状态位图中的状态,从而确定对应的“数据块同步状态位图”中的状态。

在上述实施例的基础上,该方法还包括:

在访问数据块时,查询所述数据块在所述数据块同步状态位图中的状态;

若所述数据块在所述数据块同步状态位图中的状态为未同步,则先将机械磁盘中的数据块空间中的对应数据块的元数据载入到内存;

根据所述元数据确定所述计算机内存中的数据块状态位图中对应数据块的状态,并将计算机内存中数据块同步状态位图的对应位更新为已同步。

在上述各实施例的基础上,该方法中的所述根据所述数据块状态位图和数据块组同步状态位图,在所述计算机内存中创建数据块同步状态位图,具体为:

若数据块在所述数据块状态位图中的状态为最终状态,则将所述数据块在所述数据块同步状态位图中的状态更新为已同步;

若数据块在所述数据块状态位图中的状态为未初始化状态或初始化状态,并且所述数据块对应的数据块组在所述数据块组同步状态位图中的状态为已同步,则将所述数据块在所述数据块同步状态位图中的状态更新为已同步。

具体地,1)若该数据块在“数据块状态位图”中的状态为“最终状态”,则将该数据块在“数据块同步状态位图”中的状态设置为“已同步”(真)。2)若该数据块在“数据块状态位图”中的状态为“未初始化”或“初始化”状态,并且该“数据块”对应的“数据块组”在“数据块组同步状态位图”中对应位的值为“已同步”(真),则将该数据块在“数据块同步状态位图”中对应位的值设置为“已同步”(真)。c)其他情况下,将该数据块在“数据块同步状态位图”中的状态设置为“未同步”(假)。

为了方便描述,本发明中的数据块状态位图也称为第一级bitmap,数据块组同步状态位图也称为第二级bitmap,数据块的元数据也为分散式状态信息。

例如,下面是按照本发明提供的方法进行bitmap初始化的一个具体实施例,步骤如下:

第一、生成汇总信息,主要包括:magic值、校验值、磁盘容量、磁盘序列号、数据块的大小、磁盘中数据块的数量、汇总信息在磁盘上的偏移量、第一级bitmap及第二级bitmap在磁盘上的偏移量等信息,其中磁盘容量、磁盘序列号为磁盘的固有属性信息,其余信息可以根据磁盘容量及磁盘序列号进行设置。

第二、生成分散式状态信息,设置分散式状态信息均为未初始化状态;

第三、生成第一级bitmap的信息,设置第一级bitmap中的状态均为未初始化状态;

第四、生成第二级bitmap的信息,因为此时所有的分散式状态信息均未初始化,第一级bitmap中的状态亦为未初始化,故设置第二级bitmap中的状态均为已同步状态。

第五、将汇总信息、分散式状态信息、第一级bitmap及第二级bitmap写入磁盘。

例如,下面是磁盘上数据块的状态变化时,相应的磁盘状态信息进行更新的实施例,具体步骤如下:

假设数据块空间中某1000个数据块全部被写入“1”,则该1000个数据块的分散式状态信息的内容则从未初始化状态变为初始化状态;按照chunk的chunk-id,定时器定时驱动该数据块的第一级bitmap进行更新,相应地从未初始化状态依次更新为初始化状态;第二级bitmap中对应位的状态此时置为“1”,表示该比特对应的第一级bitmap与对应的分散式状态信息相同,可以认为第一级bitmap中的状态为真实的数据块的状态。

在定时器下一次更新第一级bitmap之前,数据块空间中的数据块又被写入数据,则分散式状态信息从初始化状态到已写入状态。

由于第一级bitmap还处于初始化状态尚未进行更新,而分散式状态信息已被立即更新为已写入状态,故第二级bitmap中的对应位设定为不同步。

最后,将上述分散式状态信息、第一级bitmap及第二级bitmap进行存储。

需要说明的是,若分散式状态信息从一种写入状态到其他写入状态时,磁盘状态信息的存储方法与上述实施例是一致的。

例如,如果需要销毁使用本发明提供的方法进行磁盘管理的磁盘上的数据,销毁时,只需要将磁盘上汇总信息部分写0。在再次读取到该磁盘的汇总信息时,由于magic值和校验值不符,便会认为该磁盘没有保存bitmap,从而使用创建流程去覆盖已有的数据。

可以看出,使用本发明提供的同步方法,可以实现一个磁盘级别的初始化程序。对于raid5而言,在创建之后,需要将磁盘中的数据写0。如果将该状态保存在raid级别,假如raid初始化已经完成,将该raid组删除后加入几块磁盘创建一个新的raid5,那么所有磁盘都需要重新写0。如果使用磁盘级别的初始化程序就可以避免这样的重复的操作。并且磁盘级别的初始化可以识别出那些数据块已经初始化过,进一步减少磁盘io,这样一来,对整个raid组初始化的速度、磁盘的寿命都会有所提升。

例如,基于本发明提供的同步方法,相应地,可以在内存中预先设置同步bitmap,用于详细记录第一级bitmap与分散式状态信息的同步状态。在添加磁盘时,需要将磁盘中储存的bitmap信息加载进内存,可以按照以下步骤进行:

第一、读取磁盘中的bitmap汇总信息,检查其合法性。若合法,则继续下面的bitmap加载流程,若不合法,则可以进行bitmap初始化,创建新的bitmap数据。

第二、在内存中,将同步bitmap全部设置为未同步。

第三、将第一级bitmap和第二级bitmap载入内存。

第四、遍历第一级bitmap,对每个chunk执行下面的流程:

如果chunk的第一bitmap状态为finalstate,则对应的同步bitmap中的位的取值置为1。

如果chunk的第一bitmap状态不是finalstate,但是该chunk对应的第二级bitmap中的位为1(表示同步),则将对应的同步bitmap中的位的取值置为1。

第五、检查同步bitmap中是否存在为0的位,如果存在,启动定时器,顺序加载分散式状态信息到内存,并在加载后将同步bitmap中的对应位置1。

由上述的加载流程可以看出,基于本发明提供的存储方法,由于首先对集中式的第一级bitmap和第二级bitmap进行加载,载入大部分数据块的状态,其次才是根据情况加载其余的分散式状态信息,如此可以加快bitmap载入内存的速度。

在使用bitmap的过程中,就是检查数据块状态,并以此按照一定的方式访问数据块的过程。在bitmap加载后,不一定所有chunk在同步bitmap中都处于同步状态,也不一定所有的数据块都处于initializedstate。

基于本发明提供的存储方法,在访问数据块时,需要按照以下步骤:

第一、检查chunk在同步bitmap中的状态,如果不是已同步的,则认为第一级bitmap中保存的状态是无效的,此时需要读取分散式状态信息,加载至内存,再执行后续操作。

第二、检查chunk在第一级bitmap中的状态

若为uninitializedstate,在读取时,直接返回数据块初始化的结果(例如全0)即可,无需读取磁盘。在写入数据时,需要先执行对应数据及分散式状态信息的初始化,再执行后续操作。

若为initializedstate,在读取时,直接返回数据块初始化的结果(例如全0)即可,无需读取磁盘。在写入数据时,需要先更新分散式状态信息到otherstate,再写入数据。

若为otherstate。在读取时,读取磁盘中的数据。在写入时,根据otherstate的状态执行适当的操作。在最简单的情况下,只存在一种otherstate:“数据已写入”,那么直接将数据写入磁盘即可,不需要再更新otherstate。

由此可以看出,对数据块的整个访问过程都是异步操作,因为涉及到大量的磁盘读写。因此,很有可能对于同一个数据块存在多个访问请求,为确保状态的一致性,可以在内存中维护一张当前访问的数据块的表,保存访问状态,并检查访问冲突。

图4为本发明实施例提供的将磁盘状态信息从计算机内存向机械磁盘进行同步的装置的结构示意图。如图4所示,该装置包括:确定单元401、判断单元402及同步单元403。其中:

确定单元401实时基于用户对每个数据块中用户数据的操作类型,确定当前时刻所述每个数据块在内存中的元数据,所述元数据用于指示所述数据块中的用户数据的状态;判断单元402若判断获知当前时刻所述数据块的用户数据处于中间状态或最终状态,并且当前时刻所述数据块对应的数据块组在内存中的数据块组同步状态的取值为第一预设值,下一时刻所述数据块组在内存中的数据块组同步状态的取值则为第二预设值,并将所述数据块组同步状态更新至所述状态位图空间;同步单元403每隔预设时长将所述数据块在内存中的数据块状态位图同步至所述状态位图空间。

具体地,确定单元401实时基于对磁盘“数据块”中“数据部分”的读取、写入等操作,确定当前时刻每个数据块中元数据的取值,根据元数据的取值,确定“数据块”状态信息的变化,并将确定结果发送至判断单元402;判断单元402若判断获知当前时刻数据块的状态为“中间状态”或“最终状态”,并且当前时刻该数据块对应的数据块组在内存中的同步状态为真(即同步状态的取值为第一预设值时),则将此数据块组在内存中的同步状态修改为假(即同步状态的取值为第二预设值),并实时将所述修改后的数据块组同步状态更新到机械磁盘的状态位图空间;同步单元403则负责每隔预设时长将所述数据块在内存中的数据块状态位图同步至所述状态位图空间。需要说明的是,本发明实施例提供的装置是为了实现上述方法实施例的,其功能具体可参考上述方法实施例,此处不再赘述。

图5为本发明实施例提供的将磁盘状态信息从机械磁盘向计算机内存载入的装置的结构示意图。如图5所示,该装置包括:载入单元501和创建单元502。其中:

载入单元501将所述机械磁盘中的数据块状态位图和数据块组同步状态位图载入到所述计算机内存中;创建单元502根据所述数据块状态位图和数据块组同步状态位图,在所述计算机内存中创建数据块同步状态位图。

具体地,所述磁盘状态信息包括数据块状态、数据块组同步状态和数据块同步状态,所述数据块状态和所述数据块组同步状态以位图形式存储在所述机械磁盘中。载入单元501将存储在机械磁盘中的磁盘状态信息载入至计算机内存中,并将载入结果发送至创建单元502;创建单元502根据所述载入结果,遍历所述计算机内存中的数据块状态位图,根据每个数据块的状态信息以及每个数据块对应的数据块组在数据块组同步状态位图中的状态,从而确定对应的“数据块同步状态位图”中的状态。

图6是本发明实施例提供的电子设备的结构框图。参照图6,所述电子设备,包括:第一处理器(processor)601、第一存储器(memory)602和第一总线603;其中,所述第一处理器601和所述第一存储器602通过所述第一总线603完成相互间的通信;所述第一处理器601用于调用所述第一存储器602中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:实时基于用户对每个数据块中用户数据的操作类型,确定当前时刻所述每个数据块在内存中的元数据,所述元数据用于指示所述数据块中的用户数据的状态;若判断获知当前时刻所述数据块的用户数据处于中间状态或最终状态,并且当前时刻所述数据块对应的数据块组在内存中的数据块组同步状态的取值为第一预设值,下一时刻所述数据块组在内存中的数据块组同步状态的取值则为第二预设值,并将所述数据块组同步状态更新至所述状态位图空间;每隔预设时长将所述数据块在内存中的数据块状态位图同步至所述状态位图空间。

图7为本发明又一实施例提供的电子设备的结构框图。参照图7,所述电子设备,包括:第二处理器(processor)701、第二存储器(memory)702和第二总线703;其中,所述第二处理器701和所述第二存储器702通过所述第二总线703完成相互间的通信;所述第二处理器701用于调用所述第二存储器702中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:将所述机械磁盘中的数据块状态位图和数据块组同步状态位图载入到所述计算机内存中;根据所述数据块状态位图和数据块组同步状态位图,在所述计算机内存中创建数据块同步状态位图。

本发明实施例提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态第一计算机可读存储介质上的第一计算机程序,所述第一计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:实时基于用户对每个数据块中用户数据的操作类型,确定当前时刻所述每个数据块在内存中的元数据,所述元数据用于指示所述数据块中的用户数据的状态;若判断获知当前时刻所述数据块的用户数据处于中间状态或最终状态,并且当前时刻所述数据块对应的数据块组在内存中的数据块组同步状态的取值为第一预设值,下一时刻所述数据块组在内存中的数据块组同步状态的取值则为第二预设值,并将所述数据块组同步状态更新至所述状态位图空间;每隔预设时长将所述数据块在内存中的数据块状态位图同步至所述状态位图空间。

本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态第二计算机可读存储介质上的第二计算机程序,所述第二计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:将所述机械磁盘中的数据块状态位图和数据块组同步状态位图载入到所述计算机内存中;根据所述数据块状态位图和数据块组同步状态位图,在所述计算机内存中创建数据块同步状态位图。

本发明实施例提供一种第一计算机可读存储介质,所述第一计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:实时基于用户对每个数据块中用户数据的操作类型,确定当前时刻所述每个数据块在内存中的元数据,所述元数据用于指示所述数据块中的用户数据的状态;若判断获知当前时刻所述数据块的用户数据处于中间状态或最终状态,并且当前时刻所述数据块对应的数据块组在内存中的数据块组同步状态的取值为第一预设值,下一时刻所述数据块组在内存中的数据块组同步状态的取值则为第二预设值,并将所述数据块组同步状态更新至所述状态位图空间;每隔预设时长将所述数据块在内存中的数据块状态位图同步至所述状态位图空间。

本发明实施例还提供一种第二计算机可读存储介质,所述第二计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:将所述机械磁盘中的数据块状态位图和数据块组同步状态位图载入到所述计算机内存中;根据所述数据块状态位图和数据块组同步状态位图,在所述计算机内存中创建数据块同步状态位图。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

需要说明的是,本发明提供的存储装置是为了实现上述方法实施例的,其功能具体可参照上述方法实施例,此处不再赘述。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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