一种元数据修复方法和装置制造方法及图纸

技术编号:15437085 阅读:81 留言:0更新日期:2017-05-25 19:17
元数据修复方法应用于存储设备中,该存储设备包括处理器和硬盘。硬盘包括逻辑单元,逻辑单元具有元数据。该硬盘中保存有该元数据的布局信息,布局信息保存在该硬盘中的地址为源地址。当该逻辑单元的元数据中的部分元数据发生损坏时,处理器将该元数据的布局信息备份至目标地址以生成该布局信息的副本。然后,处理器对该元数据进行修复,并验证修复后的元数据是否正确。如果验证结果为不正确,处理器再将布局信息的副本写入该源地址。如果对元数据的修复不成功,可以将元数据回退到修复前的状态。

Meta data repairing method and device

Metadata recovery methods are applied to storage devices, including processors and hard disks. The hard disk includes logical units, and the logic unit has metadata. The hard disk stores the layout information of the metadata, and the address of the layout information stored in the hard disk is the source address. When partial metadata in the metadata of the logical unit is corrupted, the processor backup the layout information of the metadata to the target address to produce a copy of the layout information. The processor then fixes the metadata and verifies that the repaired metadata is correct. If the validation result is incorrect, the processor then writes a copy of layout information to the source address. If the metadata repair fails, you can rollback metadata back to the pre - fix state.

【技术实现步骤摘要】
一种元数据修复方法和装置
本专利技术实施例涉及存储
,特别是一种元数据修复方法和装置。
技术介绍
目前,存储设备面临的普遍问题是元数据的种类多、数量大。元数据一旦损坏,会导致大量数据无法访问,造成用户数据丢失。一般情况下,当元数据发生损坏时会对损坏的元数据进行原址修复,而原址修复是一种破坏性的修改方式,一旦修复过程中有任何异常(如阵列控制器复位、资源申请不到等),整个修复过程不可逆,无法恢复到修复前状态。
技术实现思路
本申请提供的一种元数据修复方法及装置,可以在元数据修复不成功的情况下,将元数据回退到修复前的状态。本申请第一方面提供了一种元数据修复方法该方法应用于存储设备中,该存储设备包括处理器和硬盘。硬盘包括逻辑单元,逻辑单元具有元数据。该硬盘中保存有该元数据的布局信息,布局信息保存在该硬盘中的地址为源地址。当该逻辑单元的元数据中的部分元数据发生损坏时,处理器将该元数据的布局信息备份至目标地址以生成该布局信息的副本。然后,处理器对该元数据进行修复,并验证修复后的元数据是否正确。如果验证结果为不正确,处理器再将布局信息的副本写入该源地址。本申请在对元数据修复之前,先将所述元数据的布局信息备份至目标地址以生成所述布局信息的副本。然后,再对所述元数据进行修复,即使修复出的元数据不正确,也可以将所述布局信息的副本重新写入所述源地址,以将所述元数据回退到修复前的状态。结合第一方面,在第一方面的第一种实现中,该存储设备还包括存储器。该存储器中保存有源B+树,该源B+树的每个节点在该硬盘中分配有一个元数据块。该元数据块中保存有该元数据的子集或者该元数据的索引。该元数据的布局信息包括所述源B+树的根节点的标识。结合第一方面的第一种实现,在第一方面的第二种实现中,对该元数据的修复可以包括:对该源地址中保存的布局信息进行修改;修复该发生损坏的元数据;根据修改后的布局信息、未发生损坏的元数据以及修复出的元数据创建目标B+树。结合第一方面的第二种实现,在第一方面的第三种实现中,该方法还包括为该目标B+树的每个节点在该硬盘中分配元数据块,该目标B+树的元数据块用于保存该未发生损坏的元数据、该修复出的元数据、该未发生损坏的元数据的索引以及该修复出的元数据的索引,该目标B+树的每个节点的元数据块与该源B+树的每个节点的元数据块不相同。这是为了避免目标B+树的元数据覆盖源B+树的元数据块。结合第一方面的第三种实现,在第一方面的第四种实现中,其验证方式可以是接收读数据请求。读数据请求包括待读取数据的逻辑地址。然后,判读是否根据该逻辑地址以及该目标B+树的元数据块中记录的该修复出的元数据读取待读取数据。结合第一方面的第二种至第四种中的任意一种实现,在第一方面的第五种实现中,处理器在将布局信息的副本写入该源地址之后,还可以删除该目标B+树,并释放该目标B+树的每个节点的元数据块。因为在布局信息的副本写入该源地之后,目标B+树没有存在的必要了,将其删除并释放其每个节点的元数据块可以节省存储空间。本申请第二方面提供了一种元数据修复装置,用于执行第一方法提供的元数据修复方法。本申请第二方面的各种实现方式,与第一方面的实现方式类似。本申请第三方面提供了一种存储设备,所述存储设备包括处理器和硬盘,所述处理器用于执行第一方面提供的元数据修复方法。本申请第四方面提供了一种存储设备,所述存储设备包括处理器、存储器和硬盘,所述处理器调用所述存储器中的程序执行第一方面提供的元数据修复方法。本申请还提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可以由上述第三方面或第四方面的存储设备执行,并用于执行上述第一方面的至少一种方法。本专利技术申请提供的以上一种计算机程序产品,都能够将所述元数据回退到修复前的状态。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。图1是本专利技术实施例提供的存储设备的组成图;图2是本专利技术实施例提供的B+树的示意图;图3是本专利技术实施例提供的B+树在逻辑盘上的存储位置示意图;图4是本专利技术实施例提供的元数据修复方法的流程示意图;图5是本专利技术实施例提供的备份B+树的示意图;图6是本专利技术实施例提供的元数据修复装置的结构示意图。具体实施方式本专利技术实施例提供了一种元数据修复方法和装置,在元数据修复失败时能够回退到修复前的状态。图1描绘了本专利技术实施例提供的存储设备的组成图。存储设备10可以包括当前技术已知的任何计算设备,如服务器、台式计算机、存储阵列等等。存储设备10主要包括处理器(英文:processor)118、存储器(英文:memory)122、通信总线126以及通信接口(英文:communicationinterface)128。处理器118、存储器122以及通信接口128通过通信总线126完成相互间的通信。通信接口128,用于与硬盘31通信。存储器122,用于存储程序124,存储器122可能包含高速RAM存储器,也可能还包括非易失性存储器(英文:non-volatilememory),例如至少一个硬盘存储器。可以理解的是,存储器122可以为随机存储器(英文:randomaccessmemory,RAM)、磁碟、硬盘、固态硬盘(英文:solidstatedisk,SSD)。程序124可以包括程序代码,所述程序代码包括文件系统以及其他程序代码。处理器118可能是一个中央处理器CPU。在本专利技术实施例中,处理器118可以用于接收来自主机的各种请求,例如读数据请求、写数据请求等。元数据是描述数据的数据,包括数据的属性信息,例如数据的地址、数据的长度等。在实际应用中,硬盘31的物理存储空间被虚拟化为若干个逻辑盘。每个逻辑盘具有唯一的标识,例如编号。元数据和数据通常存储在逻辑盘的不同区域。为了描述方便,将逻辑盘中存储元数据的区域称为元数据区,将逻辑盘中存储数据的区域称为数据区。另外,元数据区存储元数据的最小单位(例如,块)与数据区保存数据的最小单位(例如,块)可能一致,也可能不一致,例如元数据以4KB为单位写入元数据区,也就是说元数据区的块的大小为4KB。数据以8KB为单位写入数据区,数据区的块的大小为8KB。本实施例中,保存元数据的块被称为元数据块,保存数据的块被称为数据块。当存储设备10接收写数据请求时,将写数据请求携带的待写入数据写入数据区,并且生成元数据,将元数据写入元数据区。例如,存储设备10接收一个写数据请求,所述写数据请求包括待写入数据d1(简称为数据d1),以及所述数据d1的逻辑地址。所述逻辑地址包括逻辑单元号(英文:logicunitnumber,LUN)0、逻辑块地址(英文:logicblockaddress,LBA)a1和长度(英文:length)8KB。其中,逻辑单元号表示存储设备10对用户呈现的逻辑单元的编号,逻辑单元0表示编号为0的逻辑单元。逻辑块地址表示所述待写入数据位于所述逻辑单元的起始位置。长度表示所述待写入数据的大小。存储设备10接收所述写数据请求之后将所述数据d1写入逻辑盘1中,并且d1位于逻辑盘1的位置为b1。存储设备10再记录数据d1的元数据。所述元数据包括数据d1所在的逻辑盘的标识(1)以及所述数据d1位于逻辑盘的位置(本文档来自技高网...
一种元数据修复方法和装置

【技术保护点】
一种元数据修复方法,其特征在于,所述方法应用于存储设备中,所述存储设备包括处理器和硬盘,所述硬盘包括逻辑单元,所述逻辑单元具有元数据,所述硬盘中保存有所述元数据的布局信息,所述布局信息保存在所述硬盘中的地址为源地址,所述方法由处理器执行,包括:当所述逻辑单元的元数据中的部分元数据发生损坏时,将所述元数据的布局信息备份至目标地址以生成所述布局信息的副本;对所述元数据进行修复;验证所述修复后的元数据是否正确;当所述修复后的元数据不正确时,将所述布局信息的副本写入所述源地址。

【技术特征摘要】
1.一种元数据修复方法,其特征在于,所述方法应用于存储设备中,所述存储设备包括处理器和硬盘,所述硬盘包括逻辑单元,所述逻辑单元具有元数据,所述硬盘中保存有所述元数据的布局信息,所述布局信息保存在所述硬盘中的地址为源地址,所述方法由处理器执行,包括:当所述逻辑单元的元数据中的部分元数据发生损坏时,将所述元数据的布局信息备份至目标地址以生成所述布局信息的副本;对所述元数据进行修复;验证所述修复后的元数据是否正确;当所述修复后的元数据不正确时,将所述布局信息的副本写入所述源地址。2.根据权利要求1所述的方法,其特征在于,所述存储设备还包括存储器,所述存储器中保存有源B+树,所述源B+树的每个节点在所述硬盘中分配有一个元数据块,所述元数据块中保存有所述元数据的子集或者所述元数据的索引,所述元数据的布局信息包括所述源B+树的根节点的标识。3.根据权利要求2所述的方法,其特征在于,所述对所述元数据进行修复包括:对所述源地址中保存的布局信息进行修改;修复所述发生损坏的元数据;根据所述修改后的布局信息、未发生损坏的元数据以及所述修复出的元数据创建目标B+树。4.根据权利要求3所述的方法,其特征在于,还包括:为所述目标B+树的每个节点在所述硬盘中分配元数据块,所述目标B+树的元数据块用于保存所述未发生损坏的元数据、所述修复出的元数据、所述未发生损坏的元数据的索引以及所述修复出的元数据的索引,所述目标B+树的每个节点的元数据块与所述源B+树的每个节点的元数据块不相同。5.根据权利要求4所述的方法,其特征在于,所述验证所述修复后的元数据是否正确包括:接收读数据请求,所述读数据请求包括待读取数据的逻辑地址;判断是否能够根据所述逻辑地址以及所述目标B+树的元数据块中记录的所述修复出的元数据读取待读取数据。6.根据权利要求3-5任一所述的方法,其特征在于,在所述将所述布局信息的副本写入所述源地址之后还包括:删除所述目标B+树;释放所述目标B+树的每个节点的元数据块。7.一种元数据修复装置,其特征在于...

【专利技术属性】
技术研发人员:张瑛熊伟
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1