CN108268336B - 保证元数据一致性的方法及装置 - Google Patents
保证元数据一致性的方法及装置 Download PDFInfo
- Publication number
- CN108268336B CN108268336B CN201611253729.5A CN201611253729A CN108268336B CN 108268336 B CN108268336 B CN 108268336B CN 201611253729 A CN201611253729 A CN 201611253729A CN 108268336 B CN108268336 B CN 108268336B
- Authority
- CN
- China
- Prior art keywords
- storage unit
- metadata
- storage
- data protection
- unit
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据重构方法及装置。所公开的数据重构方法包括:响应于第一存储单元发生故障,获取备用存储单元;获取构成第一存储单元所属的数据保护单元的其他存储单元的标识符,以及其他存储单元的序列号的最大值;获取第一存储单元在所述数据保护单元中的索引;向备用存储单元写入元数据。本申请中的数据重构方法应用于存储系统中。
Description
技术领域
本申请涉及存储技术领域,尤其涉及数据重构方法及装置、数据保护单元的重组方法及装置。
背景技术
在利用RAID(Redundant Arrays of Independent Disks,独立盘冗余阵列)技术的存储系统中,一个数据保护单元由多个存储单元组成,这些存储单元可以是物理盘,可以是物理盘中的一部分空间,也可以是其他的虚拟盘。需要将元数据信息保存在这些存储单元上,以便在系统重启后可以根据这些元数据信息把存储系统的数据保护单元重组起来。
这些元数据信息记录了该数据保护单元的基本信息和组成该数据保护单元的存储单元信息。当有存储单元发生故障时,需要为数据保护单元选择一个或多个备用的存储单元,然后把数据重构到备用的存储单元中,最后更新元数据信息,以用备用存储单元替换故障存储单元。
发明内容
元数据信息需要保存在数据保护单元的多个存储单元上,这就会涉及到元数据一致性的问题。
在现有技术中,数据重构完成后,把更新后的元数据写到数据保护单元的所有的存储单元中。如果在更新元数据的期间发生了异常,比如断电,掉盘等事件,采用这种方法就会导致数据保护单元无法重组。而且采用这种方法需要更新所有存储单元中的元数据区域,这会带来写放大的问题。
本申请提出的方法,可以保证在出现异常时数据的一致性和正确性,同时还能避免更新元数据引起的写放大问题。
根据本申请的第一方面,提供了根据本申请第一方面的第一数据重构方法,包括:响应于第一存储单元发生故障,获取备用存储单元;获取构成第一存储单元所属的数据保护单元的其他存储单元的标识符,以及其他存储单元的序列号的最大值;获取第一存储单元在所述数据保护单元中的索引;向备用存储单元写入元数据。
根据本申请的第一方面的第一数据重构方法,提供了根据本申请第一方面的第二数据重构方法,其中,所述元数据包括所述其他存储单元的标识符,备用存储单元的标识符,大于所述最大值的序列号,以及第一存储单元在所述数据保护单元中的索引。
根据本申请的第一方面的第二数据重构方法,提供了根据本申请第一方面的第三数据重构方法,其中,所述元数据还包含时间戳,时间戳记录元数据被更新的时间。
根据本申请的第一方面的第三数据重构方法,提供了根据本申请第一方面的第四数据重构方法,还包括:获取向备用存储单元写入元数据时的系统时间,并将所述系统时间记录于时间戳中。
根据本申请的第一方面的第一至第四数据重构方法之一,提供了根据本申请第一方面的第五数据重构方法,其中,响应于提供第一存储单元的固态存储设备或物理块出现故障,识别第一存储单元发生故障。
根据本申请的第一方面的第一至第五数据重构方法之一,提供了根据本申请第一方面的第六数据重构方法,其中,所述元数据仅被写入所述备用存储单元,而不被写入所述其他存储单元。
根据本申请的第一方面的第一至第六数据重构方法之一,提供了根据本申请第一方面的第七数据重构方法,还包括:从所述其他存储单元恢复第一存储单元的数据,并将恢复的数据写入所述备用存储单元。
根据本申请第一方面的数据重构方法,元数据记录了所属数据保护单元的基本信息和组成该数据保护单元的存储单元信息,当第一存储单元发生故障时,为数据保护单元选择一个备用存储单元,然后把数据重构到备用存储单元中,最后更新元数据信息,以用备用存储单元替换第一存储单元。可见,不需要把更新后的元数据内容更新到第一存储单元所属的数据保护单元中的所有存储单元中,即使在更新元数据的期间发生了异常,比如说断电,掉盘等,采用这种方法也不会导致RAID无法重组。而且,采用这种方法不需要更新所有存储单元中的元数据区域,避免了写放大的问题,同时,可以保证在出现异常时数据的一致性和正确性。
根据本申请的第二方面,提供了根据本申请第二方面的第一数据重构方法,包括:响应于同属于数据保护单元的第一存储单元与第二存储单元发生故障,获取第一备用存储单元与第二备用存储单元;获取构成所述数据保护单元的其他存储单元的标识符,以及其他存储单元的序列号的最大值;通过所述其他存储单元恢复所述第一存储单元与第二存储单元的数据;向第一备用存储单元与第二备用存储单元写入所恢复的数据与元数据。
根据本申请的第二方面的第一数据重构方法,提供了根据本申请第二方面的第二数据重构方法,其中,向第一备用存储单元写入的元数据包括所述其他存储单元标识符,第一备用存储单元的标识符,大于所述最大值的第一序列号,以及第一存储单元在所述数据保护单元中的索引;以及其中,向第二备用存储单元写入的元数据包括所述其他存储单元标识符,第二备用存储单元的标识符,大于所述第一序列号的第二序列号,以及第二存储单元在所述数据保护单元中的索引。
根据本申请第二方面的数据重构方法,元数据记录了所属数据保护单元的基本信息和组成该数据保护单元的存储单元信息,当多个存储单元当第一存储单元发生故障时,以第一存储单元和第二存储单元发生故障为例,为数据保护单元选择两个备用存储单元,然后把数据对应地重构到备用存储单元中,最后更新元数据信息,以用第一备用存储单元替换第一存储单元,第二备用存储单元替换第二存储单元。可见,不需要把更新后的元数据内容更新到数据保护单元中的所有存储单元中,即使在更新元数据的期间发生了异常,比如说断电,掉盘等,采用这种方法也不会导致RAID无法重组。而且,采用这种方法不需要更新所有存储单元中的元数据区域,避免了写放大的问题,同时,可以保证在出现异常时数据的一致性和正确性。
根据本申请的第三方面,提供了根据本申请第三方面的第一数据保护单元的重组方法,所述数据保护单元包括多个存放有元数据的存储单元,所述方法包括:基于存储单元的元数据,获取属于第一数据保护单元的第一多个存储单元;选择第一多个存储单元的元数据中的序列号最大的第一存储单元,基于第一存储单元确定第一数据保护单元所使用的第二多个存储单元。
根据本申请的第三方面的第一数据保护单元的重组方法,提供了根据本申请第三方面的第二数据保护单元的重组方法,若所述第二多个存储单元中的一个或多个存在故障,选择第一多个存储单元的元数据中的序列号次大的第二存储单元,基于第二存储单元确定第一数据保护单元所使用的第三多个存储单元。
根据本申请的第三方面的第一数据保护单元的重组方法,提供了根据本申请第三方面的第三数据保护单元的重组方法,若第一多个存储单元中具有最大序列号的存储单元有多个,选择具有最大序列号的多个存储单元中,具有最新时间戳的存储单元作为所述第一存储单元。
根据本申请的第三方面的第二数据保护单元的重组方法,提供了根据本申请第三方面的第四数据保护单元的重组方法,若第一多个存储单元中具有次大序列号的存储单元有多个,选择具有次大序列号的多个存储单元中,具有最新时间戳的存储单元作为所述第二存储单元。
根据本申请的第三方面的第一至第四数据保护单元的重组方法之一,提供了根据本申请第三方面的第五数据保护单元的重组方法,响应于存储系统上电,而执行所述方法。
根据本申请的第三方面的第一数据保护单元的重组方法,提供了根据本申请第三方面的第六数据保护单元的重组方法,其中,存储单元的元数据包含存储单元所属数据保护单元的所有存储单元的标识符。
根据本申请的第三方面的第一数据保护单元的重组方法,提供了根据本申请第三方面的第七数据保护单元的重组方法,基于存储单元的元数据,获取属于第一数据保护单元的第一多个存储单元包括:步骤S1:获取一个存储单元的元数据,基于该元数据指示的属于第一数据保护单元的多个存储单元的标识符,获取与每个标识符对应的存储单元。
根据本申请的第三方面的第七数据保护单元的重组方法,提供了根据本申请第三方面的第八数据保护单元的重组方法,基于存储单元的元数据,获取属于第一数据保护单元的第一多个存储单元还包括:对于所获取的每个存储单元,重复步骤S1。
根据本申请的第三方面的第一至第八数据保护单元的重组方法之一,提供了根据本申请第三方面的第九数据保护单元的重组方法,其中,每个存储单元的元数据包含存储单元在第一数据保护单元中的索引,所述索引指示存储单元在数据保护单元中位置。
根据本申请的第三方面的第九数据保护单元的重组方法,提供了根据本申请第三方面的第十数据保护单元的重组方法,若所确定的该数据保护单元所使用的存储单元的部分存储单元的索引相同,保留索引相同的存储单元中元数据的序列号最大的存储单元作为数据保护单元所使用的存储单元;若第一多个存储单元中第四多个存储单元具有相同的索引,在第一多个存储单元中保留第四多个存储单元中具有最大序列号的存储单元。
根据本申请的第三方面的第十数据保护单元的重组方法,提供了根据本申请第三方面的第十一数据保护单元的重组方法,其中,第四多个存储单元中除具有最大序列号的存储单元之外的存储单元被从第一多个存储单元中移除。
根据本申请的第三方面的第一至十一数据保护单元的重组方法之一,提供了根据本申请第三方面的第十二数据保护单元的重组方法,每个存储单元的元数据存放在对应存储单元的起始处。
根据本申请第三方面的数据保护单元的重组方法,在重组数据保护单元时,根据最大的序列号选择数据保护单元的存储单元,不需要在更新数据保护单元中的所有存储单元后进行重组,即使在重组的期间发生了异常,比如说断电,掉盘等,采用这种方法也不会导致RAID无法重组。而且,采用这种方法不需要更新所有存储单元中的元数据区域,避免了写放大的问题,同时,可以保证在出现异常时数据的一致性和正确性。
根据本申请的第四方面,提供了根据本申请第四方面的第一数据重构装置,包括:备用存储单元获取模块,用于响应于第一存储单元发生故障,获取备用存储单元;标识符和序列号获取模块,用于获取构成第一存储单元所属的数据保护单元的其他存储单元的标识符,以及其他存储单元的序列号的最大值;索引获取模块,用于获取第一存储单元在所述数据保护单元中的索引;以及写入模块,用于向备用存储单元写入元数据。
根据本申请的第四方面的第一数据重构装置,提供了根据本申请第四方面的第二数据重构装置,其中,所述元数据包括所述其他存储单元的标识符,备用存储单元的标识符,大于所述最大值的序列号,以及第一存储单元在所述数据保护单元中的索引。
根据本申请的第四方面的第二数据重构装置,提供了根据本申请第四方面的第三数据重构装置,其中,所述元数据还包含时间戳,时间戳记录元数据被更新的时间。
根据本申请的第四方面的第三数据重构装置,提供了根据本申请第四方面的第四数据重构装置,还包括时间戳获取模块,用于获取向备用存储单元写入元数据时的系统时间,并将所述系统时间记录于时间戳中。
根据本申请的第四方面的第一至第四数据重构装置之一,提供了根据本申请第四方面的第五数据重构装置,其中,备用存储单元获取模块包括故障识别单元,用于响应于提供第一存储单元的固态存储设备或物理块出现故障,识别第一存储单元发生故障。
根据本申请的第四方面的第一至第五数据重构装置之一,提供了根据本申请第四方面的第六数据重构装置,其中,写入模块用于将所述元数据仅被写入所述备用存储单元,而不被写入所述其他存储单元。
根据本申请的第四方面的第一至第六数据重构装置之一,提供了根据本申请第四方面的第七数据重构装置,还包括数据恢复模块,用于从所述其他存储单元恢复第一存储单元的数据,并将恢复的数据写入所述备用存储单元。
根据本申请第四方面的数据重构装置,其有益效果与本申请第一方面的数据重构方法相同,在此不再赘述。
根据本申请的第五方面,提供了根据本申请第五方面的第一数据重构装置,包括:备用存储单元获取模块,用于响应于同属于数据保护单元的第一存储单元与第二存储单元发生故障,获取第一备用存储单元与第二备用存储单元;标识符和序列号获取模块,用于获取构成所述数据保护单元的其他存储单元的标识符,以及其他存储单元的序列号的最大值;数据恢复模块,用于通过所述其他存储单元恢复所述第一存储单元与第二存储单元的数据;备用存储单元写入模块,用于向第一备用存储单元与第二备用存储单元写入所恢复的数据与元数据。
根据本申请的第五方面的第一数据重构装置,提供了根据本申请第五方面的第二数据重构装置,其中,向第一备用存储单元写入的元数据包括所述其他存储单元标识符,第一备用存储单元的标识符,大于所述最大值的第一序列号,以及第一存储单元在所述数据保护单元中的索引;以及其中,向第二备用存储单元写入的元数据包括所述其他存储单元标识符,第二备用存储单元的标识符,大于所述第一序列号的第二序列号,以及第二存储单元在所述数据保护单元中的索引。
根据本申请第五方面的数据重构装置,其有益效果与本申请第二方面的数据重构方法相同,在此不再赘述。
根据本申请的第六方面,提供了根据本申请第六方面的第一数据保护单元的重组装置,所述数据保护单元包括多个存放有元数据的存储单元,所述装置包括:第一存储单元获取模块,用于基于存储单元的元数据,获取属于第一数据保护单元的第一多个存储单元;第二存储单元获取模块,用于选择第一多个存储单元的元数据中的序列号最大的第一存储单元,基于第一存储单元确定第一数据保护单元所使用的第二多个存储单元。
根据本申请的第六方面的第一数据保护单元的重组装置,提供了根据本申请第六方面的第二数据保护单元的重组装置,所述第二存储单元获取模块还用于在所述第二多个存储单元中的一个或多个存在故障时,选择第一多个存储单元的元数据中的序列号次大的第二存储单元,基于第二存储单元确定第一数据保护单元所使用的第三多个存储单元。
根据本申请的第六方面的第一数据保护单元的重组装置,提供了根据本申请第六方面的第三数据保护单元的重组装置,所述第二存储单元获取模块还用于在第一多个存储单元中具有最大序列号的存储单元有多个,选择具有最大序列号的多个存储单元中,具有最新时间戳的存储单元作为所述第一存储单元。
根据本申请的第六方面的第二数据保护单元的重组装置,提供了根据本申请第六方面的第四数据保护单元的重组装置,所述第二存储单元获取模块还用于在第一多个存储单元中具有次大序列号的存储单元有多个,选择具有次大序列号的多个存储单元中,具有最新时间戳的存储单元作为所述第二存储单元。
根据本申请的第六方面的第一至第四数据保护单元的重组装置之一,提供了根据本申请第六方面的第五数据保护单元的重组装置,还包括执行模块,用于响应于存储系统上电,而执行所述装置。
根据本申请的第六方面的第一数据保护单元的重组装置,提供了根据本申请第六方面的第六数据保护单元的重组装置,其中,存储单元的元数据包含存储单元所属数据保护单元的所有存储单元的标识符。
根据本申请的第六方面的第一数据保护单元的重组装置,提供了根据本申请第六方面的第七数据保护单元的重组装置,所述第一存储单元获取模块包括:
第一数据保护单元获取单元,用于获取一个存储单元的元数据,基于该元数据指示的属于第一数据保护单元的多个存储单元的标识符,获取与每个标识符对应的存储单元。
根据本申请的第六方面的第七数据保护单元的重组装置,提供了根据本申请第六方面的第八数据保护单元的重组装置,所述第一存储单元获取模块包括还包括多数据保护单元获取单元,用于对于所获取的每个存储单元,获取该存储单元的元数据,基于该元数据指示的属于第一数据保护单元的多个存储单元的标识符,获取与每个标识符对应的存储单元。
根据本申请的第六方面的第一至第八数据保护单元的重组装置之一,提供了根据本申请第六方面的第九数据保护单元的重组装置,其中,每个存储单元的元数据包含存储单元在第一数据保护单元中的索引,所述索引指示存储单元在数据保护单元中位置。
根据本申请的第六方面的第九数据保护单元的重组装置,提供了根据本申请第六方面的第十数据保护单元的重组装置,还包括索引比较模块,用于若所确定的该数据保护单元所使用的存储单元的部分存储单元的索引相同,保留索引相同的存储单元中元数据的序列号最大的存储单元作为数据保护单元所使用的存储单元;所述索引比较模块还用于若第一多个存储单元中第四多个存储单元具有相同的索引,在第一多个存储单元中保留第四多个存储单元中具有最大序列号的存储单元。
根据本申请的第六方面的第十数据保护单元的重组装置,提供了根据本申请第六方面的第十一数据保护单元的重组装置,其中,所述索引比较模块还用于从第一多个存储单元中移除第四多个存储单元中除具有最大序列号的存储单元之外的存储单元。
根据本申请的第六方面的第一至第十一数据保护单元的重组装置之一,提供了根据本申请第六方面的第十二数据保护单元的重组装置,每个存储单元的元数据存放在对应存储单元的起始处。
根据本申请第六方面的数据保护单元的重组装置,其有益效果与本申请第三方面的数据保护单元的重组方法相同,在此不再赘述。
根据本申请的第七方面,提供了根据本申请第七方面的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序使所述计算机系统执行根据本申请第一方面、第二方面的数据重构方法或第三方面的数据保护单元的重组方法之一。
根据本申请第七方面的计算机程序,其有益效果与本申请第一方面、第二方面的数据重构方法或第三方面的数据保护单元的重组方法之一相同,在此不再赘述。
根据本申请的第八方面,提供了根据本申请第八方面的计算机,包括存储器与处理器,所述存储器中存储有计算机程序,当所述计算机程序被加载到所述处理器并由所述处理器运行时,所述计算机程序使所述处理器执行根据本申请第一方面、第二方面的数据重构方法或第三方面的数据保护单元的重组方法之一。
根据本申请第八方面的计算机程序,其有益效果与本申请第一方面、第二方面的数据重构方法或第三方面的数据保护单元的重组方法之一相同,在此不再赘述。
根据本申请的第九方面,提供了根据本申请第九方面的计算机,所述计算机包括根据本申请第四方面、第五方面的数据重构装置或第六方面的数据保护单元的重组装置之一。
根据本申请第九方面的计算机程序,其有益效果与本申请第四方面、第五方面的数据重构装置或第六方面的数据保护单元的重组装置之一相同,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为存储系统的架构的示意图;
图2为数据保护单元的结构的示意图;
图3为根据本申请实施例的数据保护单元的数据重构的第一示意图;
图4为根据本申请实施例的数据保护单元的数据重构的第二示意图;
图5为根据本申请实施例的数据保护单元的数据重构的第三示意图;
图6为根据本申请实施例的数据保护单元的数据重构的第四示意图;以及
图7为根据本申请实施例的数据保护单元的数据重构的第五示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为存储系统的架构的示意图,存储系统包括主机(计算机或服务器)以及耦合到主机的多个存储设备(如:驱动器,驱动器可以是固态驱动器或磁盘驱动器)。
通过存储资源池来维护各个驱动器提供的存储资源。存储资源池中记录的是各个驱动器中尚未分配给数据保护单元的存储单元。作为举例,存储单元可以是物理盘、物理盘中的一部分空间、其他的虚拟盘、数据块或数据大块(Chu nk,简称大块)。在存储单元池中数据块或数据大块又被称为空闲数据块或空闲数据大块。作为举例,数据大块是预定大小的逻辑空间或物理空间连续的多个数据块。数据大块的大小可以是数百KB(KByte,千字节,)或MB(MByte,兆字节)。存储资源池是一种虚拟化技术,将来自物理驱动器的存储资源虚拟化为数据块或数据大块以供上层访问或使用。在存储系统中,存储资源池可以有多个,而在图1中,仅表示出一个存储资源池作为示例。
参见图1,存储系统还包括数据保护单元层和分配器。数据保护单元层提供多个数据保护单元,数据保护单元代表存储系统的部分存储空间。数据保护单元带有RAID功能。数据保护单元由多个存储单元组成。在根据本申请的实施例中,存储单元是数据块或数据大块。数据保护单元可以被创建和销毁,一个数据保护单元被创建时,通过分配器从存储资源池中获取所需数量的大块,这些大块组成一个数据保护单元。一个大块在同一时刻可以仅属于一个数据保护单元,已经被分配给数据保护单元的大块不会再被分配给其他数据保护单元。数据保护单元被销毁时,构成该数据保护单元的大块被释放回存储资源池,并可被再次分配给其他数据保护单元。
图2为数据保护单元的结构的示意图。数据保护单元包括大块220、大块222、大块224以及大块226,构成该数据保护单元的大块来自不同的驱动器。大块220来自驱动器210,大块222来自驱动器212,大块224来自驱动器214以及大块226来自驱动器216。当某一驱动器发生故障时,数据保护单元中的一个或少数大块无法访问,而通过数据保护单元的其他大块,重建数据保护单元的数据,以满足数据可靠性的要求。
可选地,每个大块中存储有元数据信息。例如,大块220-大块226的每个大块上都保存相同的元数据信息,从而保证了元数据信息的可靠性。当属于同一数据保护单元的部分大块发生故障,从其他大块中依然能获取元数据信息。元数据用于记录大块所属的数据保护单元、大块所在数据保护单元的数据保护级别(RAID级别)、大块的擦写次数(ProgramErase Cycles)等信息。
通过RAID技术为数据保护单元提供数据保护,并提供对数据保护单元的高性能访问。参见图2,数据保护单元包括多个利用RAID技术的条带(如:条带230、条带232、条带238等),每个条带由来自不同大块的存储空间组成。同一条带的来自不同大块的存储空间可具有相同或不同的地址范围。条带是数据保护单元的最小写入单位,从而通过向多块驱动器并行写入数据来提升性能。数据保护单元的读操作没有大小限制。
例如,构成条带230的来自4个大块的存储空间中,3个存储空间用于存储用户数据,而另1个存储空间用于存储校验数据,从而使得在条带230上提供RAID5级别的数据保护。
图3为根据本申请实施例的数据保护单元的数据重构的第一示意图。
参见图3,初始时数据保护单元300由大块0到大块3共4个存储单元组成。每个存储单元都存放了一份元数据,且每份元数据的序列号都为1。元数据346中指示构成数据保护单元300的存储单元包括大块0、大块1、大块2与大块3。在大块0到大块3的每个的元数据中,都记录了构成数据保护单元300的存储单元包括大块0、大块1、大块2与大块3。
继续参见图3,某一时刻大块3发生故障(例如,大块3所在的驱动器被移除)。为重构数据保护单元300,选择备用存储单元(大块4),并通过数据保护单元300中的正常大块(大块0到大块2)重构故障大块3的数据,并把数据存储到大块4中,然后更新大块4中的元数据,并将大块4的元数据的序列号设为2,使得大块4的元数据的序列号是数据保护单元300的各存储单元的元数据的序列号的最大值。例如,为得到大块4的元数据的序列号,获取数据保护单元的大块0到大块2的元数据的序列号的最大值(为1),将该最大值递增,得到大块4的元数据的序列号。在大块4的元数据348中记录了构成当前数据保护单元300的存储单元是大块0、大块1、大块2与大块4。
当系统重启时,进行数据保护单元重组。此时,提供故障大块3的驱动器已恢复正常。通过扫描存储系统中的多个驱动器,发现有两个存储单元大块3和大块4的元数据都宣称自己是数据保护单元300的第四个存储单元。此时比较大块3和大块4的元数据中的序列号。大块4的元数据的序列号为2,大于大块3的元数据的序列号1,由于大块4的元数据的序列号大于大块3的元数据的序列号,从而可以确定大块4中的元数据为有效的元数据。以及依据大块4的元数据348,确定构成数据保护单元300的存储单元包括大块0、大块1、大块2与大块4,以及将大块0、大块1、大块2与大块4重组为数据保护单元300。
图4为根据本申请实施例的数据保护单元的数据重构的第二示意图。
参见图4,初始时数据保护单元400由大块1、大块2和大块4共3个存储单元组成。每个存储单元都存放了一份元数据,且大块1和大块2的元数据的序列号都为1,大块4中的元数据的序列号为5。元数据350中指示构成数据保护单元400的存储单元包括大块1、大块2与大块4。
继续参看图5。图5为根据本申请实施例的数据保护单元的数据重构的第三示意图。
系统重启后,由于某种原因,大块4出现故障,于是选取备用存储单元大块5进行数据重构,并进行数据保护单元的重组。从大块1与大块2重构数据保护单元400的数据,存储到大块5,并在大块5的元数据352中指示构成数据保护单元400的存储单元包括大块1、大块2与大块5。以及依据用于重构数据保护单元400的大块1与大块2的元数据的序列号的最大值(为1)得到大块5的元数据的序列号为2。
继续参看图6。图6为根据本申请实施例的数据保护单元的数据重构的第四示意图。
在某一时刻,大块1和大块2先后发生故障,触发数据重构。当大块1故障后,用作为备用存储单元的大块6重构数据保护单元400,在大块6的元数据中记录了构成数据保护单元400的大块包括大块2、大块5与大块6,以及大块6的元数据的序列号(为3)大于大块2与大块3的元数据的序列号的最大值(为2)。接下来,大块2又发生故障。用备用存储单元大块7重构数据保护单元400。在大块7的元数据中记录了构成数据保护单元400的大块包括大块5、大块6与大块7,以及大块7的元数据的序列号(为4)大于大块5与大块6的元数据的序列号的最大值(为3)。
继续参看图7,图7为根据本申请实施例的数据保护单元的数据重构的第五示意图。
系统重启,大块4又意外恢复工作,通过扫描存储系统中的多个驱动器,得到此时与数据保护单元400相关的存储单元状态(参看图7)。根据各大块的元数据的序列号,大块4中的元数据的序列号为5,是最大的序列号,因此会依据大块4中的元数据356重组数据保护单元400。元数据356指示构成数据保护单元400的存储单元包括大块1、大块2与大块4。但是由于此时大块1和大块2都不存在,所以数据保护单元重组会失败。响应于数据保护单元重组失败,在数据保护单元400相关的存储单元中寻找次大的序列号。大块7中的元数据的序列号为4,是次大的序列号,因此依据大块7进行保护单元重组。大块7的元数据354指示构成数据保护单元400的存储单元包括大块5、大块6与大块7,因而通过大块5、大块6与大块7重组数据保护单元400。
作为另一个例子,在数据保护单元重组的过程中,如果只是根据元数据的序列号来判断,可能会出现数据保护单元无法重组的情形。这时就需要进一步比较元数据时间戳。例如,为重组数据保护单元,若同数据保护单元400相关的多个大块中,存在两个或多个大块的元数据的序列号具有相同的最大值,则进一步识别元数据中记录的时间戳,并依据时间戳最新的那个大块进行数据保护单元重组。
在根据本申请的实施例中,构成数据保护单元的存储单元中记录元数据。元数据包括序列号、构成数据保护单元的所有存储单元的标识符和/或时间戳。
对于元数据的序列号,每次更新元数据时使序列号递增。对元数据的更新发生在重构存储单元过程中。为得到新的存储单元的元数据的序列号,获取构成数据保护单元的所有可用存储单元的元数据的序列号的最大值,并递增该最大值,作为新的存储单元的元数据的序列号。
可选地,每一份元数据信息中还包含时间戳,时间戳记录了该元数据最后被更新的时间。可以理解地,时间戳是单调递增的。
在一个例子中,当存储单元发生故障时,发生数据重构,用数据保护单元的可用的存储单元恢复发生故障的存储单元的数据,并将恢复的数据写入新分配给存储单元的备用存储单元。以及在备用存储单元中写入更新后的元数据。更新的元数据只存储到备用存储单元中,不需要更新数据保护单元的其他存储单元中的元数据。可选地,向备用存储单元写入的更新后的元数据中,还包括时间戳,用于记录向备用存储单元写入元数据的时间。
根据本申请的又一实施例,数据保护单元包括N个存储单元,分别记为存储单元1-存储单元N(N为大于1的正整数)。N个存储单元中的存储单元m发生故障,作为响应,发生数据重构,以替换存储单元m(m为正整数,且
1<=m<=N)。为进行数据重构,获取备用存储单元。获取构成数据保护单元的存储单元1到存储单元(m-1)、以及存储单元(m+1)到存储单元N的标识符,以及存储单元1到存储单元(m-1)、以及存储单元(m+1)到存储单元N的元数据的序列号的最大值S。获取存储单元m在数据保护单元中的索引。获取当前系统时间。设置备用存储单元的元数据,而不更新该数据保护单元中的其他存储单元的元数据。
其中备用存储单元的元数据包括:存储单元1到存储单元(m-1)、以及存储单元(m+1)到存储单元N的标识符,备用存储单元的标识符,大于S的序列号,存储单元m在数据保护单元中的索引,以及当前系统时间。
根据本申请的又一实施例中,重组数据保护单元。上存储系统启动或上电时,发生或需要重组数据保护单元。通过扫描驱动器,获取每一个存储单元中的元数据。元数据中记录存储单元所属的数据保护单元,和/或同提供元数据的存储单元属于相同数据保护单元的多个存储单元。因而从元数据中,能得到属于同一数据保护单元的第一多个存储单元。
从第一多个存储单元中,依据序列号最大的元数据来重组数据保护单元。该数据保护单元由该具有最大序列号的元数据中记录的属于该数据保护单元的第二多个存储单元所组成。进一步地,如果有两个或多个存储单元的元数据的序列号相同且是该多个存储单元的元数据的序列号的最大值,表示发生元数据的序列号冲突,那么进一步比较元数据的时间戳,选择时间戳最近的那份元数据来重组数据保护单元。可以理解地,选择时间戳较远的元数据来重组数据保护单元,也有可能实现重组数据保护单元。
进一步地,为重组数据保护单元,检查依据具有最大序列号的元数据所得到的第二多个存储单元。若第二多个存储单元中的一个或多个出现故障或不可用,从第一多个存储单元中,选择元数据的序列号次大的存储单元。依据该序列号次大的存储单元的元数据确定该数据保护单元所使用的第三多个存储单
元。并用该第三多个存储单元来重组数据保护单元。
为得到第一多个存储单元,可选地,读取一个存储单元的元数据,基于元数据中记录的该元数据所属的数据保护单元的所有存储单元标识符,获取与这些标识符对应的存储单元。以及对于每一个被获取的存储单元,基于其元数据中记录的该元数据所属的数据保护单元的所有存储单元标识符,再次获取与标识符对应的存储单元。这些所获取的存储单元构成了第一多个存储单元。
可选地,元数据存储在每个存储单元的起始位置。
根据本申请的依然又一实施例,数据保护单元由多个存储单元组成,其中第n个存储单元(设该存储单元为F)发生故障。这时选择一备用存储单元(设该备用存储单元为S)。然后通过数据重构从数据保护单元的其他存储单元中把F上的数据重构出来写到S中。其中,n为大于或者等于1的正整数。更新元数据中组成数据保护单元的存储单元数组,用S替换F。更新元数据的序列号,使序列号递增,递增后的序列号为该数据保护单元的各个存储单元中的序列号的最大值+1。更新元数据时间戳,取值为当前时间。把更新后的元数据信息只写入存储单元S中,而不必写入数据保护单元中的其他存储单元中,这样可以避免写放大的问题。
当系统重启发生数据重组时,依次读取每一个存储单元中的元数据信息,从而获取属于属于同一数据保护单元的所有存储单元。此时可能发现有两个存储单元(F和S)中的元数据都宣称自己是数据保护单元的第n个存储单元,这时比较它们的元数据的序列号。由于存储单元S中的元数据的序列号比存储单元F中的元数据的序列号大,于是选取S作为数据保护单元的第n个存储单元。当确定了组成数据保护单元的所有存储单元后,选择其中序列号最大的元数据来重组数据保护单元。
在重组数据保护单元的过程中,如果选择序列号最大的元数据来重组数据保护单元时,部分存储单元故障,则选择序列号次大的元数据来重组数据保护单元。如果发现有多个存储单元序列号相等且为最大,那么就进一步比较这些存储单元的元数据时间戳,选择时间戳最新的那份元数据来重组数据保护单元。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据重构方法,其特征在于,包括:
响应于第一存储单元发生故障,获取备用存储单元;
获取构成第一存储单元所属的数据保护单元的其他存储单元的标识符,以及其他存储单元的序列号的最大值;
获取第一存储单元在所述数据保护单元中的索引;
向备用存储单元写入元数据,其中,所述元数据包括所述其他存储单元的标识符,所述备用存储单元的标识符大于所述最大值的序列号;所述元数据仅被写入所述备用存储单元,而不被写入所述其他存储单元。
2.根据权利要求1所述的数据重构方法,其特征在于,其中,所述元数据还包含时间戳,时间戳记录元数据被更新的时间,被更新的时间为向备用存储单元写入元数据时的系统时间。
3.一种数据重构方法,包括:
响应于同属于数据保护单元的第一存储单元与第二存储单元发生故障,获取第一备用存储单元与第二备用存储单元;
获取构成所述数据保护单元的其他存储单元的标识符,以及其他存储单元的序列号的最大值;
通过所述其他存储单元恢复所述第一存储单元与第二存储单元的数据;
向第一备用存储单元与第二备用存储单元写入所恢复的数据与元数据;其中,所述元数据包括所述其他存储单元的标识符,第一备用存储单元的标识符和第二备用存储单元的标识符大于所述最大值的序列号;
所述元数据仅被写入到对应的第一备用存储单元和第二备用存储单元,而不被写入所述其他存储单元。
4.根据权利要求3所述的数据重构方法,其特征在于,其中,向第一备用存储单元写入的元数据包括所述其他存储单元标识符,第一备用存储单元的标识符,大于所述最大值的第一序列号,以及第一存储单元在所述数据保护单元中的索引;以及
其中,向第二备用存储单元写入的元数据包括所述其他存储单元标识符,第二备用存储单元的标识符,大于所述第一序列号的第二序列号,以及第二存储单元在所述数据保护单元中的索引。
5.一种数据保护单元的重组方法,所述数据保护单元包括多个存放有元数据的存储单元,其特征在于,所述方法包括:
基于存储单元的元数据,获取属于第一数据保护单元的第一多个存储单元;
选择第一多个存储单元的元数据中的序列号最大的第一存储单元,基于第一存储单元确定第一数据保护单元所使用的第二多个存储单元;其中,在存储系统启动或上电时,进行数据保护单元的重组,重组时,根据第二多个存储单元来重组数据保护单元。
6.根据权利要求5所述的数据保护单元的重组方法,其特征在于,若所述第二多个存储单元中的一个或多个存在故障,选择第一多个存储单元的元数据中的序列号次大的第二存储单元,基于第二存储单元确定第一数据保护单元所使用的第三多个存储单元。
7.一种数据重构装置,其特征在于,包括:
备用存储单元获取模块,用于响应于第一存储单元发生故障,获取备用存储单元;
标识符和序列号获取模块,用于获取构成第一存储单元所属的数据保护单元的其他存储单元的标识符,以及其他存储单元的序列号的最大值;
索引获取模块,用于获取第一存储单元在所述数据保护单元中的索引;以及写入模块,用于向备用存储单元写入元数据;其中,所述元数据包括所述其他存储单元的标识符,所述备用存储单元的标识符大于所述最大值的序列号;
所述元数据仅被写入所述备用存储单元,而不被写入所述其他存储单元。
8.一种数据重构装置,包括:
备用存储单元获取模块,用于响应于同属于数据保护单元的第一存储单元与第二存储单元发生故障,获取第一备用存储单元与第二备用存储单元;
标识符和序列号获取模块,用于获取构成所述数据保护单元的其他存储单元的标识符,以及其他存储单元的序列号的最大值;
数据恢复模块,用于通过所述其他存储单元恢复所述第一存储单元与第二存储单元的数据;
备用存储单元写入模块,用于向第一备用存储单元与第二备用存储单元写入所恢复的数据与元数据;其中,所述元数据包括所述其他存储单元的标识符,所述第一备用存储单元与所述第二备用存储单元的标识符大于所述最大值的序列号;
所述元数据仅被写入第一备用存储单元与第二备用存储单元,而不被写入所述其他存储单元。
9.一种数据保护单元的重组装置,所述数据保护单元包括多个存放有元数据的存储单元,其特征在于,所述装置包括:
第一存储单元获取模块,用于基于存储单元的元数据,获取属于第一数据保护单元的第一多个存储单元;
第二存储单元获取模块,用于选择第一多个存储单元的元数据中的序列号最大的第一存储单元,基于第一存储单元确定第一数据保护单元所使用的第二多个存储单元;其中,在存储系统启动或上电时,进行数据保护单元的重组,重组时,根据第二多个存储单元来重组数据保护单元。
10.一种计算机,包括存储器与处理器,所述存储器中存储有计算机程序,
当所述计算机程序被加载到所述处理器并由所述处理器运行时,所述计算机程序使所述处理器执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611253729.5A CN108268336B (zh) | 2016-12-30 | 2016-12-30 | 保证元数据一致性的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611253729.5A CN108268336B (zh) | 2016-12-30 | 2016-12-30 | 保证元数据一致性的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108268336A CN108268336A (zh) | 2018-07-10 |
CN108268336B true CN108268336B (zh) | 2023-06-23 |
Family
ID=62754211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611253729.5A Active CN108268336B (zh) | 2016-12-30 | 2016-12-30 | 保证元数据一致性的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108268336B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739822B (zh) * | 2018-12-26 | 2021-04-13 | 中国移动通信集团江苏有限公司 | 消息存储方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101097556A (zh) * | 2006-06-29 | 2008-01-02 | 国际商业机器公司 | 用于更新逻辑卷中元数据的方法和系统 |
CN103534688A (zh) * | 2013-05-29 | 2014-01-22 | 华为技术有限公司 | 数据恢复方法、存储设备和存储系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2369206B (en) * | 2000-11-18 | 2004-11-03 | Ibm | Method for rebuilding meta-data in a data storage system and a data storage system |
-
2016
- 2016-12-30 CN CN201611253729.5A patent/CN108268336B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101097556A (zh) * | 2006-06-29 | 2008-01-02 | 国际商业机器公司 | 用于更新逻辑卷中元数据的方法和系统 |
CN103534688A (zh) * | 2013-05-29 | 2014-01-22 | 华为技术有限公司 | 数据恢复方法、存储设备和存储系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108268336A (zh) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10430279B1 (en) | Dynamic raid expansion | |
JP6307537B2 (ja) | Ssd環境のための適応的raid | |
US8880843B2 (en) | Providing redundancy in a virtualized storage system for a computer system | |
EP3519969B1 (en) | Physical media aware spacially coupled journaling and replay | |
JP5848353B2 (ja) | Raidアレイにおけるデバイス内データ保護 | |
KR100701563B1 (ko) | 스토리지 제어 장치 및 방법 | |
JP5937599B2 (ja) | 動的構成のraidアレイにおける再構成読み込み | |
US9575844B2 (en) | Mass storage device and method of operating the same to back up data stored in volatile memory | |
US20120084611A1 (en) | Apparatus, System, and Method for Bad Block Remapping | |
CN107515726B (zh) | 用于管理存储设备的方法和系统 | |
CN104461391A (zh) | 一种存储设备元数据管理处理方法及系统 | |
TWI474170B (zh) | 快閃記憶體轉譯層(ftl)資料庫日誌記錄方案 | |
US10409682B1 (en) | Distributed RAID system | |
JP2020042805A (ja) | 永続記憶装置の管理 | |
US20060259812A1 (en) | Data protection method | |
US11487428B2 (en) | Storage control apparatus and storage control method | |
CN108268336B (zh) | 保证元数据一致性的方法及装置 | |
CN113625974A (zh) | 一种磁盘阵列重构方法、装置、设备及介质 | |
KR101548452B1 (ko) | 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치 | |
CN105573862B (zh) | 一种恢复文件系统的方法和设备 | |
US20130198563A1 (en) | Disk storage system with rebuild sequence and method of operation thereof | |
CN107491263B (zh) | 一种基于存储对象的数据重构方法 | |
CN110764695A (zh) | 一种基于高速采集的存储方法和系统 | |
CN109871186B (zh) | 面向可重组raid的多目标快速重构系统 | |
CN109885263B (zh) | 面向可重组raid的多目标快速重构方法 |
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 | ||
CB02 | Change of applicant information |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 Room 302, 3 / F, building B-2, Dongsheng Science Park, 66 xixiaokou Road, Haidian District, Beijing Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |