CN113448920A - 管理存储系统中的索引的方法、设备和计算机程序产品 - Google Patents

管理存储系统中的索引的方法、设备和计算机程序产品 Download PDF

Info

Publication number
CN113448920A
CN113448920A CN202010231101.5A CN202010231101A CN113448920A CN 113448920 A CN113448920 A CN 113448920A CN 202010231101 A CN202010231101 A CN 202010231101A CN 113448920 A CN113448920 A CN 113448920A
Authority
CN
China
Prior art keywords
file
data
hashes
storage system
name
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
CN202010231101.5A
Other languages
English (en)
Other versions
CN113448920B (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 CN202010231101.5A priority Critical patent/CN113448920B/zh
Priority to US16/917,843 priority patent/US11243932B2/en
Publication of CN113448920A publication Critical patent/CN113448920A/zh
Application granted granted Critical
Publication of CN113448920B publication Critical patent/CN113448920B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • 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
    • G06F16/137Hash-based

Landscapes

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

Abstract

本公开涉及管理存储系统中的索引的方法、设备和计算机程序产品。该存储系统包括存储数据,以及在该方法中,获取与存储数据相关联的第一组数据对象。分别确定第一组数据对象的第一组哈希,第一组哈希中的哈希是第一组数据对象中的数据对象的哈希。在存储系统中生成第一文件以存储第一组哈希,第一文件的第一名称是基于第一组哈希的哈希来确定的。基于第一文件来创建存储数据的索引。进一步,提供了用于管理存储系统中的索引的设备和计算机程序产品。利用上述方法,可以基于文件来创建索引中的各个层级处的节点,以便减少创建和管理索引的计算资源和存储资源方面的开销。

Description

管理存储系统中的索引的方法、设备和计算机程序产品
技术领域
本公开的各实现方式涉及存储管理,更具体地,涉及用于管理存储系统中的索引的方法、设备和计算机程序产品。
背景技术
随着数据存储技术的发展,各种数据存储设备已经能够向用户提供越来越高的数据存储能力,并且数据访问速度也有了很大程度的提高。在提高数据存储能力的同时,用户对于存储系统的响应时间也提出了越来越高的需求。目前已经提出了为存储系统中的存储数据建立索引的技术方案。然而,建立和维护索引将会导致计算资源和存储资源的额外开销,因而期望以更为有效的方式来管理存储系统中的索引。
发明内容
因而,期望能够开发并实现一种以更为有效的方式来管理索引的技术方案。期望该技术方案能够与现有的存储系统相兼容,并且通过改造现有存储系统的各种配置,来以更为有效的方式管理存储系统的索引。
根据本公开的第一方面,提供了一种用于管理存储系统中的索引的方法,该存储系统包括存储数据。在该方法中,获取与存储数据相关联的第一组数据对象。分别确定第一组数据对象的第一组哈希,第一组哈希中的哈希是第一组数据对象中的数据对象的哈希。在存储系统中生成第一文件以存储第一组哈希,第一文件的第一名称是基于第一组哈希的哈希来确定的。基于第一文件来创建存储数据的索引。
根据本公开的第二方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行用于管理存储系统中的索引的动作。存储系统包括存储数据,并且该动作包括:获取与存储数据相关联的第一组数据对象;分别确定第一组数据对象的第一组哈希,第一组哈希中的哈希是第一组数据对象中的数据对象的哈希;在存储系统中生成第一文件以存储第一组哈希,第一文件的第一名称是基于第一组哈希的哈希来确定的;以及基于第一文件来创建存储数据的索引。
根据本公开的第三方面,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的第一方面的方法。
附图说明
结合附图并参考以下详细说明,本公开各实现方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现方式。在附图中:
图1示意性示出了根据一个技术方案的存储数据的索引的框图;
图2示意性示出了根据本公开的示例性实现方式的用于生成存储数据的索引中的一个节点的过程的框图;
图3示意性示出了根据本公开的示例性实现方式的用于管理存储系统中的索引的方法的流程图;
图4示意性示出了根据本公开的示例性实现方式的用于生成存储数据的索引的过程的框图;
图5示意性示出了根据本公开的示例性实现方式的表示索引中的节点的文件的数据结构的框图;
图6示意性示出了根据本公开的示例性实现方式的用于生成文件的过程的框图;
图7示意性示出了根据本公开的示例性实现方式的向远程存储系统传输存储数据的相关文件的框图;
图8示意性示出了根据本公开的示例性实现方式的存储数据的相关文件的哈希与存储路径之间的映射关系的框图;以及
图9示意性示出了根据本公开的示例性实现的用于管理存储系统中的索引的设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实现。虽然附图中显示了本公开的优选实现,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现所限制。相反,提供这些实现是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实现”和“一个实现”表示“至少一个示例实现”。术语“另一实现”表示“至少一个另外的实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
首先参见图1描述本公开的示例性实现方式的应用环境。图1示意性示出了根据一个技术方案的存储数据的索引的框图100。在图1中,存储数据110是将被存储在存储系统中的数据,该数据可以具有多种格式,例如,可以包括视频、音频、文本等格式,或者还可以包括数据库文件。当存储数据110(例如,高清电影)较大时,需要将该存储数据110划分为多个数据区块(又称为原子区块),此时多个数据区块将作为数据部分被存储在存储系统中。
目前已经提出了为存储数据110建立索引的技术方案,例如可以基于如下方式来获取存储数据110的元数据。可以分别获取一组数据区块120、122、……、以及124(具有预定数量)的一组哈希130、132、……、以及134。可以组合一组哈希130、132、……、以及134来获得合成体(composite)150,并且获取合成体150的合成体哈希160。类似地,可以获取另一组数据区块的另一组哈希136、138、……、以及140,继而获得相应的合成体152以及相应的合成体哈希162。继而,可以将多个合成体哈希160、……、以及162进行组合以形成合成体-合成体170,最终获取根哈希180。以此方式,可以将上述元数据作为索引中的各个层级处的索引节点。
可以在存储系统的专用索引区域中存储索引中的索引节点。索引节点以连续方式存储,并且利用指针来表示各个层级的索引节点之间的引用关系。在存储系统的运行过程中,需要大量的计算资源和存储资源来维护索引。当删除存储数据110中的某个或者某些原子区块时,需要更新索引的内容,这将造成索引中出现空洞。当存储系统中存在大量存储数据时,创建和维护索引将会为存储系统造成沉重的计算开销和存储开销。因而,期望以更为有效的方式来管理索引。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个问题,本公开的示例性实现方式提出了一种管理索引的方法。根据本公开的示例性实现方式,以文件方式来存储哈希。在下文中,首先参见图2描述有关本公开的示例性实现方式的概要。
图2示意性示出了根据本公开的示例性实现方式的用于生成存储数据的索引中的一个节点的过程的框图200。如图2所示,一组哈希210是来自存储数据中的一组数据对象的哈希,可以根据预定算法(例如,SHA-1算法或者其他算法)确定一组哈希210的哈希212。可以在文件220中存储(如箭头230所示)一组哈希210,并且此时文件220的文件名称222被设置(如箭头232所示)为哈希212。
以此方式,可以方便地记录下层的一组哈希210与上层的哈希212之间的层级关系,只需读取文件220的文件内容,即可获得下层的一组哈希210中的各个哈希。相对于现有技术方案中利用指针指向下层哈希所在存储空间的地址而言,利用文件名称和文件内容记录层级关系,可以降低存储开销和管理开销,并且可以直接利用文件系统的已有功能来管理文件220。
在下文中,将参见图3描述本公开的示意性实现的更多细节。图3示意性示出了根据本公开的示例性实现方式的用于管理存储系统中的索引的方法300的流程图,该图示意性示出了为存储系统中包括的存储数据建立索引的过程。在框310处,获取与存储数据相关联的第一组数据对象。存储数据可以包括多个数据区块,可以获取多个数据区块中的至少一部分以作为第一组数据对象。在下文中,将参见图4详细描述方法300的更多细节。
图4示意性示出了根据本公开的示例性实现方式的用于生成存储数据的索引的过程的框图400。在下文中,为方便起见,将仅以文本文件作为存储数据的示例进行描述。假设存储数据410包括如下文表:“This is a test phrase that will be stored on theserver in multiple chunks.Each chunk is stored as separate hashes and put ina hierarchy.”存储数据410可以被划分至多个数据区块420至427。可以将一部分数据区块作为第一组数据对象。将会理解,尽管图4示意性示出了将数据区块420、421、422和423作为第一组区块,根据本公开的示例性实现方式,一组数据区块还可以包括其他数量的数据区块。
返回图3的框320,分别确定第一组数据对象的第一组哈希,此时,基于第一组数据对象中的每个数据对象生成一个哈希。继续参见图4,可以基于数据区块420来生成哈希H20。在此步骤中,例如可以基于SHA-1算法来生成哈希。具体地,可以将数据区块420中的文本“This is a tes”作为输入,并获得相应的哈希。基于不同的算法,哈希可以具有不同的长度。根据本公开的示例性实现方式,每个哈希具有固定的长度,例如20字节。类似地,可以基于数据区块421来生成哈希H21,可以基于数据区块422来生成哈希H22,并且可以基于数据区块423来生成哈希H23。此时,获得的哈希H20至H23的长度均为20字节。
返回图3的框330处,在存储系统中生成第一文件以存储第一组哈希,此时第一文件的第一名称是基于第一组哈希的哈希来确定的。将会理解,由于采用文件方式来存储哈希,为了区别于用于存储数据区块的文件,可以为文件设置类型。根据本公开的示例性实现方式,可以将第一文件的类型设置为“索引类型”,并且可以将用于存储普通数据区块的文件设置为“数据类型”。利用本公开的示例性实现方式,在文件系统可以方便地区分文件中存储的是数据内容还是索引内容,进而便于管理。
图5示意性示出了根据本公开的示例性实现方式的表示索引中的节点的文件的数据结构的框图500。如图5所示,文件510可以包括类型标记520,用于表示文件是“索引类型”还是“数据类型”(例如,可以以2字节表示);文件内容522,用于存储文件的数据体;以及文件名称524,用于存储文件的名称。
根据本公开的示例性实现方式,可以分别确定类型520、文件内容522和文件名称524,以便生成文件。可以首先基于文件中将要存储的数据的类型,来确定类型520。对于普通的数据区块而言,可以将类型520设置为“数据类型”;对于哈希而言,可以将类型520设置为“索引类型”。可以基于已有的方法来生成“数据类型”文件的文件内容522和文件名称524。在下文中,将描述如何生成“索引类型”文件的文件内容522和文件名称524。
可以根据预定组合规则,组合第一组哈希以生成第一文件内容。继续参见图4。可以将哈希H20、H21、H22和H23进行组合,以获得第一文件内容。假设每个哈希的长度为20字节,利用2字节表示类型,则一个哈希的相关数据的长度为22字节。通过将上述4个哈希的相关数据进行串联,获得的第一文件内容的长度为22*4=88字节。继而,可以向第一文件中存储获得的88字节(即,第一文件内容)。可以将上述88字节的文件内容作为哈希算法的输入,以便获得第一文件内容的哈希H10。此时,可以获得以20字节表示的哈希,并且可以将其设置为第一文件的第一名称。
上文已经描述了如何获取索引中的一个层级处的一个节点,返回图3的框340,可以基于第一文件来创建存储数据的索引。可以以类似方式来获取索引中的其他节点。根据本公开的示例性实现方式,可以获取与存储数据相关联的第二组数据对象,分别确定第二组数据对象的第二组哈希,并且在存储系统中生成第二文件以存储第二组哈希。此时,第二文件的第二名称是基于第二组哈希的哈希来确定的。
继续参见图4,可以将数据区块424、425和426作为第二组数据对象,并且基于上文描述的方法来分别获取各个数据区块的哈希H24、H25和H26。此时,每个哈希的长度均为20字节,并且以2字节表示类型。可以将获得的哈希相关的数据进行组合以获得第二组哈希(以22*3=66字节表示),并且将第二组哈希的哈希H11作为第二文件名称。将会理解,尽管上文示出了第二组数据对象包括3个数据对象,第一组数据对象和第二组数据对象可以具有相同或者不同的数量。
根据本公开的示例性实现方式,可以不断地从存储数据410的多个数据区块中选择未被处理的一组数据区块并且执行上文方法300的操作,直到全部数据区块都被处理。在已经处理第一组数据区块和第二组数据区块的情况下,还存在数据区块427未被处理。在下文中,将参见图6描述针对该区块执行的操作。
图6示意性示出了根据本公开的示例性实现方式的用于生成文件的过程的框图600。可以将数据区块427中的文本“nd put in ahierarchy.”作为哈希算法的输入,并获得哈希H27。进一步,可以获取哈希H27的哈希H12以作为文件名(例如,以20字节数据“cc……b”表示)。此时,生成的文件的类型为索引类型,并且文件内容为哈希H27的值(例如,以20字节数据“19……c”表示)。对于下层的普通数据区块427而言,该数据区块相对应的文件的名称例如可以表示为“block007”,文件类型为“数据类型”,并且文件内容为文本“ndput in ahierarchy.”。以此方式,可以完成针对存储数据410中的全部数据区块420至427的处理。
根据本公开的示例性实现方式,可以按照层级方式来生成索引中上一层级的节点。根据本公开的示例性实现方式,在存储系统中生成第三文件以存储第一名称和第二名称的哈希。继而,将第三文件标识为索引中的第一文件和第二文件的父节点。以此方式,可以记录索引中的各个索引节点之间的层级关系。上文已经描述了分别基于第一组哈希H20、H21、H22和H23生成哈希H10、基于第二组哈希H24、H24和H26生成哈希H11以及基于第三组哈希(仅包括一个哈希H27)生成哈希H12的过程。在下文中,将描述如何基于哈希H10、H11和H12生成上层的父节点H00。
根据本公开的示例性实现方式,可以根据预定组合规则,组合第一名称和第二名称以生成第三文件内容。可以向第三文件中存储第三文件内容,并且将第三文件内容的哈希作为第三文件的名称。将会理解,尽管在此仅示意性示出了基于第一名称和第二名称两个名称来生成上层索引节点的示例,根据本公开的示例性实现方式,还可以基于更多名称来生成上层的节点。
返回图4,该图示出了基于3个文件名称来生成根哈希的相关文件的过程。H10、H11和H12分别以20字节表示,并且每个文件的类型以2字节表示。可以将哈希H10、H11和H12的相关数据进行串联,以获得以22*3=66字节表示的文件内容。可以将该文件内容存储至文件,并且将上述66字节作为哈希算法的输入以获取哈希H00。可以将哈希H00作为表示父节点的文件的名称。以此方式,可以获得索引的根节点文件H00。将会理解,尽管上文示出了包括3个层级的索引,根据本公开的示例性实现方式,索引还可以包括更多或者更少的层级。
根据本公开的示例性实现方式,可以将第三文件标识为第一文件,进而迭代地执行方法300,直到第三文件涉及存储数据中的全部数据区块。此时,可以将第三文件标识为存储数据的索引的根文件。继续参见图4,假设存储数据410包括大量数据区块,并且生成大量哈希,可以基于上文描述的方法来将这些哈希进行分组,并且生成每组哈希的哈希。可以生成相应的多个合成体哈希,进一步,可以将多个合成体哈希进行分组,并且针对每组生成各自的哈希。以此方式,可以生成具有更多层级的索引。
上文已经描述了如何生成存储数据的索引。根据本公开的示例性实现方式,可以利用文件系统的已有功能来管理索引中的各个节点的相关文件。以此方式,可以避免按照已有方式存储索引时所产生的额外开销。例如,利用本公开的示例性实现方式,不必检查每个索引条目是否指向正确的存储位置,不必检查数据区块的哈希与索引中相关数据的一致性,不必检查各层哈希之间的引用关系,并且在删除存储对象时可以直接基于文件系统提供的功能来删除相对应的索引中文件,而不会在索引空间中出现空洞。
在已经生成了存储数据的索引的情况下,可以使用该索引来访问存储数据。根据本公开的示例性实现方式,可以基于索引中的各个文件的文件名称和文件内容之间所记录的层级关系,来逐级访问下层的文件,直到获取存储数据410中的每个数据区块。如果接收到访问存储数据的访问请求,可以读取根文件的文件内容。继续参见图4,可以读取根文件H00。根据本公开的示例性实现方式,可以基于给定文件的类型来确定后续操作。
如果确定给定文件的类型为索引类型,可以基于给定文件下层的一组子文件名称访问索引下层的节点。基于预定组合规则,可以分别确定根文件的一组子节点的一组文件名称。具体地,由于根文件的文件内容包括22*3=66个字节,其中包括3个文件的文件名称和文件类型。因而,按照顺序解析根文件的文件内容,可以分别获得下层的3个文件的名称H10、H11和H12。此时,3个文件的类型均为“索引类型”。进一步,可以根据文件名称和类型来逐一处理每个文件。对于文件H10,该文件的类型为“索引类型”,可以通过读取该文件的文件内容来分别获取下一层级的4个文件H20、H21、H22和H23,此时上述4个文件的类型均为“索引类型”。
根据本公开的示例性实现方式,如果确定给定文件的类型为数据类型,则可以访问给定文件的文件内容,此时文件内容包括存储数据的多个数据区块中的一个数据区块。进一步,可以逐一处理每个文件。对于文件H20而言,可以读取该文件的文件内容,以便找到下层的文件(数据区块420所对应的文件)。由于该文件的文件类型为“数据类型”,此时可以从该文件中读取数据区块420的内容,即,文本“Thisis a tes”。类似地,分别读取文件H21、H22和H23的下层文件,可以获得其他数据区块421、422和423中的文本。
根据本公开的示例性实现方式,可以按照上文描述的方法来遍历根文件的全部子节点,以访问存储数据的全部数据区块。具体地,通过访问文件H10的下层文件,可以获得数据区块420、421、422和423中的文本。通过访问文件H11的下层文件,可以获得数据区块424、425和425中的文本。通过访问文件H12的下层文件,可以获得数据区块427中的文本。以此方式,可以获得存储数据410中的全部数据区块420至427的文本。通过组合上述多个文本,即可获得存储数据420的全部文本。利用本公开的示例性实现方式,可以基于索引中的文件和文件名称之间的关系来获取索引中的每个层级处的相关数据,进而以更为简便并且高效的方式获得存储数据410。
将会理解,上文仅以示例方式描述了存储设备410中的多个数据区块420至427之间不存在重复数据的情况。根据本公开的示例性实现方式,多个数据区块之间还可以存在重复数据,并且在备份过程中两个版本的存储数据中的数据区块之间也可以存储重复数据。此时可以基于重复数据删除(de-dupe)技术来首先去除重复的数据区块,继而执行上文描述的方法300。
根据本公开的示例性实现方式,为了提高数据安全性,还可以向远程存储系统进行备份。图7示意性示出了根据本公开的示例性实现方式的向远程存储系统传输存储数据的相关文件的框图700。如图所示,在本地存储系统710中,可以将存储文件划分为多个数据区块并且将每个数据区块分别存储在一个数据类型的文件712中。可以基于上文描述的方法建立索引,并且将索引相关的多个节点分别存储在索引类型的多个文件714中。此时,可以利用本地存储系统710的文件系统的功能来创建、删除和更新文件712和714。
随着网络存储系统的发展,目前已经出现了大量远程存储系统。远程存储系统720(例如,基于云的存储系统)可以为各个用户分配存储空间,例如,用户存储空间722、……、以及724。为了提高本地存储系统710的安全性和可靠性,可以存储数据的相关文件传输至远程存储系统720中。例如,可以将索引类型的文件714传输至用户存储空间724中。
通常而言,用户存储空间的大小存在限制(例如,5TB)。随着本地存储系统710中的数据量的增加,期望上传的数据量相应地提高并且可能会超过用户存储空间的限制。根据本公开的示例性实现方式,可以建立存储路径和用户存储空间的对应关系。
根据本公开的示例性实现方式,可以基于哈希来确定相关的存储路径。图8示意性示出了根据本公开的示例性实现方式的存储数据相关文件的哈希与存储路径之间的映射关系的框图800。可以基于存储数据相关的文件确定与文件相关联的路径标识符。例如,假设某个文件的哈希为“192e…732c”,可以利用该哈希中的部分字符建立路径标识符,例如图8中的条目810所示的“1298”。在本地存储系统710中,可以创建文件夹“1298”并且使用路径“/1298/192e…732c”来标识该文件。
根据本公开的示例性实现方式,可以在本地存储系统710中的路径标识符和远程存储系统720中的用户存储空间之间建立对应关系,以便向远程存储系统720中的具有路径标识符的用户存储空间中存储文件。具体地,在远程存储系统720中,可以建立标识符为“1298”的用户存储空间,并且将文件传输至该用户存储空间中。利用本公开的示例性实现方式,可以将一个目录中的文件传输至相应的用户存储空间,并且基于路径标识符来找到相应的用户存储空间。以此方式,可以使用远程存储系统720中的多个用户存储空间,进而避免一个用户存储空间不足以容纳全部文件的情况。
根据本公开的示例性实现方式,可以从远程存储系统中的具有路径标识符的存储空间中取回文件。例如,可以从标识符为“1298”的用户存储空间中取回哈希为“192e…732c”的文件。根据本公开的示例性实现方式,可以为标识符设置预定的格式。例如,可以以4位数字表示标识符。随着本地存储系统710中的文件数量的增加,如果4位数字不足以表示标识符,还可以扩展标识符的位数。如图8中的条目820所示,当标识符被扩展至5位数字时,假设文件的哈希为“edcc…23bb”,可以利用图8中的条目820所示的“35275”来作为标识符。
根据本公开的示例性实现方式,当标识符的位数被扩展之后,可以基于扩展后的格式更新用户存储空间的标识符。如果标识符的格式为扩展之前的格式,还可以更新该标识符。例如,当在远程存储系统720中查找具有标识符“1298”的用户存储空间时,可以将标识符的第一位补零。此时,基于标识符“01298”可以找到相对应的标识符为“01298”的用户存储空间。利用本公开的示例性实现方式,可以不断扩展标识符的格式,进而满足本地存储系统710中的存储容量的增加的需求。
在上文中已经参见图2至图8详细描述了根据本公开的方法的示例,在下文中将描述相应的装置的实现。根据本公开的示例性实现,提供了一种用于管理存储系统中的索引的装置。在此存储系统包括存储数据,并且该装置包括:获取模块,配置用于获取与存储数据相关联的第一组数据对象;确定模块,配置用于分别确定第一组数据对象的第一组哈希,第一组哈希中的哈希是第一组数据对象中的数据对象的哈希;生成模块,配置用于在存储系统中生成第一文件以存储第一组哈希,第一文件的第一名称是基于第一组哈希的哈希来确定的;以及创建模块,配置用于基于第一文件来创建存储数据的索引。根据本公开的示例性实现方式,该装置可以进一步包括用于执行方法300中的各个步骤的相应模块。
图9示意性示出了根据本公开的示例性实现的用于管理存储系统中的索引的设备900的框图。如图所示,设备900包括通用处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的计算机程序指令或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序指令,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。CPU 901、ROM902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300,可由处理单元901执行。例如,在一些实现中,方法300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实现中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序被加载到RAM 903并由CPU 901执行时,可以执行上文描述的方法300的一个或多个步骤。备选地,在其他实现中,CPU 901也可以以其他任何适当的方式被配置以实现上述过程/方法。
根据本公开的示例性实现,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行用于管理存储系统中的索引的动作。存储系统包括存储数据,并且该动作包括:获取与存储数据相关联的第一组数据对象;分别确定第一组数据对象的第一组哈希,第一组哈希中的哈希是第一组数据对象中的数据对象的哈希;在存储系统中生成第一文件以存储第一组哈希,第一文件的第一名称是基于第一组哈希的哈希来确定的;以及基于第一文件来创建存储数据的索引。
根据本公开的示例性实现方式,该动作进一步包括:将第一文件的类型设置为索引类型。
根据本公开的示例性实现方式,存储数据包括多个数据区块,以及获取与存储数据相关联的第一组数据对象包括:获取多个数据区块中的至少一部分以作为第一组数据对象。
根据本公开的示例性实现方式,在存储系统中生成第一文件以存储第一组哈希包括:根据预定组合规则,组合第一组哈希以生成第一文件内容;向第一文件中存储第一文件内容;以及将第一文件内容的哈希设置为第一文件的第一名称。
根据本公开的示例性实现方式,该动作进一步包括:获取与存储数据相关联的第二组数据对象;分别确定第二组数据对象的第二组哈希;在存储系统中生成第二文件以存储第二组哈希,第二文件的第二名称是基于第二组哈希的哈希来确定的;以及基于第一文件和第二文件来创建存储数据的索引。
根据本公开的示例性实现方式,基于第一文件和第二文件来创建存储数据的索引包括:在存储系统中生成第三文件以存储第一名称和第二名称的哈希;以及将第三文件标识为索引中的第一文件和第二文件的父节点。
根据本公开的示例性实现方式,在存储系统中生成第三文件以存储第一名称和第二名称的哈希包括:根据预定组合规则,组合第一名称和第二名称以生成第三文件内容;向第三文件中存储第三文件内容;以及将第三文件内容的哈希作为第三文件的名称。
根据本公开的示例性实现方式,该动作进一步包括:将第三文件标识为第一文件以迭代地执行方法,直到第三文件涉及存储数据中的全部数据区块;以及将第三文件标识为存储数据的索引的根文件。
根据本公开的示例性实现方式,该动作进一步包括:根据接收到访问存储数据的访问请求,读取根文件的文件内容;根据文件内容,分别确定根文件的一组子节点的一组文件名称;以及基于一组文件名称访问存储数据。
根据本公开的示例性实现方式,根据文件内容,分别确定根文件的一组子节点的一组文件名称包括:根据预定组合规则,分别确定根文件的一组子节点的一组文件名称。
根据本公开的示例性实现方式,基于一组文件名称访问存储数据包括:针对一组文件名称中的给定文件名称,访问具有给定文件名称的给定文件;以及根据确定给定文件的类型为索引类型,基于给定文件的文件内容,分别确定给定文件的一组子节点的一组子文件名称;以及基于一组子文件名称访问存储数据。
根据本公开的示例性实现方式,该动作进一步包括:根据确定给定文件的类型为数据类型,访问给定文件的文件内容,文件内容包括存储数据的多个数据区块中的一个数据区块。
根据本公开的示例性实现方式,该动作进一步包括:遍历根文件的全部子节点以访问存储数据的全部多个数据区块。
根据本公开的示例性实现方式,该动作进一步包括:基于存储数据相关的文件确定与文件相关联的路径标识符;以及向远程存储系统中的具有路径标识符的存储空间中存储文件。
根据本公开的示例性实现方式,该动作进一步包括:从远程存储系统中的具有路径标识符的存储空间中取回文件。
根据本公开的示例性实现,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的方法。
根据本公开的示例性实现,提供了一种计算机可读介质。计算机可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个处理器执行时,使得至少一个处理器实现根据本公开方法。
本公开可以是方法、设备、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实现的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各实现。

Claims (17)

1.一种用于管理存储系统中的索引的方法,所述存储系统包括存储数据,包括:
获取与所述存储数据相关联的第一组数据对象;
分别确定所述第一组数据对象的第一组哈希,所述第一组哈希中的哈希是所述第一组数据对象中的数据对象的哈希;
在所述存储系统中生成第一文件以存储所述第一组哈希,所述第一文件的第一名称是基于所述第一组哈希的哈希来确定的;以及
基于所述第一文件来创建所述存储数据的索引。
2.根据权利要求1所述的方法,进一步包括:将所述第一文件的类型设置为索引类型。
3.根据权利要求2所述的方法,其中所述存储数据包括多个数据区块,以及获取与所述存储数据相关联的所述第一组数据对象包括:
获取所述多个数据区块中的至少一部分以作为所述第一组数据对象。
4.根据权利要求3所述的方法,其中在所述存储系统中生成所述第一文件以存储所述第一组哈希包括:
根据预定组合规则,组合所述第一组哈希以生成第一文件内容;
向所述第一文件中存储所述第一文件内容;以及
将所述第一文件内容的哈希设置为所述第一文件的所述第一名称。
5.根据权利要求1所述的方法,进一步包括:
获取与所述存储数据相关联的第二组数据对象;
分别确定所述第二组数据对象的第二组哈希;
在所述存储系统中生成第二文件以存储所述第二组哈希,所述第二文件的第二名称是基于所述第二组哈希的哈希来确定的;以及
基于所述第一文件和所述第二文件来创建所述存储数据的所述索引。
6.根据权利要求5所述的方法,其中基于所述第一文件和所述第二文件来创建所述存储数据的所述索引包括:
在所述存储系统中生成第三文件以存储所述第一名称和所述第二名称的哈希;以及
将所述第三文件标识为所述索引中的所述第一文件和所述第二文件的父节点。
7.根据权利要求6所述的方法,其中在所述存储系统中生成所述第三文件以存储所述第一名称和所述第二名称的所述哈希包括:
根据预定组合规则,组合所述第一名称和所述第二名称以生成第三文件内容;
向所述第三文件中存储所述第三文件内容;以及
将所述第三文件内容的哈希作为所述第三文件的名称。
8.根据权利要求6所述的方法,进一步包括:
将所述第三文件标识为所述第一文件以迭代地执行所述方法,直到所述第三文件涉及所述存储数据中的全部数据区块;以及
将所述第三文件标识为所述存储数据的所述索引的根文件。
9.根据权利要求8所述的方法,进一步包括:
根据接收到访问所述存储数据的访问请求,读取所述根文件的文件内容;
根据所述文件内容,分别确定所述根文件的一组子节点的一组文件名称;以及
基于所述一组文件名称访问所述存储数据。
10.根据权利要求9所述的方法,其中根据所述文件内容,分别确定所述根文件的所述一组子节点的所述一组文件名称包括:
根据所述预定组合规则,分别确定所述根文件的所述一组子节点的所述一组文件名称。
11.根据权利要求9所述的方法,其中基于所述一组文件名称访问所述存储数据包括:针对所述一组文件名称中的给定文件名称,
访问具有所述给定文件名称的给定文件;
根据确定所述给定文件的类型为索引类型,基于所述给定文件的文件内容,分别确定所述给定文件的一组子节点的一组子文件名称;以及
基于所述一组子文件名称访问所述存储数据。
12.根据权利要求11所述的方法,进一步包括:
根据确定所述给定文件的类型为数据类型,访问所述给定文件的文件内容,所述文件内容包括所述存储数据的所述多个数据区块中的一个数据区块。
13.根据权利要求12所述的方法,进一步包括:遍历所述根文件的全部子节点以访问所述存储数据的全部所述多个数据区块。
14.根据权利要求8所述的方法,进一步包括:
基于所述存储数据相关的文件确定与所述文件相关联的路径标识符;以及
向远程存储系统中的具有所述路径标识符的存储空间中存储所述文件。
15.根据权利要求14所述的方法,进一步包括:从所述远程存储系统中的具有所述路径标识符的所述存储空间中取回所述文件。
16.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被所述至少一个处理器执行时使得所述设备执行用于管理存储系统中的索引的动作,所述动作用于执行根据权利要求1-15中的任一项所述的方法。
17.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令用于执行根据权利要求1-15中的任一项所述的方法。
CN202010231101.5A 2020-03-27 2020-03-27 管理存储系统中的索引的方法、设备和计算机程序产品 Active CN113448920B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010231101.5A CN113448920B (zh) 2020-03-27 2020-03-27 管理存储系统中的索引的方法、设备和计算机程序产品
US16/917,843 US11243932B2 (en) 2020-03-27 2020-06-30 Method, device, and computer program product for managing index in storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010231101.5A CN113448920B (zh) 2020-03-27 2020-03-27 管理存储系统中的索引的方法、设备和计算机程序产品

Publications (2)

Publication Number Publication Date
CN113448920A true CN113448920A (zh) 2021-09-28
CN113448920B CN113448920B (zh) 2024-05-31

Family

ID=77807993

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010231101.5A Active CN113448920B (zh) 2020-03-27 2020-03-27 管理存储系统中的索引的方法、设备和计算机程序产品

Country Status (2)

Country Link
US (1) US11243932B2 (zh)
CN (1) CN113448920B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024119504A1 (zh) * 2022-12-09 2024-06-13 华为技术有限公司 数据处理方法、装置、设备和系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102346747A (zh) * 2010-08-04 2012-02-08 鸿富锦精密工业(深圳)有限公司 在数据模型中查找参数的方法
US20120330904A1 (en) * 2011-06-27 2012-12-27 International Business Machines Corporation Efficient file system object-based deduplication
US20130227236A1 (en) * 2011-03-18 2013-08-29 Fusion-Io, Inc. Systems and methods for storage allocation
US20150370839A1 (en) * 2014-06-18 2015-12-24 International Business Machines Corporation Built-in search indexing for nas systems
US9645893B1 (en) * 2012-09-28 2017-05-09 EMC IP Holding Company LLP Method and system for file recovery using enhanced backup database indexing
WO2017099806A1 (en) * 2015-12-11 2017-06-15 Hewlett Packard Enterprise Development Lp Hash suppression
CN110109915A (zh) * 2018-01-18 2019-08-09 伊姆西Ip控股有限责任公司 用于管理哈希表的方法、设备和计算机程序产品
US20190278479A1 (en) * 2018-03-12 2019-09-12 Vmware, Inc. Detecting and managing collisions in storage
CN110413611A (zh) * 2019-06-24 2019-11-05 腾讯科技(深圳)有限公司 数据存储、查询方法及装置
CN110569213A (zh) * 2018-05-18 2019-12-13 北京果仁宝软件技术有限责任公司 文件存取方法、装置和设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625591B1 (en) * 2000-09-29 2003-09-23 Emc Corporation Very efficient in-memory representation of large file system directories
US8484505B1 (en) * 2010-09-30 2013-07-09 Emc Corporation Self recovery
US9195549B1 (en) * 2010-09-30 2015-11-24 Emc Corporation Unified recovery
US10545914B2 (en) * 2017-01-17 2020-01-28 Cisco Technology, Inc. Distributed object storage

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102346747A (zh) * 2010-08-04 2012-02-08 鸿富锦精密工业(深圳)有限公司 在数据模型中查找参数的方法
US20130227236A1 (en) * 2011-03-18 2013-08-29 Fusion-Io, Inc. Systems and methods for storage allocation
US20120330904A1 (en) * 2011-06-27 2012-12-27 International Business Machines Corporation Efficient file system object-based deduplication
US9645893B1 (en) * 2012-09-28 2017-05-09 EMC IP Holding Company LLP Method and system for file recovery using enhanced backup database indexing
US20150370839A1 (en) * 2014-06-18 2015-12-24 International Business Machines Corporation Built-in search indexing for nas systems
WO2017099806A1 (en) * 2015-12-11 2017-06-15 Hewlett Packard Enterprise Development Lp Hash suppression
CN110109915A (zh) * 2018-01-18 2019-08-09 伊姆西Ip控股有限责任公司 用于管理哈希表的方法、设备和计算机程序产品
US20190278479A1 (en) * 2018-03-12 2019-09-12 Vmware, Inc. Detecting and managing collisions in storage
CN110569213A (zh) * 2018-05-18 2019-12-13 北京果仁宝软件技术有限责任公司 文件存取方法、装置和设备
CN110413611A (zh) * 2019-06-24 2019-11-05 腾讯科技(深圳)有限公司 数据存储、查询方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024119504A1 (zh) * 2022-12-09 2024-06-13 华为技术有限公司 数据处理方法、装置、设备和系统

Also Published As

Publication number Publication date
CN113448920B (zh) 2024-05-31
US11243932B2 (en) 2022-02-08
US20210303538A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
CN109254733B (zh) 用于存储数据的方法、装置和系统
CN107077483B (zh) 共享文件夹和文件的同步
US9552382B2 (en) Reference counter integrity checking
US10089338B2 (en) Method and apparatus for object storage
CN110109915B (zh) 用于管理哈希表的方法、设备和计算机程序产品
US9325633B2 (en) Cache control for web application resources
US11200083B2 (en) Inexact reconstitution of virtual machine images
US20150186393A1 (en) Representing directory structure in content-addressable storage systems
WO2013109490A1 (en) Location independent files
CN106649676A (zh) 一种基于hdfs存储文件的去重方法及装置
US11281623B2 (en) Method, device and computer program product for data migration
CN110807028B (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN110674084A (zh) 用于数据保护的方法、设备和计算机可读存储介质
CN114327239A (zh) 存储和访问数据的方法、电子设备和计算机程序产品
CN113448920B (zh) 管理存储系统中的索引的方法、设备和计算机程序产品
US11675772B2 (en) Updating attributes in data
CN116049142A (zh) 数据处理方法、装置、电子设备及存储介质
CN111104787B (zh) 用于比较文件的方法、设备和计算机程序产品
CN112084006B (zh) 一种镜像包处理方法、装置及电子设备
CN113760861A (zh) 一种数据迁移的方法和装置
CN111562936B (zh) 基于Openstack-Swift的对象历史版本管理方法和装置
US20170337204A1 (en) Differencing engine for moving pictures
CN113760860B (zh) 一种数据读取方法和装置
CN112925671A (zh) 用于管理应用系统的方法、设备和计算机程序产品
CN118159954A (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