一种数据存储方法及装置与流程

文档序号:11233784阅读:304来源:国知局
一种数据存储方法及装置与流程

本发明涉及数据处理领域,特别涉及一种数据存储方法及装置。



背景技术:

对于基于块存储的存储系统,存储设备中的元数据的重要性是不言而喻的。目前,在存储系统中,为了提高数据存储效率,常将真实数据和真实数据的元数据存储在同一存储设备上,例如:在存储一数据时,首先计算该数据在该存储设备上的存储位置,确定该数据的存储位置,并将该数据存储至该存储位置。这样可以高效的存储数据。

但是,上述存储设备在计算一数据的存储位置偏时,很可能出现偏差,例如:通过计算确定的一数据在上述存储设备上的存储位置正好在存储了元数据的存储位置,该数据将覆盖该存储位置上已存储的元数据,进而对元数据进行误操作,上述存储设备在读取元数据时必然出现问题,甚至导致存储系统崩溃。

现有技术中,缺少对元数据的保护,在存储数据时该数据很可能覆盖了已存储的元数据,导致存储设备不能正确读取元数据,甚至导致存储系统崩溃,降低了存储系统的可靠性。



技术实现要素:

本发明实施例的目的在于提供一种数据存储方法及装置,以提高存储系统的可靠性。

为达到上述目的,本发明实施例公开了一种数据存储方法,应用于存储设备,所述存储设备包括:元数据存储区域,所述方法包括步骤:

接收数据存储请求,其中,所述数据存储请求中包含待存储数据;

确定所述待存储数据的目标存储位置,并判断所述目标存储位置是否在所述元数据存储区域内;

若在所述元数据存储区域内,则判断所述待存储数据是否为元数据;

若为是,则在满足预设存储条件的情况下将所述待存储数据存储至所述目标存储位置;

若为否,则拒绝将所述待存储数据存储至所述目标存储位置。

在本发明的一种具体实现方式中,所述数据存储请求中还包含:设备接口标识;

所述判断所述待存储数据是否为元数据,包括:

判断所述设备接口标识是否对应预设的设备接口,其中,所述预设的设备接口用于传递元数据;

若为是,则判定所述待存储数据为所述元数据。

在本发明的一种具体实现方式中,所述在满足预设存储条件的情况下将所述待存储数据存储至所述目标存储位置,包括:

判断所述元数据存储区域中已存储的所有元数据是否完整;

若为是,则将所述待存储数据存储至所述目标存储位置。

在本发明的一种具体实现方式中,所述判断所述元数据存储区域中已存储的所有元数据是否完整,包括:

根据预设的校验算法,获得所述元数据存储区域中已存储的所有元数据的第一校验值;

判断所述第一校验值是否与第一预设的校验值一致;

若为是,则判定所述元数据存储区域中已存储的所有元数据完整;

在所述将所述待存储数据存储至所述目标存储位置之后,还包括:

根据所述预设的校验算法,获得所述元数据存储区域中已存储的所有元数据的第二校验值;

根据所述第二校验值,更新所述第一预设的校验值。

在本发明的一种具体实现方式中,所述元数据存储区域包括:主元数据存储区域和备元数据存储区域,其中,所述备元数据存储区域为所述主元数据存储区域的数据备份区域,所述目标存储位置在所述主元数据存储区域内;

所述判断所述元数据存储区域中已存储的所有元数据是否完整,包括:

根据预设的校验算法,获得所述主元数据存储区域中已存储的所有元数据的第三校验值,并判断所述第三校验值是否与第二预设的校验值一致;

若所述第三校验值与所述第二预设的校验值不一致,则根据所述预设的校验算法,获得所述备元数据存储区域中已存储的元数据的第四校验值,并判断所述第四校验值是否与所述第二预设的校验值一致;

若为是,则判定所述元数据存储区域中已存储的所有元数据完整;

在所述将所述待存储数据存储至所述目标存储位置之后,还包括:

根据所述预设的校验算法,获得所述主元数据存储区域中已存储的所有元数据的第五校验值;

根据所述第五校验值,更新所述第二预设的校验值。

在本发明的一种具体实现方式中,在判定所述第四校验值与所述第二预设的校验值一致之后,还包括:

根据所述备元数据存储区域中已存储的所有元数据,更新所述主元数据存储区域中已存储的元数据。

在本发明的一种具体实现方式中,所述方法还包括:

在所述第四校验值与所述第二预设的校验值不一致的情况下,初始化所述主元数据存储区域内的元数据和所述备元数据存储区域内的元数据,并判定所述元数据存储区域中已存储的所有元数据完整。

为达到上述目的,本发明实施例还公开了一种数据存储装置,应用于存储设备,所述存储设备包括:元数据存储区域,所述装置包括:请求接收模块、存储位置判断模块、数据判断模块、数据存储模块和数据存储拒绝模块;

其中,所述请求接收模块,用于接收数据存储请求,其中,所述数据存储请求中包含待存储数据;

所述存储位置判断模块,用于确定所述待存储数据的目标存储位置,并判断所述目标存储位置是否在所述元数据存储区域内,若在所述元数据存储区域内,则触发所述数据判断模块;

所述数据判断模块,用于判断所述待存储数据是否为元数据,若为是,则触发所述数据存储模块,若为否,则触发所述数据存储拒绝模块;

所述数据存储模块,用于在满足预设存储条件的情况下将所述待存储数据存储至所述目标存储位置;

所述数据存储拒绝模块,用于拒绝将所述待存储数据存储至所述目标存储位置。

在本发明的一种具体实现方式中,所述数据存储请求中还包含:设备接口标识;

所述数据判断模块,包括:设备接口判断子模块和数据判定子模块;

其中,所述设备接口判断子模块,用于判断所述设备接口标识是否对应预设的设备接口,若为是,则触发所述数据判定子模块,其中,所述预设的设备接口用于传递元数据;

所述数据判定子模块,用于判定所述待存储数据为所述元数据。

在本发明的一种具体实现方式中,所述数据存储模块,包括:完整数据判断子模块和数据存储子模块;

其中,所述完整数据判断子模块,用于判断所述元数据存储区域中已存储的所有元数据是否完整,若为是,则触发所述数据存储子模块;

所述数据存储子模块,用于将所述待存储数据存储至所述目标存储位置。

在本发明的一种具体实现方式中,所述完整数据判断子模块,包括:校验值获得单元、第一校验值判断单元和第一完整数据判定单元;

其中,所述校验值获得单元,用于根据预设的校验算法,获得所述元数据存储区域中已存储的所有元数据的第一校验值;

所述第一校验值判断单元,用于判断所述第一校验值是否与第一预设的校验值一致,若为是,则触发所述完整数据判定单元;

所述完整数据判定单元,用于判定所述元数据存储区域中已存储的所有元数据完整;

所述装置还包括:第一校验值获得模块和第一校验值更新模块;

其中,所述第一校验值获得模块,用于根据所述预设的校验算法,获得所述元数据存储区域中已存储的所有元数据的第二校验值;

所述第一校验值更新模块,用于根据所述第二校验值,更新所述第一预设的校验值。

在本发明的一种具体实现方式中,所述元数据存储区域包括:主元数据存储区域和备元数据存储区域,其中,所述备元数据存储区域为所述主元数据存储区域的数据备份区域,所述目标存储位置在所述主元数据存储区域内;

所述完整数据判断子模块,包括:第二校验值判断单元、第三校验值判断单元和第二完整数据判定单元;

其中,所述第二校验值判断单元,用于根据预设的校验算法,获得所述主元数据存储区域中已存储的所有元数据的第三校验值,并判断所述第三校验值是否与第二预设的校验值一致,若所述第三校验值与所述第二预设的校验值不一致,则触发所述第三校验值判断单元;

所述第三校验值判断单元,用于根据所述预设的校验算法,获得所述备元数据存储区域中已存储的元数据的第四校验值,并判断所述第四校验值是否与所述第二预设的校验值一致,若为是,则触发所述第二完整数据判定单元;

所述第二完整数据判定单元,用于判定所述元数据存储区域中已存储的所有元数据完整;

所述装置还包括:第二校验值获得模块和第二校验值更新模块;

其中,所述第二校验值获得模块,用于根据所述预设的校验算法,获得所述主元数据存储区域中已存储的所有元数据的第五校验值;

所述第二校验值更新模块,用于根据所述第五校验值,更新所述第二预设的校验值。

在本发明的一种具体实现方式中,所述装置还包括:元数据更新模块,

用于根据所述备元数据存储区域中已存储的所有元数据,更新所述主元数据存储区域中已存储的元数据。

在本发明的一种具体实现方式中,所述装置还包括:元数据初始化模块,

用于在所述第四校验值与所述第二预设的校验值不一致的情况下,初始化所述主元数据存储区域内的元数据和所述备元数据存储区域内的元数据,并判定所述元数据存储区域中已存储的所有元数据完整。

由上可见,本发明实施例中,存储设备接收到数据存储请求后,确定出待存储数据的目标存储位置,并判断该目标存储位置是否在元数据存储区域内,若在元数据存储区域内,则判断该待存储数据是否为元数据,若为是,在满足预设存储条件的情况下将该待存储数据存储至所述目标存储位置,若为否,则拒绝存储该待存储数据,这样避免了真实数据覆盖元数据的问题,保证了存储设备能够正确读取元数据,提高了存储系统的可靠性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1本发明实施例提供的一种数据存储方法的流程示意图;

图2本发明实施例提供的另一种数据存储方法的流程示意图;

图3本发明实施例提供的另一种数据存储方法的流程示意图;

图4本发明实施例提供的另一种数据存储方法的流程示意图;

图5本发明实施例提供的一种数据存储装置的结构示意图;

图6本发明实施例提供的另一种数据存储装置的结构示意图;

图7本发明实施例提供的另一种数据存储装置的结构示意图;

图8本发明实施例提供的另一种数据存储装置的结构示意图。

具体实施方式

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

本发明实施例公开了一种数据存储方法及装置,应用于存储设备,存储设备包括:元数据存储区域,该方法包括:接收数据存储请求,确定该数据存储请求中包含的待存储数据的目标存储位置,并判断目标存储位置是否在元数据存储区域内,若在元数据存储区域内,则判断待存储数据是否为元数据,若为是,则在满足预设存储条件的情况下将待存储数据存储至目标存储位置,若为否,则拒绝待存储数据存储至目标存储位置。

下面通过具体实施例,对本发明进行详细说明。

参考图1,图1本发明实施例提供的一种数据存储方法的流程示意图,应用于存储设备,该存储设备可以包括:元数据存储区域,该方法可以包括如下步骤:

s101:接收数据存储请求;

其中,上述数据存储请求中包含待存储数据。这里,待存储数据可以为真实数据,也可以为真实数据的元数据。

实际应用中,数据存储请求可以为存储设备中的虚拟文件系统接收的用户发送的数据存储请求,其中,虚拟文件系统为基于云存储的文件系统,其作为云存储系统的底层存储基础,可以为上层应用提供存储服务。

真实数据的元数据可以为:真实数据的存储位置、真实数据的数据大小……等信息,本申请并不对此进行限定。

s102:确定所述待存储数据的目标存储位置,并判断所述目标存储位置是否在所述元数据存储区域内,若在所述元数据存储区域内,则执行步骤s103;

当然,在本发明其他实施例中,如果目标存储位置不在所述元数据存储区域内,则可以将待存储数据直接存储至目标存储位置。

在本发明的一种具体实现方式中,上述存储设备可以包括:元数据存储区域和真实数据存储区域,其中,元数据存储区域,用于存储元数据,真实数据存储区域,用于存储真实数据。

对于基于块存储的存储系统,存储设备中的元数据的重要性是不言而喻的,因为,存储系统中可能包括多个存储设备,且每个存储设备中存储有大量的真实数据,存储系统可以根据元数据可以快速地获得真实数据,而不必去每个存储设备中所有真实数据来获得获得真实数据。因此,这种情况下,在存储设备接收到数据存储请求后,需要确定待存储数据的目标存储位置是否在元数据存储区域。这里,对于如何确定待存储数据的目标存储位置数据现有技术,此处不再赘述。

s103:判断所述待存储数据是否为元数据,若为是,则执行步骤s104,若为否,则执行步骤s105;

s104:在满足预设存储条件的情况下将所述待存储数据存储至所述目标存储位置;

s105:拒绝将所述待存储数据存储至所述目标存储位置。

具体地,在确定待存储数据的目标存储位置在元数据存储区域内情况下,为了确保元数据存储区域内的元数据正确,需要确定该待存储数据是否为元数据,若是元数据,则满足预设存储条件的情况下将待存储数据存储至确定的该待存储数据的目标存储位置,即将该待存储数据存储至元数据存储区域内,若不是元数据,则拒绝待存储数据存储至确定的该待存储数据的目标存储位置,即不允许该待存储数据存储至元数据存储区域内。

在本发明的一种具体实现方式中,上述数据存储请求中还可以包含:设备接口标识;

这种情况下,上述判断所述待存储数据是否为元数据,可以包括:

判断设备接口标识是否对应预设的设备接口,其中,预设的设备接口用于传递元数据;

若为是,则判定待存储数据为元数据;

若为否,则判定待存储数据不是元数据。

实际应用中,在存储设备中可以预设一个设备接口,如:设备驱动接口,该预设的设备接口负责传递元数据及元数据的相关信息,而拒绝传递真实数据及真实数据的相关信息,这里元数据的相关信息包括:元数据的数据量大小、 元数据的目标存储位置等,真实数据的相关信息包括:真实数据的数据量大小、真实数据的目标存储位置等。这样在判断待存储数据是否为元数据时,只需要判断数据存储请求中包含的设备接口标识对应的设备接口是否为用于传递元数据的预设的设备接口即可,方便、快捷地判断出了待存储数据是否为元数据,有效地避免了真实数据存储至元数据存储区域中。

应用图1所示实施例,存储设备接收到数据存储请求后,确定出待存储数据的目标存储位置,并判断该目标存储位置是否在元数据存储区域内,若在元数据存储区域内,则判断该待存储数据是否为元数据,若为是,在满足预设存储条件的情况下将该待存储数据存储至所述目标存储位置,若为否,则拒绝存储该待存储数据,这样避免了真实数据覆盖元数据的问题,保证了存储设备能够正确读取元数据,提高了存储系统的可靠性。

参考图2,图2本发明实施例提供的另一种数据存储方法的流程示意图,应用于存储设备,该存储设备可以包括:元数据存储区域,该方法中,步骤s104可以包括:

s1041:判断所述元数据存储区域中已存储的所有元数据是否完整,若为是,则执行步骤s1042;

s1042:将所述待存储数据存储至所述目标存储位置。

实际应用中,很可能因为用户的误操作等原因,导致元数据存储区域内的元数据的信息缺失或信息错误,此时,若不对该不完整的元数据进行处理,还是将接收到的元数据存储至元数据存储区域中,那么当存储设备读取到该不完整的元数据时,很可能导致存储系统崩溃。因此,在将元数据存储至元数据存储区域的目标存储位置之前,判断元数据存储区域中已存储的所有元数据是否完整,以尽快发现并处理元数据存储区域中的元数据不完整的问题,避免存储系统崩溃的问题出现。

应用图2所示实施例,判断元数据存储区域中已存储的所有元数据是否完整,在元数据存储区域中已存储的所有元数据完整的情况下,才将待存储数据存储至目标存储位置。这样,保证了元数据存储区域中的元数据的正确、完整,避免了因元数据存储区域中的元数据不完整而导致存储系统崩溃的问题。

参考图3,图3本发明实施例提供的另一种数据存储方法的流程示意图,应 用于存储设备,该存储设备可以包括:元数据存储区域,该方法中,步骤s1041可以包括:

s1041a:根据预设的校验算法,获得所述元数据存储区域中已存储的所有元数据的第一校验值;

其中,预设的校验算法可以为crc校验算法,还可以为其他校验算法,本发明对此不进行限定。

s1041b:判断所述第一校验值是否与第一预设的校验值一致,若为是,则执行步骤s1041c;

其中,第一预设的校验值可以为上述存储设备在上一次元数据存储区域中存储待存储数据后获得的,这样更为智能化;也可以为用户根据元数据存储区域中已存储的元数据给定的,这样更为人性化。

s1041c:判定所述元数据存储区域中已存储的所有元数据完整。

假设,第一预设的校验值为145,若根据预设的校验算法,获得第一的校验值为145,145=145,则可以判定元数据存储区域中已存储的所有元数据完整,此时,可以将待存储数据存储至元数据存储区域中的目标存储位置。

一种具体实现方式中,若第一校验值与第一预设的校验值不一致,则可以初始化元数据存储区域中的元数据,再将待存储数据存储至元数据存储区域中的目标存储位置。假设,第一预设的校验值为145,若根据预设的校验算法,获得第一的校验值为120,145≠120,则可以判定元数据存储区域中已存储的所有元数据不完整,此时,可以将元数据存储区域中的元数据全部初始化后。这样若元数据存储区域中的元数据存储错误的部分,可以得到及时的处理,提高了存储系统的可靠性。

另外,上述数据存储方法中,在将待存储数据存储至目标存储位置之后,还可以包括:

s106:根据所述预设的校验算法,获得所述元数据存储区域中已存储的所有元数据的第二校验值;

s107:根据所述第二校验值,更新所述第一预设的校验值。

实际应用中,待存储数据存储至元数据存储区域中后,元数据存储区域中的元数据发生了变化,为了确保校验正确,第一预设的校验值需要更新。假设,存储待存储数据前第一预设的校验值为145,判断得到第一校验值与第一预设的校验值一致,则将待存储数据存储至元数据存储区域中,此时再获得第二校验值为150,则将第一预设的校验值更新为150。

需要说明的是,当元数据存储区域中未存储数据时,可以直接将待存储数据存储至元数据存储区域中的目标存储位置,存储后获得第二校验值,并将该第二校验值作为第一预设的校验值,当再有待存储数据需要存储至元数据存储区域中时,根据上述步骤进行校验。

应用图3所示实施例,根据预设的校验算法,获得元数据存储区域中已存储的所有元数据的第一校验值,判断该第一校验值是否与第一预设的校验值一致,若一致,则可以将待存储数据存储至元数据存储区域中的目标存储位置,并在存储待存储数据后,获得元数据存储区域中已存储的所有元数据的第二校验值,根据该第二校验值,更新第一预设的校验值。这样能够及时发现元数据存储区域中的元数据存储是否错误的部分,提高了存储系统的可靠性。

参考图4,图4本发明实施例提供的另一种数据存储方法的流程示意图,应用于存储设备,该存储设备可以包括:元数据存储区域,该方法中,元数据存储区域可以包括:主元数据存储区域和备元数据存储区域,其中,备元数据存储区域为主元数据存储区域的数据备份区域,目标存储位置在主元数据存储区域内。

这种情况下,步骤s1041可以包括:

s1041d:根据预设的校验算法,获得所述主元数据存储区域中已存储的所有元数据的第三校验值,并判断所述第三校验值是否与第二预设的校验值一致,若所述第三校验值与所述第二预设的校验值不一致,则执行步骤s1041e;

其中,预设的校验算法可以为crc校验算法,还可以为其他校验算法,本发明对此不进行限定。另外,第二预设的校验值可以为上述存储设备在上一次主元数据存储区域中存储待存储数据后,根据主元数据存储区域中已存储的所有元数据获得的;也可以上述存储设备在上一次主元数据存储区域中存储待存储数据后,并将该待存储数据备份到备元数据存储区域后,根据备元数据存储 区域中已存储的所有元数据获得的;还可以为用户根据主元数据存储区域中已存储的所有元数据给定的。

一种具体实现方式中,若第三校验值与第二预设的校验值一致,可以将待存储数据存储至主元数据存储区域中的目标存储位置,存储在主元数据存储区域中后,还可以将该待存储数据从主元数据存储区域中备份到备元数据存储区域中。

当然,若第三校验值与第二预设的校验值一致,还可以在将待存储数据存储至主元数据存储区域中的目标存储位置的同时,将该待存储数据直接存储至备元数据存储区域中。

s1041e:根据所述预设的校验算法,获得所述备元数据存储区域中已存储的元数据的第四校验值,并判断所述第四校验值是否与所述第二预设的校验值一致,若为是,则执行步骤s1041f;

s1041f:判定所述元数据存储区域中已存储的所有元数据完整。

在本发明的一种具体实现方式中,上述判定元数据存储区域中已存储的所有元数据完整之前,还可以包括:

根据备元数据存储区域中已存储的所有元数据,更新主元数据存储区域中已存储的元数据。

具体地,根据备元数据存储区域中已存储的所有元数据,更新主元数据存储区域中已存储的元数据,可以为:获得主元数据存储区域中出现错误的元数据,及备元数据存储区域中对应该出现错误的元数据的正确的元数据,由该正确的元数据更新出现错误的元数据,这样能够快速地更新主元数据存储区域中已存储的元数据。

具体地,根据备元数据存储区域中已存储的所有元数据,更新主元数据存储区域中已存储的元数据,还可以为:由备元数据存储区域中已存储的所有元数据更新主元数据存储区域中已存储的所有元数据,这样能够准确地更新主元数据存储区域中已存储的元数据。

实际应用中,备元数据存储区域为主元数据存储区域的数据备份区域,在正常的情况下,主元数据存储区域中的元数据和备元数据存储区域中的元数据 相同。当主元数据存储区域内的元数据不完整、出现差错时,若备元数据存储区域内的元数据完整,则可以根据备元数据存储区域中已存储的所有元数据,更新主元数据存储区域中已存储的所有元数据完整,从而保证了元数据存储区域的元数据的正确完整,降低了操作元数据的出错率。

一种具体实现方式中,上述数据存储方法还可以包括:

在第四校验值与第二预设的校验值不一致的情况下,初始化主元数据存储区域内的元数据和备元数据存储区域内的元数据,并判定元数据存储区域中已存储的所有元数据完整。

具体地,在第四校验值与第二预设的校验值不一致的情况下,表明主元数据存储区域内的元数据和备元数据存储区域内的元数据都不完整,主元数据存储区域内的出现错误的元数据并不能由备元数据存储区域内的元数据恢复,因此,需要初始化主元数据存储区域内的元数据和备元数据存储区域内的元数据,以保证后续存储的元数据正确,避免了存储系统崩溃。

另外,上述数据存储方法中,在将待存储数据存储至目标存储位置之后,还可以包括:

s108:根据所述预设的校验算法,获得所述主元数据存储区域中已存储的所有元数据的第五校验值;

s109:根据所述第五校验值,更新所述第二预设的校验值。

实际应用中,待存储数据存储至主元数据存储区域中后,主元数据存储区域中的元数据发生了变化,为了确保校验正确,第二预设的校验值需要更新。假设,存储待存储数据前第二预设的校验值为145,在判定元数据存储区域中已存储的所有元数据完整后,将待存储数据存储至主元数据存储区域中,此时再获得第五校验值为150,则将第二预设的校验值更新为150。

当然,第二预设的校验值也可以根据备元数据存储区域中已存储的所有元数据进行更新。具体地,在在判定元数据存储区域中已存储的所有元数据完整后,将待存储数据存储至主元数据存储区域中,在将该待存储数据存备份至备在判定元数据存储区域中已存储的所有元数据完整后,将待存储数据存储至主元数据存储区域中,此时,可以根据预设的校验算法,获得备元数据存储区域 中已存储的所有元数据的第六校验值,根据该第六校验值,更新第二预设的校验值。

需要说明的是,当主元数据存储区域中未存储数据时,可以直接将待存储数据存储至主元数据存储区域中的目标存储位置,存储后获得第五校验值,并将该第五校验值作为第二预设的校验值,当再有待存储数据需要存储至主元数据存储区域中时,根据上述步骤进行校验。

应用图4所示实施例,在校验主元数据存储区域中已存储的元数据失败后,再校验备主元数据存储区域中已存储的元数据,若成功,则可以判定元数据存储区域中已存储的所有元数据完整,由于备元数据存储区域为主元数据存储区域的数据备份区域,因此可以根据该备元数据存储区域中的元数据恢复主元数据存储区域的元数据,降低操作元数据的出错率,提高了存储系统的可靠性。

参考图5,图5本发明实施例提供的一种数据存储装置的结构示意图,应用于存储设备,上述存储设备可以包括:元数据存储区域,该装置可以包括:请求接收模块501、存储位置判断模块502、数据判断模块503、数据存储模块504和数据存储拒绝模块505;

其中,请求接收模块501,用于接收数据存储请求,其中,数据存储请求中包含待存储数据;

存储位置判断模块502,用于确定待存储数据的目标存储位置,并判断目标存储位置是否在元数据存储区域内,若在元数据存储区域内,则触发数据判断模块;

数据判断模块503,用于判断待存储数据是否为元数据,若为是,则触发数据存储模块504,若为否,则触发数据存储拒绝模块505;

数据存储模块504,用于在满足预设存储条件的情况下将待存储数据存储至目标存储位置;

数据存储拒绝模块505,用于拒绝将待存储数据存储至目标存储位置。

一种具体实现方式中,数据存储请求中还可以包含:设备接口标识;

数据判断模块503,可以包括:设备接口判断子模块和数据判定子模块(图5中未示出);

其中,设备接口判断子模块,用于判断设备接口标识是否对应预设的设备接口,若为是,则触发数据判定子模块,其中,预设的设备接口用于传递元数据;

数据判定子模块,用于判定待存储数据为元数据。

应用图5所示实施例,存储设备接收到数据存储请求后,确定出待存储数据的目标存储位置,并判断该目标存储位置是否在元数据存储区域内,若在元数据存储区域内,则判断该待存储数据是否为元数据,若为是,在满足预设存储条件的情况下将该待存储数据存储至所述目标存储位置,若为否,则拒绝存储该待存储数据,这样避免了真实数据覆盖元数据的问题,保证了存储设备能够正确读取元数据,提高了存储系统的可靠性。

参考图6,图6本发明实施例提供的另一种数据存储装置的结构示意图,应用于存储设备,上述存储设备可以包括:元数据存储区域,该装置中,数据存储模块504,可以包括:完整数据判断子模块5041和数据存储子模块5042;

其中,完整数据判断子模块5041,用于判断元数据存储区域中已存储的所有元数据是否完整,若为是,则触发数据存储子模块5042;

数据存储子模块5042,用于将待存储数据存储至目标存储位置。

应用图6所示实施例,判断元数据存储区域中已存储的所有元数据是否完整,在元数据存储区域中已存储的所有元数据完整的情况下,才将待存储数据存储至目标存储位置。这样,保证了元数据存储区域中的元数据的正确、完整,避免了因元数据存储区域中的元数据不完整而导致存储系统崩溃的问题。

参考图7,图7本发明实施例提供的另一种数据存储装置的结构示意图,应用于存储设备,上述存储设备可以包括:元数据存储区域,该装置中,完整数据判断子模块5041,可以包括:校验值获得单元5041a、第一校验值判断单元5041b和第一完整数据判定单元5041c;

其中,校验值获得单元5041a,用于根据预设的校验算法,获得元数据存储区域中已存储的所有元数据的第一校验值;

第一校验值判断单元5041b,用于判断第一校验值是否与第一预设的校验值一致,若为是,则触发完整数据判定单元5041c;

完整数据判定单元5041c,用于判定元数据存储区域中已存储的所有元数据完整;

此时,上述数据存储装置还可以包括:第一校验值获得模块506和第一校验值更新模块507;

其中,第一校验值获得模块506,用于根据预设的校验算法,获得元数据存储区域中已存储的所有元数据的第二校验值;

第一校验值更新模块507,用于根据第二校验值,更新第一预设的校验值。

应用图7所示实施例,根据预设的校验算法,获得元数据存储区域中已存储的所有元数据的第一校验值,判断该第一校验值是否与第一预设的校验值一致,若一致,则可以将待存储数据存储至元数据存储区域中的目标存储位置,并在存储待存储数据后,获得元数据存储区域中已存储的所有元数据的第二校验值,根据该第二校验值,更新第一预设的校验值。这样能够及时发现元数据存储区域中的元数据存储是否错误的部分,提高了存储系统的可靠性。

参考图8,图8本发明实施例提供的另一种数据存储装置的结构示意图,应用于存储设备,上述存储设备可以包括:元数据存储区域,该装置中,元数据存储区域可以包括:主元数据存储区域和备元数据存储区域,其中,备元数据存储区域为主元数据存储区域的数据备份区域,目标存储位置在主元数据存储区域内;

完整数据判断子模块5041,包括:第二校验值判断单元5041d、第三校验值判断单元5041e和第二完整数据判定单元5041f;

其中,第二校验值判断单元5041d,用于根据预设的校验算法,获得主元数据存储区域中已存储的所有元数据的第三校验值,并判断第三校验值是否与第二预设的校验值一致,若第三校验值与第二预设的校验值不一致,则触发第三校验值判断单元5041e;

第三校验值判断单元5041e,用于根据预设的校验算法,获得备元数据存储区域中已存储的元数据的第四校验值,并判断第四校验值是否与第二预设的校验值一致,若为是,则触发第二完整数据判定单元5041f;

第二完整数据判定单元5041f,用于判定元数据存储区域中已存储的所有元 数据完整。

此时,上述数据存储装置还可以包括:第二校验值获得模块508和第二校验值更新模块509;

其中,第二校验值获得模块508,用于根据预设的校验算法,获得主元数据存储区域中已存储的所有元数据的第五校验值;

第二校验值更新模块509,用于根据第五校验值,更新第二预设的校验值。

一种具体实现方式中,上述数据存储装置还可以包括:元数据更新模块(图8中未示出),

用于根据备元数据存储区域中已存储的所有元数据,更新主元数据存储区域中已存储的元数据。

一种具体实现方式中,上述数据存储装置还可以包括:元数据初始化模块(图8中未示出),

用于在第四校验值与第二预设的校验值不一致的情况下,初始化主元数据存储区域内的元数据和备元数据存储区域内的元数据,并判定元数据存储区域中已存储的所有元数据完整。

应用图8所示实施例,在校验主元数据存储区域中已存储的元数据失败后,再校验备主元数据存储区域中已存储的元数据,若成功,则可以判定元数据存储区域中已存储的所有元数据完整,由于备元数据存储区域为主元数据存储区域的数据备份区域,因此可以根据该备元数据存储区域中的元数据恢复主元数据存储区域的元数据,降低操作元数据的出错率,提高了存储系统的可靠性。

对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有 更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:rom/ram、磁碟、光盘等。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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