CN110109867A - 改进在线模式检测的方法、装置和计算机程序产品 - Google Patents

改进在线模式检测的方法、装置和计算机程序产品 Download PDF

Info

Publication number
CN110109867A
CN110109867A CN201810048674.7A CN201810048674A CN110109867A CN 110109867 A CN110109867 A CN 110109867A CN 201810048674 A CN201810048674 A CN 201810048674A CN 110109867 A CN110109867 A CN 110109867A
Authority
CN
China
Prior art keywords
entry
identifier
group
response
processor
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.)
Granted
Application number
CN201810048674.7A
Other languages
English (en)
Other versions
CN110109867B (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.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
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 EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Priority to CN201810048674.7A priority Critical patent/CN110109867B/zh
Priority to US16/249,296 priority patent/US11150993B2/en
Publication of CN110109867A publication Critical patent/CN110109867A/zh
Application granted granted Critical
Publication of CN110109867B publication Critical patent/CN110109867B/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/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing

Landscapes

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

Abstract

本公开的实施例提供了一种计算机实现的方法、一种电子设备、以及一种计算机程序产品。该方法包括:将索引节点的间接块所包含的多个条目划分成多个条目组,多个条目中的每个非空条目具有以下之一:指向相关联数据块的指针,特定于相关联数据块的字节模式的标识符。该方法还包括:针对多个条目组中的条目组,确定该条目组中具有标识符的条目是否均具有同一预定标识符。该方法进一步包括:响应于该条目组中具有标识符的条目均具有同一预定标识符,将该条目组标记为在间接块损坏的情况下是可恢复的。本公开的实施例提高了存储系统的可靠性和性能。

Description

改进在线模式检测的方法、装置和计算机程序产品
技术领域
本公开的实施例一般地涉及计算机系统和存储系统,并且更特别地,涉及一种改进在线模式检测的方法、装置和计算机程序产品。
背景技术
在块存储系统中,逻辑块编号(LUN)具有后端文件系统(CBFS)来管理其数据块。该文件系统通常具有树形的布局,其根是索引节点(inode),索引节点包含指向直接块(即数据块)的指针和指向间接块的指针。间接块包含指向数据块的指针或指向下一级间接块的指针。此处,所有的指针包含目标数据块的相关联的文件系统块编号(FSBN)。
在间接块中,叶间接块是最低层级的间接块,其包含指向数据块的指针并且其条目可以被用来实施在线模式检测(ILPD)。在线模式检测是一种轻量型数据减少方法,其可以在叶间接块的条目中使用模式标识符(pattern ID)来表示模式数据块。在本文中,所谓的模式数据块是指由特定字节模式组成的数据块。
然而,在使用在线模式检测的情况下,将不存在实际的模式数据块和模式数据块的块元数据,所有的模式数据块将不能寻址到叶间接块。在叶间接块损坏或其他原因导致模式标识符丢失时,这些模式数据块将无法恢复,这降低了存储系统的可靠性和性能。
发明内容
本公开的实施例涉及一种计算机实现的方法、一种电子设备、以及一种计算机程序产品。
在本公开的第一方面,提供了一种计算机实现的方法。该方法包括:将索引节点的间接块所包含的多个条目划分成多个条目组,多个条目中的每个非空条目具有以下之一:指向相关联数据块的指针,特定于相关联数据块的字节模式的标识符。该方法还包括:针对多个条目组中的条目组,确定该条目组中具有标识符的条目是否均具有同一预定标识符。该方法进一步包括:响应于该条目组中具有标识符的条目均具有同一预定标识符,将该条目组标记为在间接块损坏的情况下是可恢复的。
在一些实施例中,将多个条目划分成多个条目组可以包括:将多个条目等分为包括连续条目的多个条目组。
在一些实施例中,确定该条目组中具有标识符的条目是否均具有同一预定标识符可以包括:针对该条目组,确定具有与预定标识符不同的标识符的条目的计数;以及响应于计数为零,确定条目组中具有标识符的条目均具有同一预定标识符。
在一些实施例中,该方法还可以包括:响应于条目组中的条目被更新来更新计数。
在一些实施例中,更新计数可以包括以下中的至少一项:响应于条目在更新前具有预定标识符且在更新后具有与预定标识符不同的标识符,将计数递增;以及响应于条目在更新前具有与预定标识符不同的标识符且在更新后具有预定标识符,将计数递减。
在一些实施例中,更新计数可以包括以下中的至少一项:响应于计数未初始化且条目在更新后具有与预定标识符不同的标识符,确定计数非零;以及响应于计数未初始化且条目在更新后具有预定标识符,扫描条目组中的条目以确定计数。
在一些实施例中,将条目组标记为是可恢复的可以包括:将对应于条目组的比特位设置为预定状态。
在一些实施例中,比特位可以存储在间接块的块元数据中。
在一些实施例中,该方法可以进一步包括:响应于间接块损坏且条目组被标记为可恢复,基于预定标识符对应的字节模式来恢复条目组对应的数据块。
在一些实施例中,预定标识符可以对应于由重复的全零字节组成的数据块。
在本公开的第二方面,提供了一种电子设备。该设备包括至少一个处理器、以及包括计算机程序指令的至少一个存储器。至少一个存储器和计算机程序指令被配置为,与至少一个处理器一起,使得设备:将索引节点的间接块所包含的多个条目划分成多个条目组,多个条目中的每个非空条目具有以下之一:指向相关联数据块的指针,特定于相关联数据块的字节模式的标识符。至少一个存储器和计算机程序指令还被配置为,与至少一个处理器一起,使得设备:针对多个条目组中的条目组,确定该条目组中具有标识符的条目是否均具有同一预定标识符。至少一个存储器和计算机程序指令进一步被配置为,与至少一个处理器一起,使得设备:响应于该条目组中具有标识符的条目均具有同一预定标识符,将该条目组标记为在间接块损坏的情况下是可恢复的。
在一些实施例中,至少一个存储器和计算机程序指令可以进一步被配置为,与至少一个处理器一起,使得设备:将多个条目等分为包括连续条目的多个条目组。
在一些实施例中,至少一个存储器和计算机程序指令可以进一步被配置为,与至少一个处理器一起,使得设备:针对该条目组,确定具有与预定标识符不同的标识符的条目的计数;以及响应于计数为零,确定条目组中具有标识符的条目均具有同一预定标识符。
在一些实施例中,至少一个存储器和计算机程序指令可以进一步被配置为,与至少一个处理器一起,使得设备:响应于条目组中的条目被更新来更新计数。
在一些实施例中,至少一个存储器和计算机程序指令可以进一步被配置为,与至少一个处理器一起,使得设备:响应于条目在更新前具有预定标识符且在更新后具有与预定标识符不同的标识符,将计数递增;以及响应于条目在更新前具有与预定标识符不同的标识符且在更新后具有预定标识符,将计数递减。
在一些实施例中,至少一个存储器和计算机程序指令可以进一步被配置为,与至少一个处理器一起,使得设备:响应于计数未初始化且条目在更新后具有与预定标识符不同的标识符,确定计数非零;以及响应于计数未初始化且条目在更新后具有预定标识符,扫描条目组中的所有条目以确定计数。
在一些实施例中,至少一个存储器和计算机程序指令可以进一步被配置为,与至少一个处理器一起,使得设备:将对应于条目组的比特位设置为预定状态。
在一些实施例中,比特位可以存储在间接块的块元数据中。
在一些实施例中,至少一个存储器和计算机程序指令可以进一步被配置为,与至少一个处理器一起,使得设备:响应于间接块损坏且条目组被标记为可恢复,基于预定标识符对应的字节模式来恢复条目组对应的数据块。
在一些实施例中,预定标识符可以对应于由重复的全零字节组成的数据块。
在本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使机器执行根据第一方面的方法的步骤。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施例,其中:
图1示出了包括索引节点、间接块、数据块的存储系统的示意图。
图2示出了根据本公开的实施例的用于存储系统的方法的示意性流程图。
图3示出了根据本公开的实施例的间接块和相关联的比特位图的示意图。
图4示出了根据本公开的实施例的计数器组的示意图。
图5示出了根据本公开的实施例的用于更新计数器的方法的示意性流程图。
图6示出了根据本公开的实施例的用于修改间接块条目的方法的示意性流程图。
图7示出了一种可以被用来实施本公开的实施例的设备的示意性框图。
贯穿所有附图,相同或者相似的参考标号被用来表示相同或者相似的组件。
具体实施方式
下面将参考附图中所示出的若干示例性实施例来描述本公开的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域的技术人员能够更好地理解并实现本公开,而并非以任何方式限制本公开的范围。
图1示出了包括索引节点110、间接块120、130和140、数据块150、160和170的存储系统100的示意图。如图1所示,在存储系统100的文件系统中,索引节点(inode)110可以包括指针111和指针113。指针111指向间接块120,而指针113指向间接块130。如所示出的,间接块120是叶间接块,即最低层级的间接块,其包含指向数据块150的指针121。一般情况下,间接块120、130和140是存储系统100的文件系统的元数据,而数据块150、160和170存储用户的数据。
应当理解,尽管图1中未示出,但是除了指向间接块的指针之外,索引节点110也可以包括直接指向直接块(即数据块)的指针。进一步地,间接块130包括指针131,指针131指向下一级的间接块140。间接块140也是叶间接块,其包括分别指向数据块160和数据块170的指针141和指针143。
如图1中描绘的,间接块120、130、140和数据块150、160、170分别具有相关联的块元数据(BMD)125、135、145、155、165、175。这些块元数据存储有与间接块或数据块相关联的索引节点信息、文件偏移信息、循环冗余校验(CRC)信息、分配状态信息,等等。子直接块和子间接块可以使用块元数据中的索引节点信息和文件偏移信息等来寻址到相关联的父间接块,从而可以在父间接块的条目(指针)损坏的情况下重建子间接块与父间接块之间的逻辑关联性。
如上文提到的,间接块(特别是叶间接块)的条目可以被用来实施在线模式检测(ILPD)。在线模式检测是一种类似于去重/压缩的有效的轻量型数据减小方法,其可以在间接块的条目中使用模式标识符来表示模式数据块。所谓的模式数据块是指由特定字节模式组成的数据块,例如由重复的0x0、0x1、……、0xFF字节组成的数据块等。
也就是说,间接块的所有指向模式数据块的条目包含的是模式标识符,而不是子块(数据块)的文件块编号。通过使用在线模式检测,可以减少实际保存在存储空间中的数据块,而仅需要在存储块(间接块)的元数据中添加标识符来表示由重复字节模式组成的数据块。
然而,在使用在线模式检测的情况下,将不存在实际的模式数据块以及模式数据块的块元数据,因此所有的模式数据块将不能通过已有的恢复技术寻址到间接块。在间接块损坏或模式标识符丢失的情况下,这些模式数据块将无法恢复,这降低了存储系统的可靠性和性能。
鉴于已有的存储系统的上述和其他问题,本公开的实施例提供了一种计算机实现的方法、一种电子设备和一种计算机程序产品。其基本思想是使用有限位数的比特位图来指示间接块的条目是否包含同一预定标识符。该有限位数可以远小于间接块的条目数(例如,该数目通常可以为1024)。在间接块的多个条目均包含同一预定标识符的情况下,这些条目对应的数据块可以在间接块损坏时被恢复,从而改进了存储系统在使用在线模式检测时的可靠性。
此外,本公开的实施例还提供了与每个条目组相对应的计数器组,用于跟踪条目组中具有非预定标识符的条目数,从而可以在条目被更新时相应地更新计数器的计数,因此避免了每次条目被更新都扫描所有的条目来更新具有非预定标识符的条目数。下文结合图2至图6来详细地描述根据本公开的实施例。
图2示出了根据本公开的实施例的用于存储系统的方法200的示意性流程图。在一些实施例中,方法200可以由存储系统100来实现,例如可以由存储系统100的控制器或控制单元来实现。在其他实施例中,方法200也可以由独立于存储系统100的计算设备来实现。为了便于讨论,将结合图1来讨论方法200。
具体地,在下文中将以间接块140作为存储系统100的索引节点110的间接块的示例进行说明。为了方便讨论,将进一步参考描绘了间接块140的更多细节的图3来进行详细描述。图3示出了根据本公开的实施例的间接块140和相关联的比特位图320的示意图。
如图3所示,间接块140可以包括1024个条目,即条目0至条目1023,图中以312标示条目0、以314标示条目1、以316标示条目63,以318标示条目1023。如上文提到的,条目0至条目1023中的一些条目可以是指向相关联数据块的指针。此外,在使用在线模式检测的情况下,条目0至条目1023中的一些条目可以是特定于相关联数据块的字节模式的标识符。例如,特定于全零数据块的全零字节模式的标识符0。在未被使用的情况下,条目0至条目1023中的一些条目也可以是空条目。
应当理解,尽管图3中描绘了间接块140具有特定数目的(即1024个)条目,但是该具体数目仅为示例性的,无意以任何方式限定本公开的实施例的范围。在其他实施例中,间接块140也可以包括其他不同数目的条目。
如所示出的,间接块140还可以具有与其相关联的块元数据145,其存储了与间接块140相关联的索引节点110信息、文件偏移信息、循环冗余校验(CRC)信息、分配状态信息,等等。图3中还描绘了根据本公开的实施例的比特位图320,其包括多个比特321、323、325、327等,每个比特与间接块140的多个条目相关联。在一些实施例中,比特位图320可以存储在间接块140的块元数据145中。关于比特位图320与间接块130的条目0至条目1023的对应关系和取值将在后文中进一步详细描述。
返回参考图2,在205处,存储系统100将索引节点110的间接块140所包含的多个条目(例如,条目0至条目1023)划分成多个条目组。例如,针对图3示出的具有1024个条目的间接块140,存储系统100可以将条目0至条目1023等分为包括连续条目的16个条目组,每个条目组包括连续的64个条目。在下文中,以条目0至条目63的条目组为例进行进一步的说明。应当理解,该条目组的划分方式仅为示例,无意以任何方式限制本公开的实施例。在其他实施例中,条目0至条目1023可以存在划分条目组的其他方式。
在210处,存储系统100针对多个条目组中的条目组(例如,条目0至条目63),确定该条目组中具有标识符的条目是否均具有同一预定标识符。如上文提到的,在实际的存储系统中,相当比例的数据块为全零的数据块。因此,在一些实施例中,该预定标识符可以对应于由重复的全零字节组成的全零数据块。例如,该预定标识符可以是表示全零数据块的标识符0。在这种情况下,存储系统100可以确定条目组(例如,条目0至条目63)中具有标识符的条目是否均具有标识符0。
在下文中,以标识符0作为预定标识符的示例来描述本公开的实施例。但是,本领域的技术人员应当理解,在其他实施例中,预定标识符也可以是与具有其他字节模式的数据块相对应的其他标识符,例如,表示全1数据块的标识符1,等等。在实际的存储系统中,标识符的数目甚至可以高达6万个。
在一些实施例中,为了确定条目组中具有标识符的条目是否均具有同一预定标识符(例如,标识符0),可以设置与每个条目组相关联的多个计数器,该多个计数器组成计数器组。通过使用该计数器组(例如,运行时存储器计数器数组缓存)来跟踪间接块中的具有非预定标识符的条目数,因此不需要每当个体条目被更新都扫描所有的条目来重新确定具有非预定标识符的条目数,从而避免了引入附加计算开销。下文将结合图4来具体地描述这种方式。
图4示出了根据本公开的实施例的计数器组400的示意图。如所示出的,计数器组400包括以402标示的计数器0、以404标示的计数器1、……、以406标示的计数器15,等等。其中,计数器0用于对间接块140的条目0至条目63中不具有预定标识符的条目进行计数。例如,在预定标识符为标识符0的情况下,计数器0用于对条目0至条目63中的具有非零标识符的条目进行计数。类似地,计数器1可以与条目64至条目127相关联,计数器15可以与条目960至条目1023相对应,等等。在下文中,以计数器0为例来详细描述计数器的相关操作,其他计数器(例如,计数器1至计数器15)的操作是类似的,本文对此不再赘述。
应当理解,尽管图4中描绘了计数器组400包括特定数目的(即16个)计数器以及各计数器与间接块140的条目的特定对应关系,但是具体的数目和对应关系仅为示例性的,无意以任何方式限定本公开的实施例的范围。在其他实施例中,随着间接块140具有不同的条目数或者具有不同的条目组划分方式,计数器组400也可以包括其他不同数目的计数器和不同的对应关系。
在使用计数器0的情况下,针对条目0至条目63的条目组,可以确定计数器0的计数,即具有非预定标识符(例如,非零标识符)的条目数。由于计数器0是对条目0至条目63中不具有预定标识符的条目进行计数。因此,如果计数器0的计数为零,则存储系统100可以确定该条目组中具有标识符的条目均具有同一预定标识符,例如标识符0。
为了保持计数器0的计数准确地表示条目组中具有非预定标识符的条目数,如果条目0至条目63中存在条目被更新,则需要相应地更新计数器0的计数。为了方便讨论,在本文中将被更新的条目称为条目X。
在一些实施例中,对计数器0的更新可以基于以下的原则。首先,如果条目X在更新前和更新后均具有预定标识符,则保持计数器0的计数不变。如果条目X在更新前和更新后均不具有预定标识符,则也保持计数器0的计数不变。
此外,如果条目X在更新前具有预定标识符且在更新后具有与预定标识符不同的标识符,则将计数器0的计数递增,例如将计数值增加1。如果条目X在更新前具有与预定标识符不同的标识符且在更新后具有预定标识符,则将计数器0的计数递减,例如将计数值减小1。
此外,如果计数器0的计数未初始化且条目X在更新后具有与预定标识符不同的标识符,则确定计数器0的计数非零。如果计数器0的计数未初始化且条目在更新后具有预定标识符,则存储系统100扫描条目组中的所有条目(即,条目0至条目63)以确定计数器0的计数。
为了说明使用计数器组400的优点,假设间接块140的1024个具有标识符1的条目将被更新为空条目,在不使用计数器组400的情况下,所有的条目将被检查1024×64次以确保计数器组400的计数准确。在使用了计数器组400的情况下,则将仅需要1024(用于初始化计数器组400)+1024(用于正常检查每个条目)=2048次。因此,使用计数器组400极大地减少了反复扫描未被更新的条目所投入的计算开销。
在一些实施例中,基于计数器的上述更新原则,还提供了一种更新计数器的流程。下文结合图5以计数器0为例并且以标识符0作为预定标识符来具体地描述该流程。
图5示出了根据本公开的实施例的用于更新计数器的方法500的示意性流程图。在一些实施例中,方法500可以由存储系统100来实现,例如可以由存储系统100的控制器或控制单元来实现。在其他实施例中,方法500也可以由独立于存储系统100的计算设备来实现。为了便于讨论,将结合图1、图3和图4来讨论方法500,并且以存储系统100实现方法500为例进行说明。
在502处,存储系统100可以开始更新计数器(例如,计数器0)。在一些情况下,该更新可以响应于针对间接块140的任何输入输出IO操作。在504处,存储系统100确定被更新的条目X在更新前后是否均不具有非零标识符。如果在504处确定为是,则方法500可以前进到530退出。如果在504处确定为否,则方法500可以前进到506。
在506处,存储系统100确定条目X在更新前后是否均具有非零标识符。如果在506处确定为是,则方法500可以前进到530退出。如果在506处确定为否,则方法500可以前进到508。
在508处,存储系统100确定计数器0是否已经初始化。如果在508处在508处确定为否,则方法500可以前进到514。在514处,存储系统100确定条目X在更新后是否具有非零标识符。如果在514处确定为是,则方法500可以前进到516。在516处,存储系统100确定计数器0的计数为非零。换言之,存储系统100可以在不对计数器0进行初始化的情况下确定条目组中具有非预定标识符的条目数为非零。然后,方法500前进到530处退出。如果在514处确定为否,则方法500可以前进到518。在518处,存储系统100扫描条目0至条目63以确定计数器0的准确计数。
如果在508处确定为是,则方法500可以前进到510。在510处,存储系统100确定条目X在更新前是否具有非零标识符。如果在510处确定为否,则方法500前进到512。在512处,存储系统100将计数器0递增。然后,方法500可以前进到530退出。如果在510处确定为是,则方法500前进到520。在520处,存储系统100将计数器0递减。然后,方法500前进到522。
在522处,存储系统100确定计数器0的计数是否为零。如果在522处确定为是,则存储系统100确定条目0至条目63中具有标识符的条目均具有标识符0。然后,方法500前进到530退出。如果在522处确定为否,则方法500前进到530退出。
此外,在引入了与条目组相关联的计数器组400的情况下,在针对间接块(例如,间接块140)的一个或多个条目进行修改时,需要在已有的条目更新流程的基础上增加更新与条目相关联的计数器的操作。下文结合图6来描述操作上的这种改变。图6示出了根据本公开的实施例的用于修改间接块140条目的方法600的示意性流程图。
在602处,存储系统100修改间接块140的条目。在604处,存储系统100更新与被修改的条目相关联的计数器。在606处,存储系统100针对当前条目进行其他处理,然后进入针对下一条目的处理。在608处,存储系统100确定对整个间接块的更新是否完成。如果是,则方法600前进到610退出。如果否,则方法600返回到604进行下一项更新。
返回参考图2,在215处,确定条目组(例如,条目0至条目63)中具有标识符的条目是否均具有同一预定标识符(例如,标识符0)。在一些实施例中,该确定可以基于计数器组440中的计数器0的计数。如果计数器0的计数为0,则可以确定该条目组中具有标识符的条目是否均具有同一预定标识符。反之,如果确定计数器0的计数为非零,则可以确定该条目组中具有标识符的条目不是具有同一预定标识符。
在220处,响应于条目组(例如,条目0至条目63)中具有标识符的条目均具有同一预定标识符(例如,标识符0),存储系统100将该条目组标记为在间接块140损坏的情况下是可恢复的。例如,在图3描绘的示例中,比特321对应于条目0至条目63、比特323对应于条目64至条目127、比特325对应于条目896至条目959、比特327对应于条目960至条目1023。在条目0至条目63中具有标识符的条目均具有同一预定标识符(例如,标识符0)的情况下,比特位321可以被设置为预定状态(例如,设置为0),否则可以设置为另一状态(例如,设置为1)。比特位323、325、327的设置以此类推,不再赘述。
通过这样的方式,比特位321值为0即表示条目0至条目63中具有标识符的条目均为同一预定标识符。换句话说,条目0至条目63中具有标识符的条目均表示具有重复的预定字节模式的数据块。因此,在间接块140损坏时,这些条目表示的具有预定字节模式的数据块可以被恢复。
应当理解,尽管图3中描绘了比特位图320与间接块的条目之间的特定对应关系和特定取值,但是这些对应关系和取值仅为示例,无意以任何方式限定本公开的实施例的范围。在其他实施例中,比特位图320中的比特321、323、325、327可以对应于间接块140的其他条目组,或具有与所示出的取值不同的取值。
在间接块140损坏后进行数据恢复的情况下,存储系统100可以响应于该条目组被标记为可恢复,基于预定标识符对应的字节模式来恢复条目组对应的数据块。具体地,如果比特位321的值为0,则在数据恢复时,所有具有标识符的条目由于具有全零字节模式而被标记为空洞。反之,如果比特位321的值为1,则条目0至条目63被标记为损坏的数据块。通过这样的方式,尽管不是所有的模式类型的条目可以得到精确恢复,但是存储系统100仍然可以恢复所有具有预定模式的数据块,例如全零数据块。
经验表明,在实际的存储系统中,非常高比例(例如,甚至高达90%)的数据块是全零的数据块。因此,通过本公开的实施例的方案,可以在支持在线模式检测的情况下,以有限的资源耗费尽可能地保持间接块的可靠性。考虑到存储可以受益于良好的性能和通过在线模式检测节省的存储空间,本公开的实施例的方案相比于已有的存储系统可以实现更好的性能。
图7示意性地示出了一种可以被用来实施本公开的实施例的设备700的框图。如图7中所示出的,设备700包括中央处理单元(CPU)701,其可以根据存储在只读存储设备(ROM)702中的计算机程序指令或者从存储单元708加载到随机访问存储设备(RAM)703中的计算机程序指令,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法200、500、600,可由处理单元701来执行。例如,在一些实施例中,方法200、500、600可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序被加载到RAM703并由CPU 701执行时,可以执行上文描述的方法200、500、600的一个或多个步骤。
如本文所使用的,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。本文还可能包括其他明确的和隐含的定义。
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可以包括运算、计算、处理、导出、调查、查找(例如,在表格、数据库或另一数据结构中查找)、查明等。此外,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。此外,“确定”可以包括解析、选择、选取、建立等。
应当注意,本公开的实施例可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。
此外,尽管在附图中以特定顺序描述了本公开的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
虽然已经参考若干具体实施例描述了本公开,但是应当理解,本公开不限于所公开的具体实施例。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。

Claims (21)

1.一种计算机实现的方法,包括:
将索引节点的间接块所包含的多个条目划分成多个条目组,所述多个条目中的每个非空条目具有以下之一:
指向相关联数据块的指针,
特定于相关联数据块的字节模式的标识符;
针对所述多个条目组中的条目组,确定该条目组中具有标识符的条目是否均具有同一预定标识符;以及
响应于该条目组中具有标识符的条目均具有所述同一预定标识符,将该条目组标记为在所述间接块损坏的情况下是可恢复的。
2.根据权利要求1所述的方法,其中将所述多个条目划分成多个条目组包括:
将所述多个条目等分为包括连续条目的多个条目组。
3.根据权利要求1所述的方法,其中确定该条目组中具有标识符的条目是否均具有同一预定标识符包括:
针对该条目组,确定具有与所述预定标识符不同的标识符的条目的计数;以及
响应于所述计数为零,确定所述条目组中具有标识符的条目均具有所述同一预定标识符。
4.根据权利要求3所述的方法,还包括:
响应于所述条目组中的条目被更新来更新所述计数。
5.根据权利要求4所述的方法,其中更新所述计数包括以下中的至少一项:
响应于所述条目在更新前具有所述预定标识符且在更新后具有与所述预定标识符不同的标识符,将所述计数递增;以及
响应于所述条目在更新前具有与所述预定标识符不同的标识符且在更新后具有所述预定标识符,将所述计数递减。
6.根据权利要求4所述的方法,其中更新所述计数包括以下中的至少一项:
响应于所述计数未初始化且所述条目在更新后具有与所述预定标识符不同的标识符,确定所述计数非零;以及
响应于所述计数未初始化且所述条目在更新后具有所述预定标识符,扫描所述条目组中的所有条目以确定所述计数。
7.根据权利要求1所述的方法,其中将所述条目组标记为是可恢复的包括:
将对应于所述条目组的比特位设置为预定状态。
8.根据权利要求7所述的方法,其中所述比特位存储在所述间接块的块元数据中。
9.根据权利要求1所述的方法,进一步包括:
响应于所述间接块损坏且所述条目组被标记为可恢复,基于所述预定标识符对应的字节模式来恢复所述条目组对应的数据块。
10.根据权利要求1所述的方法,其中所述预定标识符对应于由重复的全零字节组成的数据块。
11.一种电子设备,包括:
至少一个处理器;以及
包括计算机程序指令的至少一个存储器,所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述设备:
将索引节点的间接块所包含的多个条目划分成多个条目组,所述多个条目中的每个非空条目具有以下之一:
指向相关联数据块的指针,
特定于相关联数据块的字节模式的标识符;
针对所述多个条目组中的条目组,确定该条目组中具有标识符的条目是否均具有同一预定标识符;以及
响应于该条目组中具有标识符的条目均具有所述同一预定标识符,将该条目组标记为在所述间接块损坏的情况下是可恢复的。
12.根据权利要求11所述的设备,其中所述至少一个存储器和所述计算机程序指令进一步被配置为,与所述至少一个处理器一起,使得所述设备:
将所述多个条目等分为包括连续条目的多个条目组。
13.根据权利要求11所述的设备,其中所述至少一个存储器和所述计算机程序指令进一步被配置为,与所述至少一个处理器一起,使得所述设备:
针对该条目组,确定具有与所述预定标识符不同的标识符的条目的计数;以及
响应于所述计数为零,确定所述条目组中具有标识符的条目均具有所述同一预定标识符。
14.根据权利要求13所述的设备,其中所述至少一个存储器和所述计算机程序指令进一步被配置为,与所述至少一个处理器一起,使得所述设备:
响应于所述条目组中的条目被更新来更新所述计数。
15.根据权利要求14所述的设备,其中所述至少一个存储器和所述计算机程序指令进一步被配置为,与所述至少一个处理器一起,使得所述设备:
响应于所述条目在更新前具有所述预定标识符且在更新后具有与所述预定标识符不同的标识符,将所述计数递增;以及
响应于所述条目在更新前具有与所述预定标识符不同的标识符且在更新后具有所述预定标识符,将所述计数递减。
16.根据权利要求14所述的设备,其中所述至少一个存储器和所述计算机程序指令进一步被配置为,与所述至少一个处理器一起,使得所述设备:
响应于所述计数未初始化且所述条目在更新后具有与所述预定标识符不同的标识符,确定所述计数非零;以及
响应于所述计数未初始化且所述条目在更新后具有所述预定标识符,扫描所述条目组中的所有条目以确定所述计数。
17.根据权利要求11所述的设备,其中所述至少一个存储器和所述计算机程序指令进一步被配置为,与所述至少一个处理器一起,使得所述设备:
将对应于所述条目组的比特位设置为预定状态。
18.根据权利要求17所述的设备,其中所述比特位存储在所述间接块的块元数据中。
19.根据权利要求11所述的设备,其中所述至少一个存储器和所述计算机程序指令进一步被配置为,与所述至少一个处理器一起,使得所述设备:
响应于所述间接块损坏且所述条目组被标记为可恢复,基于所述预定标识符对应的字节模式来恢复所述条目组对应的数据块。
20.根据权利要求11所述的设备,其中所述预定标识符对应于由重复的全零字节组成的数据块。
21.一种计算机程序产品,所述计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1-10中任一项所述的方法的步骤。
CN201810048674.7A 2018-01-18 2018-01-18 改进在线模式检测的方法、装置和计算机程序产品 Active CN110109867B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810048674.7A CN110109867B (zh) 2018-01-18 2018-01-18 改进在线模式检测的方法、装置和计算机程序产品
US16/249,296 US11150993B2 (en) 2018-01-18 2019-01-16 Method, apparatus and computer program product for improving inline pattern detection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810048674.7A CN110109867B (zh) 2018-01-18 2018-01-18 改进在线模式检测的方法、装置和计算机程序产品

Publications (2)

Publication Number Publication Date
CN110109867A true CN110109867A (zh) 2019-08-09
CN110109867B CN110109867B (zh) 2023-03-31

Family

ID=67213971

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810048674.7A Active CN110109867B (zh) 2018-01-18 2018-01-18 改进在线模式检测的方法、装置和计算机程序产品

Country Status (2)

Country Link
US (1) US11150993B2 (zh)
CN (1) CN110109867B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269532B2 (en) 2019-10-30 2022-03-08 EMC IP Holding Company LLC Data reduction by replacement of repeating pattern with single instance
CN114610227B (zh) 2020-12-09 2024-03-19 戴尔产品有限公司 将存储系统集群化以共享用于去重的数据模式
CN114860150A (zh) 2021-02-04 2022-08-05 戴尔产品有限公司 在存储群集的存储系统之间执行损耗均衡

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153479A1 (en) * 2002-11-14 2004-08-05 Mikesell Paul A. Systems and methods for restriping files in a distributed file system
CN1677333A (zh) * 2004-03-31 2005-10-05 国际商业机器公司 写入过程管理方法和系统
CN101095116A (zh) * 2004-11-05 2007-12-26 数据机器人技术公司 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法
US8612382B1 (en) * 2012-06-29 2013-12-17 Emc Corporation Recovering files in data storage systems
CN105094688A (zh) * 2014-05-14 2015-11-25 卡米纳利欧技术有限公司 存储系统中的去重

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US9137154B2 (en) * 2012-11-29 2015-09-15 Lenovo Enterprise Solutions (Singapore Pte. LTD Management of routing tables shared by logical switch partitions in a distributed network switch
US9240975B2 (en) * 2013-01-30 2016-01-19 Palo Alto Networks, Inc. Security device implementing network flow prediction
US8751763B1 (en) * 2013-03-13 2014-06-10 Nimbus Data Systems, Inc. Low-overhead deduplication within a block-based data storage
US9430503B1 (en) 2013-06-28 2016-08-30 Emc Corporation Coalescing transactional same-block writes for virtual block maps
US9727479B1 (en) 2014-09-30 2017-08-08 EMC IP Holding Company LLC Compressing portions of a buffer cache using an LRU queue
US10037251B1 (en) 2015-03-31 2018-07-31 EMC IP Holding Company LLC File system rollback to previous point in time
US9594513B1 (en) * 2015-06-29 2017-03-14 EMC IP Holding Company LLC Data storage system with file system stream detection
US20170017571A1 (en) * 2015-07-17 2017-01-19 Samsung Electronics Co., Ltd. Method and apparatus fori n-line deduplication in storage devices
US10242012B1 (en) 2015-09-30 2019-03-26 EMC IP Holding Company LLC Managing truncation of files of file systems
US9880762B1 (en) 2015-12-30 2018-01-30 EMC IP Holding Company LLC Compressing metadata blocks prior to writing the metadata blocks out to secondary storage
CN110413212B (zh) 2018-04-28 2023-09-19 伊姆西Ip控股有限责任公司 识别待写入数据中的可简化内容的方法、设备和计算机程序产品
US10896152B2 (en) 2018-08-03 2021-01-19 EMC IP Holding Company LLC Method, apparatus and computer program product for managing data storage

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153479A1 (en) * 2002-11-14 2004-08-05 Mikesell Paul A. Systems and methods for restriping files in a distributed file system
CN1677333A (zh) * 2004-03-31 2005-10-05 国际商业机器公司 写入过程管理方法和系统
CN101095116A (zh) * 2004-11-05 2007-12-26 数据机器人技术公司 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法
US8612382B1 (en) * 2012-06-29 2013-12-17 Emc Corporation Recovering files in data storage systems
CN105094688A (zh) * 2014-05-14 2015-11-25 卡米纳利欧技术有限公司 存储系统中的去重

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IEEE: "P802.1AR/D2.1, Jun 2009 - IEEE Draft Standard for Local and Metropolitan Area Networks: Secure Device Identity", 《HTTPS://IEEEXPLORE.IEEE.ORG/SERVLET/OPAC?PUNUMBER=5174178》 *
白铖: "一种分布式文件系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Also Published As

Publication number Publication date
CN110109867B (zh) 2023-03-31
US11150993B2 (en) 2021-10-19
US20190220363A1 (en) 2019-07-18

Similar Documents

Publication Publication Date Title
CN107807982B (zh) 一种异构数据库的一致性校验方法及装置
EP3218811B1 (en) Testing insecure computing environments using random data sets generated from characterizations of real data sets
US10585915B2 (en) Database sharding
US10296497B2 (en) Storing a key value to a deleted row based on key range density
CN110830322B (zh) 一种基于概率测量数据结构Sketch的网络流量测量方法和系统
CN111475105B (zh) 监控数据存储方法、设备、服务器及存储介质
CN110109867A (zh) 改进在线模式检测的方法、装置和计算机程序产品
CN108027713A (zh) 用于固态驱动器控制器的重复数据删除
US20040024729A1 (en) Method and system for storing sparse data in memory and accessing stored sparse data
CN110399333A (zh) 删除快照的方法、设备和计算机程序产品
CN111506604A (zh) 访问数据的方法、装置和计算机程序产品
EP0520232A2 (en) Method and apparatus for saving and retrieving functional results
JP2020123320A (ja) インデックスを管理するための方法、装置、設備及び記憶媒体
CN111078276B (zh) 应用程序的冗余资源处理方法、装置、设备及存储介质
CN110046155A (zh) 特征数据库的更新、数据特征的确定方法、装置及设备
US20150248445A1 (en) Method and system for implementing an array using different data structures
CN110362404B (zh) 一种基于sql的资源分配方法、装置和电子设备
CN113434542B (zh) 数据关系识别方法、装置、电子设备及存储介质
US20210216553A1 (en) Dashboard loading using a filtering query from a cloud-based data warehouse cache
CN110674084A (zh) 用于数据保护的方法、设备和计算机可读存储介质
CN112486988A (zh) 数据处理方法、装置、设备及存储介质
CN112039975A (zh) 一种报文字段的处理方法、装置、设备及存储介质
CN112433753A (zh) 基于参数信息的接口文档生成方法、装置、设备和介质
US20210405904A1 (en) Method, device, and computer program product for managing storage system
CN110716946B (zh) 特征规则匹配库的更新方法、装置、存储介质及电子设备

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
GR01 Patent grant
GR01 Patent grant