CN113448919A - 用于建立和验证索引文件的方法、设备和计算机程序产品 - Google Patents

用于建立和验证索引文件的方法、设备和计算机程序产品 Download PDF

Info

Publication number
CN113448919A
CN113448919A CN202010220619.9A CN202010220619A CN113448919A CN 113448919 A CN113448919 A CN 113448919A CN 202010220619 A CN202010220619 A CN 202010220619A CN 113448919 A CN113448919 A CN 113448919A
Authority
CN
China
Prior art keywords
authentication information
index file
determining
index
verification information
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
CN202010220619.9A
Other languages
English (en)
Other versions
CN113448919B (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 CN202010220619.9A priority Critical patent/CN113448919B/zh
Priority to US16/888,788 priority patent/US11513947B2/en
Publication of CN113448919A publication Critical patent/CN113448919A/zh
Application granted granted Critical
Publication of CN113448919B publication Critical patent/CN113448919B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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
    • 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/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开的实施例涉及用于建立和验证索引文件的方法、设备和计算机程序产品。建立索引文件的方法包括响应于接收到待存储的数据块,确定用于验证数据块的第一验证信息和用于存储数据块的第一存储地址。该方法还包括基于第一验证信息,确定针对数据块的索引项和用于存储索引项的第二存储地址,索引项包括第一验证信息和第一存储地址,并且索引项将被包括在索引文件中。该方法还包括基于索引项和第二存储地址,确定第二验证信息。该方法还包括基于第二验证信息和索引文件的历史验证信息,确定用于验证索引文件的第三验证信息。通过该方法,可以快速准确的得到索引文件的验证信息,减少了计算资源的使用,使得在验证索引文件时节省时间,提高验证效率。

Description

用于建立和验证索引文件的方法、设备和计算机程序产品
技术领域
本公开的实施例涉及数据处理领域,并且更具体地,涉及用于建立和验证索引文件的方法、设备和计算机程序产品。
背景技术
由于计算机技术的快速的发展,计算机应用的数量快速增加。随着计算机应用的增加,处理的数据量也快速的增加。通常,处理过的数据或生成的新数据需要由数据存储系统存储或保护。数据存储系统通常会保护用户有价值的数据,以使得有价值的数据变得更安全。在用户需要该数据时,可以经由数据存储系统重新获得该有价值的数据。
现在,服务商提供了大量的存储设备来存储数据。此时,服务商的服务器会从客户端和其他服务器接收数据,并且在存储入新的数据时会对数据进行各种处理。例如在服务器中运行的备份文件系统会用于管理接收到的数据。然而,在服务器处理数据的过程中还存在许多需要解决的问题。
发明内容
本公开的实施例提供一种建立和验证索引文件的方法、设备和计算机程序产品。
根据本公开的第一方面,提供了一种用于建立索引文件的方法。该方法包括响应于接收到待存储的数据块,确定用于验证数据块的第一验证信息和用于存储数据块的第一存储地址。该方法还包括基于第一验证信息,确定针对数据块的索引项和用于存储索引项的第二存储地址,索引项包括第一验证信息和第一存储地址,并且索引项将被包括在索引文件中。该方法还包括基于索引项和第二存储地址,确定第二验证信息。该方法还包括基于第二验证信息和索引文件的历史验证信息,确定用于验证索引文件的第三验证信息。
根据本公开的第二方面,提供了一种用于验证索引文件的方法。该方法包括响应于接收到对索引文件进行验证的请求,基于索引文件中的至少一个索引项的第一验证信息,确定用于存储至少一个索引项的第二存储地址,第一验证信息用于与至少一个索引项相对应的数据块。该方法还包括基于至少一个索引项和第二存储地址,确定第二验证信息。该方法还包括基于第二验证信息和用于验证索引文件的第三验证信息,确定索引文件的正确性。
根据本公开的第三方面,提供了一种电子设备。该电子设备包括处理器;以及存储器,存储有计算机程序指令,处理器运行存储器中的计算机程序指令控制电子设备执行动作,该动作包括响应于接收到待存储的数据块,确定用于验证数据块的第一验证信息和用于存储数据块的第一存储地址;基于第一验证信息,确定针对数据块的索引项和用于存储索引项的第二存储地址,索引项包括第一验证信息和第一存储地址,并且索引项将被包括在索引文件中;基于索引项和第二存储地址,确定第二验证信息;以及基于第二验证信息和索引文件的历史验证信息,确定用于验证索引文件的第三验证信息。
根据本公开的第四方面,提供了一种电子设备。该电子设备包括处理器;以及存储器,存储有计算机程序指令,处理器运行存储器中的计算机程序指令控制电子设备执行动作,该动作包括响应于接收到对索引文件进行验证的请求,基于索引文件中的至少一个索引项中的第一验证信息,确定用于存储至少一个索引项的第二存储地址,第一验证信息用于验证与至少一个索引项相对应的数据块;基于至少一个索引项和第二存储地址,确定第二验证信息;以及基于第二验证信息和用于验证索引文件的第三验证信息,确定索引文件的正确性。
根据本公开的第五方面,提供了一种计算机程序产品,该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,该机器可执行指令在被执行时使机器执行本公开的第一方面中的方法的步骤。
根据本公开的第六方面,提供了一种计算机程序产品,该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,该机器可执行指令在被执行时使机器执行本公开的第一方面中的方法的步骤。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1图示了在传统方案中建立的索引项与数据块的对应关系100的示意图;
图2图示了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境200的示意图;
图3图示了根据本公开的实施例的用于建立索引文件的方法300的流程图;
图4图示了根据本公开的实施例的用于验证索引文件方法400的流程图;
图5图示了根据本公开的实施例的用于验证索引文件500的流程图;
图6图示了适于用来实施本公开内容的实施例的示例设备600的示意性框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
在传统备份文件系统中,服务器通常会接收到待存储的数据块,例如从客户端接收要存储的文件。服务器会存储接收到的数据块并建立与数据块相对应的索引项存储在索引文件中。
图1图示了在传统方案中建立的索引项与数据块的对应关系的示意图。如图1所示,在服务器分别接收到数据块118、120、122和124后,服务器对数据块118、120、122和124分别进行哈希操作,生成与数据块118、120、122和124相对应的验证信息102、104、106和108,例如通过SAH-1算法对数据块118、120、122和124进行处理生成对应的哈希值。生成的验证信息102、104、106和108分别和数据块118、120、122和124的存储地址形成索引项110、112、114和116存储在索引文件中。
形成的索引项110、112、114和116在索引文件中的存储地址是对数据块的验证信息102、104、106和108进行哈希操作来确定的,例如通过哈希函数处理验证信息102、104、106和108来确定存储索引项110、112、114和116的偏移地址。如果确定的偏移地址内是没有其他索引项,则在该偏移地址存储该索引项,如索引项110存储在索引文件中的偏移地址1中,其中该偏移地址的表示形式仅是示例。如果由不同的数据块的验证信息确定的索引项在索引文件中的存储位置相同,则通过链表的方式把具有相同存储位置的索引项链接起来,例如形成桶。如图1所示索引项112、114和116在索引文件中的偏移地址为1026,在该偏移地址处形成链表来存储这些索引项。
在索引文件中存储完索引项后,由于会出现新的块数据和旧数据被删除的情况,索引项始终在变化。有时甚至需要重新映射整个索引文件,例如在索引文件拆分过程中。此外,硬盘有其生存期,服务器需要知道由坏磁盘引起的哪些数据丢失。因此,需要对数据块及索引文件进行正确性检查。
然而,在检查索引文件的过程中,服务器读取索引文件中的待验证索引项。例如读取的一个待验证索引项后,利用哈希函数处理待验证索引项中的数据块的验证信息。如果服务器确定待验证索引项在索引文件中的偏移地址1。此时,服务器从索引文件的偏移地址1取出索引项110,将该待验证索引项与索引项110进行比较来确定该待验证索引项是否正确。如果待验证索引项与新取出的索引项110相同,表明该待验证索引项正确,然后继续验证其它待验证索引项。如果未找到,说明索引文件中待验证的索引项与其在索引文件中的偏移地址不一致,则报告错误。如果服务器确定待验证索引项在索引文件中的偏移地址为1026。服务器在偏移地址1026内遍历链表来查找是否存在与待验证的索引项相匹配的索引项。由于在验证索引文件时需要对索引文件中的每个索引项进行上述操作过程,导致索引文件验证过程会花费很长的时间,使得处理器的处理效率较低。
为了解决上述和其他潜在的问题,本公开提出了一种用于建立和验证索引文件的方法。在建立索引文件的方法中服务器首先根据接收到的数据块,确定用于验证数据块的第一验证信息和用于存储数据块的第一存储地址。然后,服务器根据第一验证信息,确定针对数据块的索引项和用于存储索引项的第二存储地址。服务器再利用索引项和第二存储地址,确定第二验证信息。随后,服务器基于第二验证信息和索引文件的历史验证信息,确定用于验证索引文件的第三验证信息。第三验证信息被用于后续验证索引文件。通过上述方法,可以快速准确的得到索引文件的验证信息,减少了计算资源的使用,并且可使得在验证索引文件时不仅验证索引文件的正确性,还验证索引项的存储位置是否正确,节省了时间,提高了验证效率。
以下通过图2至图6详细描述根据本公开的实施例。图2图示了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境200的示意图。
如图2所示,示例环境200包括计算设备204。计算设备204接收数据块202,并管理数据块202的存储。在一些实施例中,数据块202是来自客户端的数据文件。在一些实施例中,数据块202是来自与计算设备204进行通信的其他服务器的数据文件。上述示例仅是用于描述本公开,而非对本公开的具体限定。
计算设备204接收到数据块202后,会生成用于验证数据块202的验证信息。在一些实施例中,计算设备204对数据块202执行哈希操作来生成与数据块202相对应的哈希值,例如执行SAH-1操作或MD5操作。在一些实施例中,计算设备204对数据块202的全部内容或部分内容执行其他特定操作来获得验证信息。上述示例仅是用于描述本公开,而非对本公开的具体限定。
计算设备204还会将数据块202存储在存储装置208中。在将数据块202存储到存储装置208之后,计算设备204会获得数块202在存储装置208中的存储地址。
在获得数据块202的存储地址后,计算设备204将数据块202的验证信息和数据块202的存储地址组成索引项212存储在索引文件206中。在索引文件206中存储索引项212时,计算设备204还会基于数据块202的验证信息来确定索引项212在索引文件206中的存储地址。例如通过对验证信息执行哈希函数操作来确定索引项212在索引文件206中的偏移地址。然后,计算设备204将索引项212存储在索引文件206的偏移地址处。
在存储索引项212时,如果在该存储地址处未存储有索引项,则将该索引项212存储在该位置。如果在该偏移地址处理已经存储有索引项,则可以形成与该存储地址相对应的一个新的链表项加入该存储地址处的链表。
图2中示出了索引文件206包括索引项212,其只是示例,而非对本公开的限定。在一些实施例中,在存储索引项212时,索引文件206中已经存储了一个或多个索引项。在一些实施例中,索引项212是索引文件206中的第一索引项。
与传统方案不同的是,索引文件206中除了存储索引项212之外,还存储由之前存储的索引项确定的索引文件206的历史验证信息210。在计算设备204在存储索引项212时,还需要对索引项212和索引项212的存储地址的组合执行哈希操作以生成第二验证信息。然后计算设备204将该第二验证信息与索引文件206中存储的针对索引文件206的历史验证信息210进行逻辑操作来生成第三验证信息,例如异或操作。
在一些实施例中,在索引项212是索引文件206的第一个索引项时,历史验证信息210为0。然后将索引项212的第二验证信息与历史验证信息210进行异或操作生成第三验证信息。将第三验证信息作为索引文件206的历史验证信息210存储在索引文件206中。在索引项212是索引文件206中的第二个索引项时,获取历史验证信息210。然后将索引项212的第二验证信息与历史验证信息210进行异或以生成第三验证信息。然后将第三验证信息作为历史验证信息210存储在索引文件206中。依次类推,针对每个新的索引项,都会利用新索引项的第二验证信息与历史验证信息210进行异或操作来更新历史验证信息210。上述示例仅是用于描述本公开,而非对本公开的具本限定。
在计算设备204对索引文件206进行验证时,计算设备204读取索引文件206中的所有索引项。然后针对每个索引项计算每个索引项的第二验证值。然后将所有的第二验证值进行逻辑操作来生成针对所述索引文件206的第二验证信息,例如异或操作。然后计算设备204还从索引文件206中获取历史验证信息210与第二验证信息进行匹配以确定索引文件206的正确性。
计算设备204包括但不限于个人计算机、服务器计算机、手持或膝上型设备、移动设备(诸如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费电子产品、小型计算机、大型计算机、包括上述系统或设备中的任意一个的分布式计算环境等。
在图2中示出了存储装置208是计算设备204外部的存储装置,其仅是示例,而非对本公开的具体限定。在其他示例中,计算设备204也可以包括存储装置208。备选地或附加地,索引文件206也存储在存储装置208中。
上面结合图2描述了根据本公开的实施例的设备和/或方法可以在其中被实施的环境200的示意图。下面结合图3描述根据本公开的实施例的用于建立索引文件的方法300的流程图。方法300可以在图2中的计算设备204或任何其他适当设备处执行。
在框302处,计算设备204确定是否接收到待存储的数据块202。在接收到数据块202时,在框304处,计算设备204确定用于验证数据块202的第一验证信息和用于存储数据块202的第一存储地址。
在一些实施例中,计算设备204对数据块202执行第一哈希操作以确定第一验证信息。例如,对数据块202执行SAH-1操作或MD-5操作以生成与数据块202对应的哈希值,该哈希值作为数据块202的验证信息。通过执行哈希操作,可以减少确定第一验证信息的时间。
在一些实施例中,生成的第一验证信息可用于验证数据块202。在验证数据块202时,计算设备204可对数据块202重新执行相同的哈希操作以生成新的验证信息。然后将新生成的验证信息与该第一验证信息进行匹配以确定数据块202是否正确。当新生成的验证信息与第一验证信息匹配时,表明数据块202正确,否则发出数据块202错误的消息。
在一些实施例中,计算设备204将数据块202存储在存储装置208上。计算设备204获得数据块202在存储装置208上的存储地址作为第一存储地址。
在框306处,计算设备204基于第一验证信息,确定针对数据块202的索引项212和用于存储索引项212的第二存储地址。在存储数据块202时,计算设备204需要在索引文件206中存储与该数据块202相应的数据项以用于管理该数据块202。计算设备204生成的索引项212包括第一验证信息和第一存储地址。
计算设备204还需要确定索引项212在索引文件206中的存储地址。在一些实例中,计算设备204对第一验证信息执行第二哈希操作。然后计算设备204基于第二哈希操作的结果,确定索引项212在索引文件206中的偏移地址。例如利用哈希函数处理第一验证信息来生成偏移地址。在确定了索引项212的偏移地址后,计算设备204可以将索引项212存储在索引文件206中的偏移地址处。在一些实施例中,计算设备204可以利用第一验证信息的一部分作为第二存储地址。上述示例仅是用于描述本公开,而非对本公开的具体限定。
通过利用哈希操作形成针对数据块的索引项的存储地址,可以快速准确的找到索引项,节省查找索引项的时间。
在框308处,计算设备204基于索引项212和第二存储地址,确定第二验证信息。第二验证信息将用于生成索引文件206的验证信息。
在一些实施例中,计算设备204进一步将第二存储地址包括在索引项212中,然后通过对索引项212中的第一验证信息、第一存储地址和第二验证信息执行第三哈希操作,生成第二验证信息。在一些实施例中,计算设备204将索引项212与第二存储地址组合,例如将第二存储地址附接到索引项212或将索引项212附接到第二存储地址。然后计算设备204对该组合执行第三哈希操作以生成第二验证信息。在一些实施例中,计算设备204直接将索引项212和第二存储地址组合作为第二验证信息。通过执行哈希操作,以上述示例可以快速方便的生成第二验证信息。上述示例仅是用于描述本公开,而非对本公开的具体限定。
在框310处,计算设备204基于第二验证信息和索引文件206的历史验证信息210,确定用于验证索引文件206的第三验证信息。
在一些实施例中,计算设备204对第二验证信息和历史验证信息210执行异或操作,生成第三验证信息。上面的操作可通过下式(1)来实现:
Figure BDA0002425939000000101
其中CEi表示索引文件206中的第i个索引项;offseti表示索引文件206中第i个索引项的偏移地址,+表示附接,HASH()表示计算用的哈希方法,其可以现有技术中的任意合适的哈希方法,EHi表示针对第i个索引项的索引哈希,该索引哈希为针对第i个索引项的第二验证信息,PHi-1表示在第i个索引项之前的索引文件206的历史验证信息210,PHi表示索引项i被存储在索引文件206之后的第三验证信息,该第三验证信息再用作索引文件206新的历史验证信息。在i为0时,表示索引文件206中没有索引项,历史验证信息210直接置为0。
在一些实施例中,计算设备204将第三验证信息包括在历史验证信息210中。在一些实施例中,计算设备204将第三验证信息存储在索引文件206的头部以替换历史验证信息210。上述示例仅是用于描述本公开,而非对本公开的具体限定。
通过上述方法,可以快速准确的得到索引文件的验证信息,减少了计算资源的使用,并且可使得在验证索引文件时不仅验证索引文件的正确性,还验证索引项的存储位置是否正确,节省了时间,提高了验证效率。
以上结合图3描述了根据本公开的实施例的用于建立索引文件的方法300。下面将结合图4来描述验证索引文件的过程。图4图示了根据本公开的实施例的用于验证索引文件的方法400的流程图。图4中的方法400可由图2中的计算设备204或任何其他适当设备执行。
在框402处,计算设备204确定是否接收到对索引文件206进行验证的请求。在一些实施例中,索引文件206会被定期验证。在一些实施例中,客户端会请求计算设备204对索引文件206进行验证。
在接收到对索引文件206进行验证的请求时,在框404处,计算设备204基于索引文件206中的至少一个索引项的第一验证信息,确定用于存储至少一个索引项的第二存储地址,第一验证信息用于验证与至少一个索引项相对应的数据块。由于索引项中存储了数据块的第一验证信息,因此可从索引项中直接确定出第一验证信息。计算设备204可对第一验证信息进行第二哈希操作来确定索引项的第二存储地址。
在框406处,计算设备204基于至少一个索引项和第二存储地址,确定第二验证信息。在一些实施例中,将索引项与其对应的第二存储地址组合在一起。例如,与存储索引项时相同,将第二存储地址附接在索引项之后,或将索引项附接在第二存储地址之后。
在一些实施例中,至少一个索引项包括多个索引项。计算设备204基于多个索引项和用于存储多个索引项的多个第二存储地址,生成多个验证值。然后,计算设备204通过对多个验证值执行异或操作,来确定第二验证信息。通过对多个验证值执行异或操作,可以加快验证的速度。
在框408处,计算设备204基于第二验证信息和用于验证索引文件206的第三验证信息,确定索引文件206的正确性。在确定索引文件206正确后,则不进行任何处理或报告索引文件206正确。如果确定索引文件206不正确,则需要报告错误。
在一些实施例中,计算设备204根据确定第二验证信息与第三验证信息匹配,确定索引文件206是正确的。在一些实施例中,计算设备204从索引文件206的头部获取第三验证信息。该第三验证信息是在如图3所示的在建立索引文件206过程中生成的历史验证信息。
通过上述方法,可以快速的对索引文件进行验证,同时还验证索引项的存储位置是否正确,提高了验证索引文件的效率,节省了大量的验证时间,改进了计算资源的使用率。
以上结合图4描述了根据本公开的实施例的用于验证索引文件的方法400。下面将结合图5来来进一步描述验证索引文件的过程。图5图示了根据本公开的实施例的用于验证索引文件的方法500的流程图。
在图5中,索引文件206中存储有索引项504-1、504-2、……、504-N-1和504-N,其中N为正整数,为了描述方便,统称为索引项504。在对索引文件206进行验证时,针对每个索引项504,计算设备204会对每个索引项504及其在索引文件206中的偏移地址执行哈希操作来获得对应的索引哈希506-1、506-2、……、506-N-1和506-N。然后计算设备204将索引哈希506-1、506-2、……、506-N-1和506-N进行异或操作生成第二验证信息508。然后计算设备204还将从索引文件206获取第三验证信息516。在图3中的索引项212被存储后执行索引文件206的验证时,该第三验证信息516为在如图3所示的方法中生成的作为新的历史验证信息的第三验证信息。
在获得了第二验证信息508和第三验证信息516之后,在框510处,计算设备204将第二验证信息508和第三验证信息516进行匹配。如果两个验证信息相匹配,在框512处,计算设备204确定索引文件206正确。如果两个验证信息不匹配,在框514处,计算设备204确定索引文件206错误。
图6示出了可以用来实施本公开内容的实施例的示例设备600的示意性框图。例如,如图2所示的计算设备204可以由设备600来实施。如图所示,设备600包括中央处理单元CPU 601,其可以根据存储在只读存储器ROM 602中的计算机程序指令或者从存储单元608加载到随机访问存储器RAM 603中的计算机程序指令,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出I/O接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300和400可由处理单元601执行。例如,在一些实施例中,方法300和400可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序被加载到RAM 603并由CPU 601执行时,可以执行上文描述的方法300和400的一个或多个动作。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子,非穷举的列表,包括:便携式计算机盘、硬盘、随机存取存储器RAM、只读存储器ROM、可擦式可编程只读存储器EPROM或闪存、静态随机存取存储器SRAM、便携式压缩盘只读存储器CD-ROM、数字多功能盘DVD、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波,例如,通过光纤电缆的光脉冲、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构ISA指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网LAN或广域网WAN—连接到用户计算机,或者,可以连接到外部计算机,例如利用因特网服务提供商来通过因特网连接。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列FPGA或可编程逻辑阵列PLA,该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置/系统和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (24)

1.一种用于建立索引文件的方法,包括:
响应于接收到待存储的数据块,确定用于验证所述数据块的第一验证信息和用于存储所述数据块的第一存储地址;
基于所述第一验证信息,确定针对所述数据块的索引项和用于存储所述索引项的第二存储地址,所述索引项包括所述第一验证信息和所述第一存储地址,并且所述索引项将被包括在索引文件中;
基于所述索引项和所述第二存储地址,确定第二验证信息;以及
基于所述第二验证信息和所述索引文件的历史验证信息,确定用于验证所述索引文件的第三验证信息。
2.根据权利要求1所述的方法,其中确定所述第一验证信息包括:
对所述数据块执行第一哈希操作以确定所述第一验证信息。
3.根据权利要求1所述的方法,其中确定所述第二存储地址包括:
对所述第一验证信息执行第二哈希操作;以及
基于所述第二哈希操作的结果,确定所述索引项在所述索引文件中的偏移地址。
4.根据权利要求1所述的方法,其中所述索引项还包括所述第二存储地址,并且确定所述第二验证信息包括:
通过对所述索引项中的所述第一验证信息、所述第一存储地址和所述第二验证信息执行第三哈希操作,生成所述第二验证信息。
5.根据权利要求1所述的方法,还包括:
将所述第三验证信息包括在所述历史验证信息中。
6.根据权利要求1所述的方法,其中确定所述第三验证信息包括:
通过对所述第二验证信息和所述历史验证信息执行异或操作,生成所述第三验证信息。
7.根据权利要求1所述的方法,还包括:
将所述第三验证信息存储在所述索引文件的头部。
8.一种用于验证索引文件的方法,包括:
响应于接收到对索引文件进行验证的请求,基于所述索引文件中的至少一个索引项中的第一验证信息,确定用于存储所述至少一个索引项的第二存储地址,所述第一验证信息用于验证与所述至少一个索引项相对应的数据块;
基于所述至少一个索引项和所述第二存储地址,确定第二验证信息;以及
基于所述第二验证信息和用于验证所述索引文件的第三验证信息,确定所述索引文件的正确性。
9.根据权利要求8所述的方法,所述至少一个索引项包括多个索引项,并且其中确定所述第二验证信息包括:
基于所述多个索引项和用于存储所述多个索引项的多个第二存储地址,生成多个验证值;以及
通过对所述多个验证值执行异或操作,来确定所述第二验证信息。
10.根据权利要求8所述的方法,其中确定所述索引文件的正确性包括:
根据确定所述第二验证信息与所述第三验证信息匹配,确定所述索引文件是正确的。
11.根据权利要求8所述的方法,还包括:
从所述索引文件的头部获取所述第三验证信息。
12.一种电子设备,所述电子设备包括:
处理器;以及
存储器,存储有计算机程序指令,处理器运行存储器中的所述计算机程序指令控制所述电子设备执行动作,所述动作包括:
响应于接收到待存储的数据块,确定用于验证所述数据块的第一验证信息和用于存储所述数据块的第一存储地址;
基于所述第一验证信息,确定针对所述数据块的索引项和用于存储所述索引项的第二存储地址,所述索引项包括所述第一验证信息和所述第一存储地址,并且所述索引项将被包括在索引文件中;
基于所述索引项和所述第二存储地址,确定第二验证信息;以及
基于所述第二验证信息和所述索引文件的历史验证信息,确定用于验证所述索引文件的第三验证信息。
13.根据权利要求12所述的电子设备,其中确定所述第一验证信息包括:
对所述数据块执行第一哈希操作以确定所述第一验证信息。
14.根据权利要求12所述的电子设备,其中确定所述第二存储地址包括:
对所述第一验证信息执行第二哈希操作;以及
基于所述第二哈希操作的结果,确定所述索引项在所述索引文件中的偏移地址。
15.根据权利要求12所述的电子设备,其中所述索引项还包括所述第二存储地址,并且确定所述第二验证信息包括:
通过对所述索引项中的所述第一验证信息、所述第一存储地址和所述第二验证信息执行第三哈希操作,生成所述第二验证信息。
16.根据权利要求12所述的电子设备,所述动作还包括:
将所述第三验证信息包括在所述历史验证信息中。
17.根据权利要求12所述的电子设备,其中确定所述第三验证信息包括:
通过对所述第二验证信息和所述历史验证信息执行异或操作,生成所述第三验证信息。
18.根据权利要求12所述的电子设备,所述动作还包括:
将所述第三验证信息存储在所述索引文件的头部。
19.一种电子设备,所述电子设备包括:
处理器;以及
存储器,存储有计算机程序指令,处理器运行存储器中的所述计算机程序指令控制所述电子设备执行动作,所述动作包括:
响应于接收到对索引文件进行验证的请求,基于所述索引文件中的至少一个索引项中的第一验证信息,确定用于存储所述至少一个索引项的第二存储地址,所述第一验证信息用于验证与所述至少一个索引项相对应的数据块;
基于所述至少一个索引项和所述第二存储地址,确定第二验证信息;以及
基于所述第二验证信息和用于验证所述索引文件的第三验证信息,确定所述索引文件的正确性。
20.根据权利要求19所述的电子设备,所述至少一个索引项包括多个索引项,并且其中确定所述第二验证信息包括:
基于所述多个索引项和用于存储所述多个索引项的多个第二存储地址,生成多个验证值;以及
通过对所述多个验证值执行异或操作,来确定所述第二验证信息。
21.根据权利要求19所述的电子设备,其中确定所述索引文件的正确性包括:
根据确定所述第二验证信息与所述第三验证信息匹配,确定所述索引文件是正确的。
22.根据权利要求19所述的电子设备,所述动作还包括:
从所述索引文件的头部获取所述第三验证信息。
23.一种计算机程序产品,所述计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至7中任一项所述的方法的步骤。
24.一种计算机程序产品,所述计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求8至11中任一项所述的方法的步骤。
CN202010220619.9A 2020-03-25 2020-03-25 用于建立和验证索引文件的方法、设备和计算机程序产品 Active CN113448919B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010220619.9A CN113448919B (zh) 2020-03-25 2020-03-25 用于建立和验证索引文件的方法、设备和计算机程序产品
US16/888,788 US11513947B2 (en) 2020-03-25 2020-05-31 Method, device and computer program product for building and verifying index file

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010220619.9A CN113448919B (zh) 2020-03-25 2020-03-25 用于建立和验证索引文件的方法、设备和计算机程序产品

Publications (2)

Publication Number Publication Date
CN113448919A true CN113448919A (zh) 2021-09-28
CN113448919B CN113448919B (zh) 2024-04-12

Family

ID=77807017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010220619.9A Active CN113448919B (zh) 2020-03-25 2020-03-25 用于建立和验证索引文件的方法、设备和计算机程序产品

Country Status (2)

Country Link
US (1) US11513947B2 (zh)
CN (1) CN113448919B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114880397A (zh) * 2022-04-28 2022-08-09 中国电信股份有限公司 去中心化的数据存储方法和装置、计算机介质、电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140289475A1 (en) * 2013-03-21 2014-09-25 Fujitsu Limited Cache memory device, information processing device, and cache memory control method
US20160371291A1 (en) * 2015-06-16 2016-12-22 Microsoft Corporation File storage system including tiers
US20170090910A1 (en) * 2015-09-29 2017-03-30 International Business Machines Corporation Mobile device application installation with performance enhancement
US20180260334A1 (en) * 2017-03-10 2018-09-13 Toshiba Memory Corporation Namespace - resizing
US20190220441A1 (en) * 2018-01-18 2019-07-18 EMC IP Holding Company LLC Method, device and computer program product for data migration
CN110493350A (zh) * 2019-08-27 2019-11-22 北京百度网讯科技有限公司 文件上传方法和装置、电子设备和计算机可读介质
US20200004540A1 (en) * 2018-06-29 2020-01-02 Western Digital Technologies, Inc. System and method for prediction of multiple read commands directed to non-sequential data

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102535828B1 (ko) * 2018-02-06 2023-05-23 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140289475A1 (en) * 2013-03-21 2014-09-25 Fujitsu Limited Cache memory device, information processing device, and cache memory control method
US20160371291A1 (en) * 2015-06-16 2016-12-22 Microsoft Corporation File storage system including tiers
US20170090910A1 (en) * 2015-09-29 2017-03-30 International Business Machines Corporation Mobile device application installation with performance enhancement
US20180260334A1 (en) * 2017-03-10 2018-09-13 Toshiba Memory Corporation Namespace - resizing
US20190220441A1 (en) * 2018-01-18 2019-07-18 EMC IP Holding Company LLC Method, device and computer program product for data migration
CN110109891A (zh) * 2018-01-18 2019-08-09 伊姆西Ip控股有限责任公司 用于数据迁移的方法、设备和计算机程序产品
US20200004540A1 (en) * 2018-06-29 2020-01-02 Western Digital Technologies, Inc. System and method for prediction of multiple read commands directed to non-sequential data
CN110493350A (zh) * 2019-08-27 2019-11-22 北京百度网讯科技有限公司 文件上传方法和装置、电子设备和计算机可读介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114880397A (zh) * 2022-04-28 2022-08-09 中国电信股份有限公司 去中心化的数据存储方法和装置、计算机介质、电子设备
CN114880397B (zh) * 2022-04-28 2024-04-26 中国电信股份有限公司 去中心化的数据存储方法和装置、计算机介质、电子设备

Also Published As

Publication number Publication date
CN113448919B (zh) 2024-04-12
US11513947B2 (en) 2022-11-29
US20210303458A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
US10754634B1 (en) Customized application package with context specific token
US8578174B2 (en) Event log authentication using secure components
CN110245518B (zh) 一种数据存储方法、装置及设备
US8650649B1 (en) Systems and methods for determining whether to evaluate the trustworthiness of digitally signed files based on signer reputation
KR20170134976A (ko) 소유 기반 사용자 식별 시스템의 증명
US10783277B2 (en) Blockchain-type data storage
CN111444547B (zh) 用于数据完整性证明的方法、设备及计算机存储介质
US11275835B2 (en) Method of speeding up a full antivirus scan of files on a mobile device
CN114661318A (zh) 针对资源受限设备定制的高效后量子安全软件更新
CN109255232B (zh) 一种软件加载方法以及软件加载装置
CN115248919A (zh) 一种函数接口的调用方法、装置、电子设备及存储介质
US11307790B2 (en) Method, device, and computer program product for managing data placement
US11269540B2 (en) Method, apparatus, and computer program product for managing application system
CN111209029A (zh) 一种代码修改确定方法、装置、电子设备及存储介质
CN113448919B (zh) 用于建立和验证索引文件的方法、设备和计算机程序产品
US11379215B1 (en) Application-update techniques
CN111858156A (zh) 镜像管理方法、装置及电子设备
CN114710297B (zh) 基于聚合签名的区块链存证方法、装置、设备及存储介质
CN115964721A (zh) 一种程序验证方法及电子设备
CN112966286B (zh) 用户登录的方法、系统、设备和计算机可读介质
CN111444535B (zh) 用于生成聚合数据标签的方法、设备及计算机存储介质
CN114117388A (zh) 设备注册方法、设备注册装置、电子设备以及存储介质
CN113515747A (zh) 设备升级方法、装置、设备及存储介质
Naeem et al. A framework to determine applications’ authenticity
CN111444548B (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