CN105808378B - 元数据修复方法及装置 - Google Patents

元数据修复方法及装置 Download PDF

Info

Publication number
CN105808378B
CN105808378B CN201610107365.3A CN201610107365A CN105808378B CN 105808378 B CN105808378 B CN 105808378B CN 201610107365 A CN201610107365 A CN 201610107365A CN 105808378 B CN105808378 B CN 105808378B
Authority
CN
China
Prior art keywords
logical block
data
mark
block
metadata
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
Application number
CN201610107365.3A
Other languages
English (en)
Other versions
CN105808378A (zh
Inventor
曾煜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610107365.3A priority Critical patent/CN105808378B/zh
Publication of CN105808378A publication Critical patent/CN105808378A/zh
Priority to PCT/CN2016/111331 priority patent/WO2017143843A1/zh
Priority to EP16891291.3A priority patent/EP3336702B1/en
Priority to US15/928,330 priority patent/US10572335B2/en
Application granted granted Critical
Publication of CN105808378B publication Critical patent/CN105808378B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Library & Information Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种元数据修复方法及装置,涉及数据存储领域,应用于存储阵列中,所述方法包括:当确定第一映射数据无损坏且第二映射数据损坏时,以第三逻辑块的大小为粒度读取每个第二逻辑块;获取粒度数据中存储的各个逻辑区块地址LBA,得到每段粒度数据所对应的LBA范围;利用LBA范围与第三逻辑块的标识之间的对应关系,确定出与每段粒度数据的LBA范围对应的第三逻辑块的标识;当第二映射数据中不存在包含确定出的所述第三逻辑块的标识的元数据时,生成由所述第三逻辑块的标识组成的元数据。解决了现有技术中元数据损坏时,通过人为加强培训无法完全杜绝违规操作且会增加很多沟通的成本的技术问题,达到了提高元数据修复效率的效果。

Description

元数据修复方法及装置
技术领域
本发明涉及数据存储领域,特别涉及一种元数据修复方法及装置。
背景技术
存储阵列中,一个逻辑单元号(Logical Unit Number,简称:LUN)保存的数据可以分为存储数据和元数据,其中存储数据是用户直接存储的数据;元数据是用来管理和索引存储数据的数据。若元数据发生损坏,则无法获取到其对应的存储数据。
在利用LUN保存数据时,经常会遇到LUN元数据被损坏的情况,比如:对存储设备的违规操作、存储软件问题导致元数据被损坏以及其他任何导致元数据被损坏的场景(比如阵列磁盘乱插等)。为了尽量避免元数据损坏,需要加强对存储设备操作的培训和规范,通过编写详细准确的指导文档尽量避免违规操作的发生;或者,通过一些增值业务手段,对LUN上的数据进行保护和备份,在LUN元数据损坏时,可以利用备份数据来恢复。
避免元数据损坏时,通过人为加强培训无法完全杜绝违规操作,且会增加很多沟通的成本。
发明内容
为了解决现有技术的问题,本申请实施例提供了一种元数据修复方法及装置。所述技术方案如下:
第一方面,提供了一种元数据修复方法,应用于存储阵列中,该存储阵列包括第一逻辑块,第一逻辑块包括多个第二逻辑块,每个第二逻辑块包括多个第三逻辑块,第一逻辑块与多个第二逻辑块之间的映射关系为第一映射数据,每个第二逻辑块与多个第三逻辑块之间的映射关系为第二映射数据。该元数据修复方法在确定第一映射数据无损坏且第二映射数据损坏的情况下,以第三逻辑块的大小为粒度读取每个第二逻辑块的数据,获取每段粒度数据中存储的各个逻辑区块地址LBA,得到每段粒度数据所对应的LBA范围;根据LBA范围与第三逻辑块的标识之间的对应关系确定出每段粒度数据对应的第三逻辑块的标识;在第二映射数据中不存在确定出的第三逻辑块的标识的元数据时,生成由该第三逻辑块标识组成的元数据。由于第二逻辑块包括多个第三逻辑块,因此在以第三逻辑块为粒度读取第二逻辑块时,每次读取的一段粒度数据均为一个第三逻辑块所对应的数据,而根据粒度数据中各个扇区中存储的LBA,则可以确定出每段粒度数据中LBA的范围,该LBA范围与该段粒度数据所对应的第三逻辑块的标识对应,因此在第二映射数据中由该第三逻辑块标识组成的元数据损坏时,则可以根据得到的第三逻辑块的标识对第二映射数据中的元数据进行修复;解决了相关技术中元数据损坏时,通过人为加强培训无法完全杜绝违规操作且会增加很多沟通的成本的技术问题,达到了提高元数据修复效率的效果。
结合第一方面,在第一方面的第一种可能的实现中,在实现当第二映射数据中不存在包含确定出的第三逻辑块的标识的元数据时,生成由第三逻辑块的标识组成的元数据的步骤时,通过确定在获取与第三逻辑块的标识时所读取的第二逻辑块的标识以及确定第三逻辑块在该第二逻辑块的块内偏移,将第三逻辑块的标识、第二逻辑块的标识以及第三逻辑块在第二逻辑块的块内偏移组成一个元数据,实现了第二映射数据中被损坏的包含该第三逻辑块的标识的元数据的修复。
结合第一方面或者第一方面的第一种可能的实现,在第二种可能的实现中,在实现根据第二逻辑块所包含的各个第三逻辑块,确定出第三逻辑块在第二逻辑块的块内偏移时,在判定出第三逻辑块为第二逻辑块中第p个第三逻辑块时,将在该第三逻辑块前的p-1个第三逻辑块所占的区间总和加1,得到该第三逻辑块在第二逻辑块的块内偏移,p>0。由于第二逻辑块包括多个第三逻辑块,每个第三逻辑块大小相同,因此在需要确定目标第三逻辑块在第二逻辑块的块内偏移时,首先确定出目标第三逻辑块在第二逻辑块的顺序,根据第二逻辑块内该顺序前各个第三逻辑块所占用的区间,则可以得到该目标第三逻辑块在第二逻辑块中的块内偏移,以便于后续根据该目标第三逻辑块的标识、该目标第三逻辑块所在第二逻辑块的标识以及该块内偏移组成对应的元数据。
结合第一方面、第一方面的第一种可能的实现或者第一方面的第二种可能的实现,在第三种可能的实现中,在每次读取具有第三逻辑块大小的粒度数据时,获取粒度数据中存储的各个逻辑区块地址LBA,得到每段粒度数据所对应的LBA范围时,通过记录读取的粒度数据中每个扇区预定位置处存储的LBA,将每段粒度数据的各个扇区中的LBA组合成一个LBA范围。由于每个扇区大小相同,且LBA存储在扇区中的位置相同,因此可以准确读取出每个扇区中预定位置处的LBA,又由于LBA与第三逻辑块的标识唯一对应,因此能够保证根据具有第三逻辑块大小所对应的LBA范围确定第三逻辑块的标识。
第二方面,提供了一种元数据修复装置。该元数据修复装置包括至少一个单元,该元数据修复装置的各个单元分别用于实现上述第一方面的元数据修复方法中对应的步骤。
第三方面,提供了一种存储阵列。该存储阵列包括:处理器、与处理器相连的存储器、网络接口以及硬盘,该处理器用于实现上述第一方面的元数据修复方法中的各个步骤。
第四方面,提供了一种计算机可读介质,该计算机可读介质存储用于实现第一方面所提供的元数据修复方法的指令。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本发明一示例性实施例提供的存储系统的结构示意图;
图1B是本发明一示例性实施例提供的LUN的结构示意图;
图2是是本发明一示例性实施例提供的存储阵列的结构示意图;
图3A是本发明一示例性实施例提供的LUN的逻辑结构的示意图;
图3B是本发明一示例性实施例提供的LUN中元数据表示映射关系的示意图;
图3C是本发明一示例性实施例提供的LUN中扇区增加LBA的示意图;
图3D是本发明一示例性实施例提供的LUN中扇区增加DIF数据的示意图;
图3E是本发明一示例性实施例提供的存储阵列的逻辑结构示意图;
图3F本发明一示例性实施例提供的与LUN类似的逻辑结构中的扇区增加LBA的示意图;
图4A是本发明一示例性实施例提供的元数据修复方法的流程图;
图4B是本发明一示例性实施例提供的读取第三逻辑块对应的LBA范围的方法的流程图;
图5是本发明一示例性实施例提供的元数据修复装置的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本文提及的“模块”是指存储在存储器中的能够实现某些功能的程序或指令;在本文中提及的“单元”是指按照逻辑划分的功能性结构,该“单元”可以由纯硬件实现,或者,软硬件的结合实现。
请参考图1A,其示出了本发明一示例性实施例提供的存储系统的结构示意图。该存储系统包括:主机110和存储阵列120。
在一个存储系统中,存在主机110和存储阵列120,主机110与存储阵列120相连接,用户可通过主机110对存储阵列上的LUN读写数据。其中,LUN是存储阵列120对主机110提供存储功能的基本单元。
如图1B所示,每个LUN保存的数据分为元数据11和存储数据12。其中,元数据11是用来管理和索引存储数据的数据,存储数据12是直接存储的数据。
请参考图2,其示出了本发明一示例性实施例提供的存储阵列120的结构示意图。该存储阵列120包括:处理器21、网络接口22、存储器23和硬盘24。
处理器21包括一个或者一个以上处理核心,处理器21通过运行软件程序以及模块,从而执行各种功能应用以及数据处理。
网络接口22可以为多个,其中一部分网络接口22用于与主机进行通信。
存储器23与处理器21相连,比如,存储器23可以通过总线与处理器21相连;存储器23可用于存储软件程序以及模块。
存储器23可以存储至少一个功能所需的应用程序模块25,应用程序模块25可以包含读取模块251、获取模块252、确定模块253以及生成模块254等。
这里的读取模块251、获取模块252、确定模块253以及生成模块254可以执行图4A和图4B中的相应步骤,具体参见对图4A和图4B的描述。
存储器23可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(英文:static random access memory,SRAM),电可擦除可编程只读存储器(英文:electrically erasable programmable read-only memory,EEPROM),可擦除可编程只读存储器(英文:erasable programmable read only memory,EPROM),可编程只读存储器(英文:programmable read only memory,PROM),只读存储器(英文:read onlymemory image,ROM),磁存储器,快闪存储器,磁盘或光盘。
硬盘24用于存储数据,处理器21将读取的数据存储至硬盘24中,并将对应的元数据存储至存储器23中。在需要读取硬盘24中的数据时,处理器21可以从存储器23中读取对应的元数据,根据元数据到相应的硬盘24的位置读取相应数据。
本领域技术人员可以理解,图1中所示出的存储阵列120的结构并不构成对存储阵列120的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图3A所示,一个LUN可以包括多个第一逻辑块,每个第一逻辑块包括多个第二逻辑块,每个第二逻辑块包括多个第三逻辑块,每个第三逻辑块存储数据时需要128个连续的扇区。不同第三逻辑块所对应的扇区之间可能是不连续的。
在一个LUN中存储数据后,会对应生成元数据,也即存储数据的索引,由上述LUN的逻辑结构特点可知:LUN的映射数据包括第一映射数据和第二映射数据,第一逻辑块与多个第二逻辑块之间的映射关系为第一映射数据,第二逻辑块与多个第三逻辑块之间的映射关系为第二映射数据。
如图3B所示,LUN中的第一逻辑块1划分为第二逻辑块1和第二逻辑块2,第二逻辑块1又被划分为第三逻辑块1和第三逻辑块2,第二逻辑块2被划分为第三逻辑块3和第三逻辑块4。第一映射数据为第二逻辑块1、第二逻辑块2分别与第一逻辑块1之间的映射关系,比如第一映射数据中的元数据31为第二逻辑块1与第一逻辑块1之间的映射关系,该元数据31包含三个元素,分别为:第一逻辑块1标识、第二逻辑块1标识,以及第二逻辑块1在第一逻辑块1上的块内偏移5。第二映射数据为第三逻辑块1、第三逻辑块2分别与第二逻辑块1之间的映射关系以及第三逻辑块3、第三逻辑块4分别与第二逻辑块2之间的映射关系,比如第二映射数据中的元数据32为第三逻辑块2与第二逻辑块1之间的映射关系,该元数据32包含三个元素,分别为:第二逻辑块1的标识、第三逻辑块2的标识,以及第三逻辑块2在第二逻辑块1上的块内偏移2。
为了尽可能的修复第二映射数据中损坏的的元数据,本实施例中在扇区中增加了逻辑区块地址(英文:Logical Block Address,LBA)。也即,每个扇区除了包含有用于存储数据的512个字节,还包含有用于存储LBA的字节。如图3C所示,该扇区的前512个字节用于存储数据,位于这些字节后面的字节用于存储LBA,每个扇区后的LBA均不同,这里的LBA与该扇区对应的第三逻辑块的标识对应。可选的,扇区中用于存储数据的字节并不局限于512个字节,但各个扇区用于存储数据的字节均应当相等,以便于读取扇区中指定位置处的LBA。
需要说明的一点是,由于每个第三逻辑块存储数据时需要128个连续的扇区,且每个扇区存储的LBA的取值不同,因此将同一个第三逻辑块的扇区中LBA组成的范围与该第三逻辑块的标识唯一对应。比如第三逻辑块1所对应的LBA范围为[0,127],第三逻辑块2所对应的LBA范围为[128,255]等。
可选地,在存储数据的512个字节与用于存储LBA的字节之间,该扇区还可以设置有用于存储校验信息的字节和/或存储用户自定义信息的字节。举例来讲,扇区的前512字节用于存储数据,该扇区内位于该512个字节后的空间存储有前512字节存储的数据的循环冗余校验码(英文:Cyclic Redundancy Check,CRC)校验信息、用户自定义信息以及与第三类逻辑块的标识对应的LBA。也即如图3D所示,该扇区前512个字节后面存储有附加校验数据,附加校验数据为8个字节的数据完整性域(英文:Data integrity field,DIF)数据。该DIF数据总共8个字节,前面两个字节43存放存储数据的CRC校验信息,最后4个字节44记录LBA,可以将LBA记为与第三逻辑块的标识对应的LBA,剩余两个字节可根据具体情况设定,可设置为用户自定义信息,也可以设置为阵列信息。可选的,DIF数据所包括的字节还可以不局限于8个字节,且记录LBA以及CRC校验信息等也并不局限于图3D中的顺序和位置。
在实际应用中,其他的与LUN类似的逻辑结构的存储阵列可以包括第一逻辑块、第二逻辑块…第n逻辑块,n的取值大于3,这类存储阵列中的第i逻辑块包括多个第i+1逻辑块,i≥1且i<n。对应的,这类存储阵列中的映射数据包括n-1组映射数据,其中,第i映射数据中的元数据为第i逻辑块和第i+1逻辑块之间的映射关系,具体逻辑结构如图3E所示。
为了尽可能的修复图3E中存储阵列中的映射数据,在修复第i映射数据且第1映射数据至第i-1映射数据均可以被成功读取时,修复方式均与LUN中对第二映射数据中元数据进行修复时的修复方式相同。为了能够保证对每类映射数据中的元数据进行修改,需要在扇区中记录与每类逻辑块标识对应的LBA。如图3F所示,该扇区的前512个字节用于存储数据,位于这些字节后面的字节用于存储分别与第三逻辑块至第n逻辑块对应的LBA。比如,预定位置1处的LBA1与第三逻辑块对应,预定位置2处的LBA2与第四逻辑块对应,依此类推。
下面以LUN结构为例,结合图3A至图3F对图4A中所示出的元数据修复方法进行举例说明。
请参考图4A,其示出了本发明一示例性实施例提供的元数据修复方法的流程图。由如图1所示的存储阵列120的处理器21执行下述步骤,该方法包括以下几个步骤:
步骤401,当确定第一映射数据无损坏且第二映射数据损坏时,以第三逻辑块的大小为粒度读取每个第二逻辑块。
仍旧参见图3B,该LUN的元数据组成第一映射数据和第二映射数据,其中第一映射数据为第一逻辑块与第二逻辑块之间的映射关系,第二映射数据为第二逻辑块与第三逻辑块之间的映射关系。当第一映射数据可以被成功读取,但第二映射数据中的元数据无法被成功读取时,需要对第二映射数据中的元数据进行修复,以第三逻辑块的大小为粒度读取每个第二逻辑块的数据。
也即,从被读取的一个第二逻辑块中,先读取固定大小的一段数据,在读取完该段数据以后,再读取固定大小的一段数据,依次类推。这里的固定大小即为第三逻辑块的大小。
步骤402,在每次读取具有第三逻辑块大小的粒度数据时,获取粒度数据中存储的各个逻辑区块地址LBA,得到每段粒度数据所对应的LBA范围。
可选地,本步骤可以通过如图4B所示的几个子步骤实现。
步骤402a,在每次读取具有第三逻辑块大小的粒度数据时,记录读取的粒度数据中每个扇区预定位置处存储的LBA,该LBA与第三逻辑块的标识唯一对应。
步骤402b,将每段粒度数据的各个扇区中的LBA组合成一个LBA范围。
由于每段粒度数据存储在多个扇区,存储阵列可以从每个扇区的预定位置处,读取出与第三逻辑块的标识唯一对应的LBA,将这些扇区所存储的LBA组合成了一个LBA范围,也即将每段粒度数据的各个扇区的LBA均组合成一个LBA范围。
步骤403,利用LBA范围与第三逻辑块的标识之间的对应关系,确定出与每段粒度数据的LBA范围对应的第三逻辑块的标识。
由于是按照第三逻辑块大小的粒度读取数据,因此每次读取的粒度数据对应一个第三逻辑块,在得到每段粒度数据的LBA范围时,则该LBA范围则为与该段粒度数据对应的第三逻辑块的LBA范围,也因此可以根据每段粒度数据的LBA范围确定出对应的第三逻辑块的标识。
在实际实现时,第三逻辑块的标识对应一个LBA范围,在每存储一个第三逻辑块时,将对应的LBA依次添加至对应的扇区中,在第三逻辑块的数据存储完之后,记录该第三逻辑块所存储于的扇区中的LBA组成的LBA范围,并将该LBA范围与该第三逻辑块进行对应。因此,存储阵列可以利用LBA范围与第三逻辑块的标识的对应关系,确定出与每段数据的LBA范围对应的第三逻辑块的标识。
对于每一个确定出的第三逻辑块的标识,检测第二映射数据中是否存在包含确定出的第三逻辑块的标识的元数据。若第二映射数据中不存在包含确定出的第三逻辑块的标识的元数据时,则需要生成该第三逻辑块的标识对应的元数据,执行步骤404。
若第二映射数据中存在包含确定出的第三逻辑块的标识的元数据时,则检测第二映射数据中是否存在包含下一个第三逻辑块的标识的元数据,也即对下一段数据进行处理,执行步骤402。
步骤404,当第二映射数据中不存在包含确定出的第三逻辑块的标识的元数据时,获取与第三逻辑块的标识对应的LBA范围,确定出得到该LBA范围时所读取的第二逻辑块的标识。
由于LBA范围是通过读取某一个第二逻辑块的数据得到的,因此可以确定出得到LBA范围时所读取的第二逻辑块的标识。
步骤405,根据第二逻辑块所包含的各个第三逻辑块,确定出第三逻辑块在第二逻辑块的块内偏移,将第三逻辑块的标识、第二逻辑块的标识以及块内偏移组成一个元数据。
在第三逻辑块为第二逻辑块中第p个第三逻辑块时,将在第三逻辑块前的p-1个第三逻辑块所占的区间总和加1,得到第三逻辑块在第二逻辑块的块内偏移,p>0。
步骤406,将需要插入的第三逻辑块的标识、第二逻辑块的标识以及块内偏移作为一个元数据插入到第二映射数据中。
在插入的过程中,由于第二映射数据中各个元数据是按照第三逻辑块的标识大小排序的,因此可以通过第三逻辑块的标识的大小关系,将上述元数据插入第二映射数据中。
需要说明的一点是,当第一映射数据无法被成功读取时,无法对所有映射数据的元数据进行修复。也即,当检测到第一映射数据无法被成功读取时,直接退出对元数据的修复。
综上所述,本发明实施例提供的元数据修复方法,当确定第一映射数据无损坏且第二映射数据损坏时,通过以第三逻辑块的大小为粒度读取每个第二逻辑块;在每次读取具有第三逻辑块大小的粒度数据时,获取粒度数据中存储的各个逻辑区块地址LBA,得到每段粒度数据所对应的LBA范围;利用LBA范围与第三逻辑块的标识之间的对应关系,确定出与每段粒度数据的LBA范围对应的第三逻辑块的标识;当第二映射数据中不存在包含确定出的第三逻辑块的标识的元数据时,生成由第三逻辑块的标识组成的元数据;解决了现有技术中元数据损坏时,通过人为加强培训无法完全杜绝违规操作且会增加很多沟通的成本的技术问题,达到了提高元数据修复效率的效果。
请参考图5,其示出了本发明一个实施例提供的元数据修复装置的框图。该元数据修复装置可以通过软件、硬件或者两者的结合实现成为存储阵列的全部或者一部分。该元数据修复装置可以包括:读取单元510、获取单元520、确定单元530和生成单元540。
读取单元510,用于实现上述步骤401。
获取单元520,用于实现上述步骤402。
确定单元530,用于实现上述步骤403。
生成单元540,用于实现上述步骤404、405以及406中至少一个步骤的功能
相关细节可结合参考上述方法实施例。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种元数据修复方法,其特征在于,应用于存储阵列中,所述存储阵列包括第一逻辑块,所述第一逻辑块包括多个第二逻辑块,每个第二逻辑块包括多个第三逻辑块,所述第一逻辑块与所述多个第二逻辑块之间的映射关系为第一映射数据,所述每个第二逻辑块与所述多个第三逻辑块之间的映射关系为第二映射数据,所述方法包括:
当确定第一映射数据无损坏且第二映射数据损坏时,以所述第三逻辑块的大小为粒度读取所述每个第二逻辑块;
在每次读取具有第三逻辑块大小的粒度数据时,获取粒度数据中存储的各个逻辑区块地址LBA,得到每段粒度数据所对应的LBA范围;
利用LBA范围与第三逻辑块的标识之间的对应关系,确定出与每段粒度数据的LBA范围对应的第三逻辑块的标识;
当第二映射数据中不存在包含确定出的所述第三逻辑块的标识的元数据时,生成由所述第三逻辑块的标识组成的元数据。
2.根据权利要求1所述的方法,其特征在于,所述当第二映射数据中不存在包含确定出的所述第三逻辑块的标识的元数据时,生成由所述第三逻辑块的标识组成的元数据,包括:
当第二映射数据中不存在包含确定出的所述第三逻辑块的标识的元数据时,获取与所述第三逻辑块的标识对应的LBA范围,确定出得到所述LBA范围时所读取的第二逻辑块的标识;
根据所述第二逻辑块所包含的各个第三逻辑块,确定出所述第三逻辑块在所述第二逻辑块的块内偏移;
将所述第三逻辑块的标识、所述第二逻辑块的标识以及所述块内偏移组成一个元数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第二逻辑块所包含的各个第三逻辑块,确定出所述第三逻辑块在所述第二逻辑块的块内偏移,包括:
在所述第三逻辑块为所述第二逻辑块中第p个第三逻辑块时,将在所述第三逻辑块前的p-1个第三逻辑块所占的区间总和加1,得到所述第三逻辑块在所述第二逻辑块的块内偏移,p>0。
4.根据权利要求1至3中任一所述的方法,其特征在于,所述在每次读取具有第三逻辑块大小的粒度数据时,获取粒度数据中存储的各个逻辑区块地址LBA,得到每段粒度数据所对应的LBA范围,包括:
在每次读取具有第三逻辑块大小的粒度数据时,记录读取的粒度数据中每个扇区预定位置处存储的LBA,所述LBA与所述第三逻辑块的标识唯一对应;
将每段粒度数据的各个扇区中的LBA组合成一个LBA范围。
5.一种元数据修复装置,其特征在于,应用于存储阵列中,所述存储阵列包括第一逻辑块,所述第一逻辑块包括多个第二逻辑块,每个第二逻辑块包括多个第三逻辑块,所述第一逻辑块与所述多个第二逻辑块之间的映射关系为第一映射数据,所述每个第二逻辑块与所述多个第三逻辑块之间的映射关系为第二映射数据,所述装置包括:
读取模块,用于当确定第一映射数据无损坏且第二映射数据损坏时,以所述第三逻辑块的大小为粒度读取所述每个第二逻辑块;
获取模块,用于在每次读取具有第三逻辑块大小的粒度数据时,获取粒度数据中存储的各个逻辑区块地址LBA,得到每段粒度数据所对应的LBA范围;
确定模块,用于利用LBA范围与第三逻辑块的标识之间的对应关系,确定出与每段粒度数据的LBA范围对应的第三逻辑块的标识;
生成模块,用于当第二映射数据中不存在包含确定出的所述第三逻辑块的标识的元数据时,生成由所述第三逻辑块的标识组成的元数据。
6.根据权利要求5所述的装置,其特征在于,所述生成模块,包括:
获取单元,用于当第二映射数据中不存在包含确定出的所述第三逻辑块的标识的元数据时,获取与所述第三逻辑块的标识对应的LBA范围,确定出得到所述LBA范围时所读取的第二逻辑块的标识;
确定单元,用于根据所述第二逻辑块所包含的各个第三逻辑块,确定出所述第三逻辑块在所述第二逻辑块的块内偏移;
组成单元,用于将所述第三逻辑块的标识、所述第二逻辑块的标识以及所述块内偏移组成一个元数据。
7.根据权利要求6所述的装置,其特征在于,所述确定单元,还用于在所述第三逻辑块为所述第二逻辑块中第p个第三逻辑块时,将在所述第三逻辑块前的p-1个第三逻辑块所占的区间总和加1,得到所述第三逻辑块在所述第二逻辑块的块内偏移,p>0。
8.根据权利要求5至7中任一所述的装置,其特征在于,所述获取模块,还用于:
在每次读取具有第三逻辑块大小的粒度数据时,记录读取的粒度数据中每个扇区预定位置处存储的LBA,所述LBA与所述第三逻辑块的标识唯一对应;
将每段粒度数据的各个扇区中的LBA组合成一个LBA范围。
CN201610107365.3A 2016-02-26 2016-02-26 元数据修复方法及装置 Active CN105808378B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201610107365.3A CN105808378B (zh) 2016-02-26 2016-02-26 元数据修复方法及装置
PCT/CN2016/111331 WO2017143843A1 (zh) 2016-02-26 2016-12-21 元数据修复方法及装置
EP16891291.3A EP3336702B1 (en) 2016-02-26 2016-12-21 Metadata recovery method and device
US15/928,330 US10572335B2 (en) 2016-02-26 2018-03-22 Metadata recovery method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610107365.3A CN105808378B (zh) 2016-02-26 2016-02-26 元数据修复方法及装置

Publications (2)

Publication Number Publication Date
CN105808378A CN105808378A (zh) 2016-07-27
CN105808378B true CN105808378B (zh) 2018-10-30

Family

ID=56465901

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610107365.3A Active CN105808378B (zh) 2016-02-26 2016-02-26 元数据修复方法及装置

Country Status (4)

Country Link
US (1) US10572335B2 (zh)
EP (1) EP3336702B1 (zh)
CN (1) CN105808378B (zh)
WO (1) WO2017143843A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808378B (zh) 2016-02-26 2018-10-30 华为技术有限公司 元数据修复方法及装置
CN106708665A (zh) * 2016-12-20 2017-05-24 华为技术有限公司 一种元数据修复方法和装置
CN106775481B (zh) * 2016-12-23 2019-11-05 华为技术有限公司 数据读取方法及设备
US10871907B2 (en) 2018-12-31 2020-12-22 Micron Technology, Inc. Sequential data optimized sub-regions in storage devices
CN112162876B (zh) * 2020-09-18 2024-08-13 北京浪潮数据技术有限公司 一种元数据修复方法、装置、设备及介质
CN112181299B (zh) * 2020-09-25 2022-02-25 杭州宏杉科技股份有限公司 数据修复方法及分布式存储集群

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103544995A (zh) * 2013-08-27 2014-01-29 华为技术有限公司 一种坏道修复方法及装置
CN103699457A (zh) * 2013-09-26 2014-04-02 深圳市泽云科技有限公司 基于条带化的磁盘阵列修复方法及装置
CN104461391A (zh) * 2014-12-05 2015-03-25 上海宝存信息科技有限公司 一种存储设备元数据管理处理方法及系统
CN105224478A (zh) * 2015-09-25 2016-01-06 联想(北京)有限公司 一种映射表的形成、更新和恢复方法及电子设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0409808A3 (en) * 1989-07-19 1991-11-27 International Business Machines Corporation Method for ensuring map integrity in a system-managed store of a computer
US7295233B2 (en) * 2003-09-30 2007-11-13 Fotonation Vision Limited Detection and removal of blemishes in digital images utilizing original images of defocused scenes
US8572309B2 (en) * 2009-03-12 2013-10-29 Marvell World Trade Ltd. Apparatus and method to protect metadata against unexpected power down
US8554741B1 (en) * 2010-06-16 2013-10-08 Western Digital Technologies, Inc. Timeline application for log structured storage devices
US20120159040A1 (en) * 2010-12-15 2012-06-21 Dhaval Parikh Auxiliary Interface for Non-Volatile Memory System
CN102662795A (zh) * 2012-03-20 2012-09-12 浪潮电子信息产业股份有限公司 一种分布式存储系统中元数据容错恢复方法
TWI480733B (zh) * 2012-03-29 2015-04-11 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN103019626B (zh) * 2012-12-17 2016-04-13 华为技术有限公司 存储系统、控制集群元数据的方法及装置
CN103902406A (zh) * 2012-12-31 2014-07-02 杨威锋 高可靠性固态存储设备的映射表信息的保存和恢复技术
CN103136370B (zh) * 2013-03-21 2016-05-25 曙光信息产业(北京)有限公司 元数据的恢复方法和装置
CN104516792A (zh) * 2013-10-08 2015-04-15 杰发科技(合肥)有限公司 一种数据备份方法及装置
US9959059B2 (en) * 2014-10-20 2018-05-01 Sandisk Technologies Llc Storage error management
CN105243025B (zh) * 2015-09-25 2019-04-19 北京联想核芯科技有限公司 一种映射表的形成及加载方法、电子设备
US10552335B2 (en) 2015-09-25 2020-02-04 Beijing Lenovo Software Ltd. Method and electronic device for a mapping table in a solid-state memory
CN105808378B (zh) * 2016-02-26 2018-10-30 华为技术有限公司 元数据修复方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103544995A (zh) * 2013-08-27 2014-01-29 华为技术有限公司 一种坏道修复方法及装置
CN103699457A (zh) * 2013-09-26 2014-04-02 深圳市泽云科技有限公司 基于条带化的磁盘阵列修复方法及装置
CN104461391A (zh) * 2014-12-05 2015-03-25 上海宝存信息科技有限公司 一种存储设备元数据管理处理方法及系统
CN105224478A (zh) * 2015-09-25 2016-01-06 联想(北京)有限公司 一种映射表的形成、更新和恢复方法及电子设备

Also Published As

Publication number Publication date
CN105808378A (zh) 2016-07-27
EP3336702A4 (en) 2018-12-12
EP3336702A1 (en) 2018-06-20
US20180210784A1 (en) 2018-07-26
US10572335B2 (en) 2020-02-25
EP3336702B1 (en) 2019-10-02
WO2017143843A1 (zh) 2017-08-31

Similar Documents

Publication Publication Date Title
CN105808378B (zh) 元数据修复方法及装置
CN101427323B (zh) 读取非易失性计算机存储器的系统和方法
CN103119569B (zh) 基于存储条的非易失性多级存储器操作
JP5675954B2 (ja) メタデータタグを介した不規則なパリティ分布の検出
US8555143B2 (en) Flash memory controller and the method thereof
TWI645404B (zh) 資料儲存裝置以及非揮發式記憶體操作方法
US20140068208A1 (en) Separately stored redundancy
CN104461391A (zh) 一种存储设备元数据管理处理方法及系统
CN110187999A (zh) 地址映射数据备份方法及装置
TWI720246B (zh) 資料儲存裝置以及其操作方法
CN104484427B (zh) 一种录像文件存储装置及方法
TW200921360A (en) Data preserving method and data accessing method for non-volatile memory
US20090037646A1 (en) Method of using a flash memory for a circular buffer
US9754682B2 (en) Implementing enhanced performance with read before write to phase change memory
CN104658609B (zh) 用于存储器系统的纠错码分布的方法和系统
CN108958961A (zh) 数据储存装置以及数据错误管理方法
CN110504002B (zh) 一种硬盘数据一致性测试方法与装置
CN108984421A (zh) 一种信息提示方法及装置
CN105095352B (zh) 应用于分布式系统的数据处理方法及装置
CN106775481A (zh) 数据读取方法及设备
US9146686B2 (en) External storage device and data storing method for the external storage device
KR101645829B1 (ko) 장치들 및 유효 마스크들을 저장하고 장치들을 동작시키는 방법들
JP5824087B2 (ja) エラー訂正コードシード処理のための方法およびシステムならびに記憶媒体
ES2385468T3 (es) Procedimiento y sistema para la optimización de la gestión de ficheros de registro
TWI401566B (zh) 磁碟陣列設定檔更新方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant