CN107301183B - 一种文件存储方法及装置 - Google Patents

一种文件存储方法及装置 Download PDF

Info

Publication number
CN107301183B
CN107301183B CN201610234765.0A CN201610234765A CN107301183B CN 107301183 B CN107301183 B CN 107301183B CN 201610234765 A CN201610234765 A CN 201610234765A CN 107301183 B CN107301183 B CN 107301183B
Authority
CN
China
Prior art keywords
stored
metadata
file
target key
key
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
CN201610234765.0A
Other languages
English (en)
Other versions
CN107301183A (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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology 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 Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN201610234765.0A priority Critical patent/CN107301183B/zh
Priority to PCT/CN2017/073202 priority patent/WO2017177754A1/zh
Priority to EP17781730.1A priority patent/EP3444730A4/en
Publication of CN107301183A publication Critical patent/CN107301183A/zh
Application granted granted Critical
Publication of CN107301183B publication Critical patent/CN107301183B/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/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • 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
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种文件存储方法及装置,应用于存储终端,该方法包括:接收针对待存储文件的存储请求,确定用于存储该待存储文件的目标键,根据所确定的目标键,获得该待存储文件的待存储元数据,将该待存储元数据存储至预设的元数据库以及所确定的目标键的名字中,并将该待存储文件存储至所确定的目标键的值中。应用本发明实施例,有效地保证了元数据的恢复,同时节约了存储终端的存储空间。

Description

一种文件存储方法及装置
技术领域
本发明涉及数据处理领域,特别涉及一种文件存储方法及装置。
背景技术
目前,在存储文件时,需要在存储终端中存储该文件的元数据,以便有数据访问需求时,存储终端根据元数据获得该文件。一旦元数据丢失,即使读取到数据,也不能区分出读取到的数据是属于哪些文件的,从而造成文件的损失。
为了避免文件的损失,常采用以下两种方法来存储文件:
第一种,备份元数据。在存储文件时,将该文件的元数据存储至元数据库中之后,再将该文件的元数据存储至备份元数据库中,当元数据库中的元数据丢失后,由备份元数据库中的元数据来恢复元数据库中丢失的元数据,从而避免了文件的损失。但是,这样虽然增强了元数据的安全性,能够保证元数据库中元数据的恢复,但是需要增加额外的存储空间去存储备份元数据库中的元数据,并且为了能够更为安全的恢复元数据库中的元数据,通常会在存储终端上建立多个备份元数据库,这样占用的存储终端的存储空间更多;
第二种,利用日志记录对元数据的操作。利用日志记录对元数据库中元数据的操作,如:何时存储了哪些元数据、何时删除了哪些元数据、何时更新了哪些元数据,这样就可以在元数据库中的元数据丢失后,利用日志中记录的对元数据的操作恢复元数据库中丢失的元数据,从而避免了文件的损失。但是,这样需要增加额外的存储空间去存储日志,占用过多的存储服务器的存储空间。
由以上可知,现有技术为了避免文件的损失,保证丢失的元数据能够恢复,都需要占用额外的存储空间,降低了存储终端对存储空间的有效利用率。
发明内容
本发明实施例公开了一种文件存储方法及装置,以保证元数据的恢复,同时节约存储终端的存储空间。
为达到上述目的,本发明实施例公开了一种文件存储方法,应用于存储终端,所述方法包括:
接收针对待存储文件的存储请求;
确定用于存储所述待存储文件的目标键;
根据所确定的目标键,获得所述待存储文件的待存储元数据;
将所述待存储元数据存储至预设的元数据库以及所确定的目标键的名字中,并将所述待存储文件存储至所确定的目标键的值中。
在本发明的一种实现方式中,在所确定的目标键为多个键的情况下,在所述根据所确定的目标键,获得所述待存储文件的待存储元数据之前,还包括:
根据所确定的目标键的数量,获得每一目标键要存储的所述待存储文件的文件块;
所述根据所确定的目标键,获得所述待存储文件的待存储元数据,包括:
获得每一目标键要存储的文件块的元数据,并将所获得的元数据确定为所述待存储文件的待存储元数据。
在本发明的一种实现方式中,所述获得每一目标键要存储的文件块的元数据,包括:
确定每一目标键要存储的文件块相对于所述待存储文件的文件头的偏移量;
根据每一目标键要存储的文件块相对于所述待存储文件的文件头的偏移量,获得该目标键要存储的文件块的元数据。
在本发明的一种实现方式中,所述方法还包括:
在所述预设的元数据库存在元数据丢失的情况下,根据所有键的名字中存储的元数据,更新所述预设的元数据库。
在本发明的一种实现方式中,所述待存储元数据包含所述待存储文件的标识;
所述根据所有键的名字中存储的元数据,更新所述预设的元数据库,包括:
获得元数据丢失的文件的标识;
根据所获得的标识和所有键的名字中存储的元数据,确定包含所获得的标识的键;
根据所确定的键的名字中存储的元数据,更新所述预设的元数据库。
为达到上述目的,本发明实施例还公开了一种文件存储装置,应用于存储终端,所述装置包括:存储请求接收模块、目标键确定模块、元数据获得模块和数据存储模块;
其中,所述存储请求接收模块,用于接收针对待存储文件的存储请求;
所述目标键确定模块,用于确定用于存储所述待存储文件的目标键;
所述元数据获得模块,用于根据所确定的目标键,获得所述待存储文件的待存储元数据;
所述数据存储模块,用于将所述待存储元数据存储至预设的元数据库以及所确定的目标键的名字中,并将所述待存储文件存储至所确定的目标键的值中。
在本发明的一种实现方式中,在所确定的目标键为多个键的情况下,所述装置还包括:文件块获得模块,用于:
根据所确定的目标键的数量,获得每一目标键要存储的所述待存储文件的文件块
所述元数据获得模块,具体用于:
获得每一目标键要存储的文件块的元数据,并将所获得的元数据确定为所述待存储文件的待存储元数据。
在本发明的一种实现方式中,所述元数据获得模块,包括:偏移量确定子模块和元数据获得子模块;
所述偏移量确定子模块,用于确定每一目标键要存储的文件块相对于所述待存储文件的文件头的偏移量;
所述元数据获得子模块,用于根据每一目标键要存储的文件块相对于所述待存储文件的文件头的偏移量,获得该目标键要存储的文件块的元数据。
在本发明的一种实现方式中,所述装置还包括:元数据库更新模块;
其中,所述元数据库更新模块,用于在所述预设的元数据库存在元数据丢失的情况下,根据所有键的名字中存储的元数据,更新所述预设的元数据库。
在本发明的一种实现方式中,所述待存储元数据包含所述待存储文件的标识;
所述元数据库更新模块,包括:标识获得子模块、键确定子模块和数据库更新子模块;
其中,所述标识获得子模块,用于获得元数据丢失的文件的标识;
所述键确定子模块,用于根据所获得的标识和所有键的名字中存储的元数据,确定包含所获得的标识的键;
所述数据库更新子模块,用于根据所获得的键的名字中存储的元数据,更新所述预设的元数据库。
由上可知,在本发明实施例中,存储终端在接收到针对待存储文件的存储请求后,获得该待存储文件待存储元数据,在将该待存储元数据存储至元数据库中同时,将该待存储元数据存储在目标键的名字中,并将待存储文件存储至目标键的值中。这样,在元数据库存在元数据丢失的情况下,就可以根据键的名字中存储的元数据来恢复元数据库中的元数据,保证了元数据的恢复,并且将元数据存储在键的名字原本就占用的固定存储空间中,不会占用额外的存储空间,进而节约了存储终端的存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种文件存储方法的流程示意图;
图2为本发明实施例提供的另一种文件存储方法的流程示意图;
图3为本发明实施例提供的另一种文件存储方法的流程示意图;
图4为本发明实施例提供的一种文件存储装置的结构示意图;
图5为本发明实施例提供的另一种文件存储装置的结构示意图;
图6为本发明实施例提供的另一种文件存储装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面通过具体实施例,对本发明进行详细说明。
参考图1,图1为本发明实施例提供的一种文件存储方法的流程示意图,应用于存储终端,该方法可以包括如下步骤:
S101:接收针对待存储文件的存储请求;
这里,存储请求中包含待存储文件,还可以包含该待存储文件的标识,以便于存储终端快速获得该待存储文件的标识,进而存储该待存储文件的元数据;或者,存储请求也可以不包含该待存储文件的标识,存储终端可以解析待存储文件以获得该待存储文件的标识,这样存储请求更为简单明了。
S102:确定用于存储待存储文件的目标键;
在本发明的一种实施方式中,具备高可靠性及可扩展性的海量数据存储对互联网公司来说是一个巨大的挑战,传统的数据库往往很难满足该需求,在这种情况下使用关系型数据库将使得存储和读取数据的效率低下,并且扩展数据库也将成为很大的难题。在这样的情况下,使用键存储将会是一个很好的选择。键存储具有以下优点:
1、Availability可用性;
2、Scalability可扩展性;
3、Failover故障恢复;
4、Performance高性能。
键由名字Key和值Value组成,并且Key和Value占用的存储空间均是是固定的。
具体地,每个键的值能够存储的数据量D1是固定的,但是需要存储的文件的数据量D2是不固定的,当待存储文件的数据量D2大于键的值能够存储的数据量D1时,就需要2个、3个或更多个目标键来存储该待存储文件。
在本发明的一种实施方式中,可以根据待存储文件的数据量和键的值能够存储的数据量,计算得到所需的目标键的数量。具体的,由待存储文件的数据量D2除以每个键的值能够存储的数据量D1,获得商,对获得的商取整后再加1,就可以得到需要获得的目标键的个数。如:待存储文件的数据量D2为1.2M,每个键的值能够存储的数据量D1为1M,1.2/1=1.2,取整后得到1,再加1获得2,此时可以确定需要获得的用于存储该待存储文件的目标键的个数为2。
确定了目标键的数量后,可以进一步确定用于存储待存储文件的目标键。在本发明的一种实施方式中,可以从上一次存储数据后数据的末尾存储位置,向后查找所需的目标键的数量个空闲的键作为目标键。假设,当前存储终端中有5个键,分别为a、b、c、d、e,上一次存储数据后数据的末尾存储位置在a中,并且c中存储了数据,确定的目标键的数量为2,则从a向后查找空闲的键,进而可以确定目标键为b和d。
S103:根据所确定的目标键,获得待存储文件的待存储元数据;
具体地,待存储文件的元数据一般包括:该待存储文件的标识、该待存储文件的数据量和该待存储文件的存储位置等。
由于确定了目标键后,也就确定了待存储文件的存储位置,所以可以根据上述目标键获得待存储文件的元数据,也就是上述的待存储元数据。
在本发明的一种实现方式中,在确定用于存储待存储文件的目标键包含多个键的情况下,在根据所确定的目标键,获得待存储文件的待存储元数据之前,还可以包括:
根据所确定的目标键的数量,获得每一目标键要存储的待存储文件的文件块。
具体地,一个目标键对应一个文件块,而文件块为待存储文件的一段数据,也就是说,一个目标键对应待存储文件的一段数据。如:一个待存储文件的数据量为1M,目标键的个数为2,可以获得该待存储文件的2个文件块,每个文件块的数据量为0.5M,也就是说,每个目标键对应0.5M的该待存储文件的数据。在本发明的一种实施方式中,获取待存储文件获得文件块时,每一文件块的大小并不一定是都相同的。例如,在确定了用于存储待存储文件的目标键后,从待存储文件中依次获得若干个数据量为D1的文件块(D1为每一目标键能够存储的数据量),若最后获得的文件块A的数据量D3小于数据量D1,则可以直接将该文件块A确定为一目标键对应的文件块。
假设,待存储文件的数据量D2为1.2M,每一目标键能够存储的数据量D1为1M,那么可以确定目标键的数量为2,从上一次数据存储对应的键向后查找两个空闲的键作为目标键,假设,查找到的两个空闲键的名字分别为Key1和Key2,则可以从该待存储文件中获得与名字为Key1的键对应的1M的文件块和与名字为Key2的键对应的0.2M的文件块。
在本发明的一种实现方式中,存储终端可以根据目标键的数量,直接将待存储文件分割为目标键的数量个文件块,其中,每一文件块的数据量D3不大于每一目标键能够存储的数据量D1,此时,可以直接获取文件块,并将获取的文件块存储至对应的目标键中。
这种情况下,上述根据所确定的目标键,获得待存储文件的待存储元数据,可以包括:
获得每一目标键要存储的文件块的元数据,并将所获得的元数据确定为待存储文件的待存储元数据。
具体地,在确定的目标键包含多个键的情况下,待存储文件会以文件块的形式存储在多个键中,这种情况下,每一文件块均会对应具体的存储位置,且各个文件块的存储位置可能不是连续的。另外,由于每一文件块相对于待存储文件的文件头的偏移量不同,待存储文件的待存储元数据中不仅包括各个文件块的存储位置信息,还包括文件块相对于待存储文件文件头的偏移量信息,这样,就可以保证从存储设备中读取出文件的各个文件块后,能够对这些文件块进行正确组合,得到完整的文件。
这种情况下,由于该文件块为待存储文件的一部分,因此,可以获得每一目标键的值中存储的文件块的元数据,将所获得的元数据作为待存储文件的待存储元数据的一部分,该待存储文件的所有文件块的元数据组成该待存储文件的完整的待存储元数据。
需要说明的是,文件块的元数据可以包括:该文件块所属待存储文件的标识、存储该文件块的域的标识、该文件块在该待存储文件中的偏移量和该文件块的数据量。其中,上述存储该文件块的域的标识为该待存储文件在存储终端中的附加属性,每个存储终端中包含多个域,一个域也可以包含多个存储终端,待存储文件的文件块可以被存储在若干个域中,有了存储文件块的域的标识,在读取文件时就能够更为准确快速地获得该文件块;另外,上述文件块在待存储文件中的偏移量为:该文件块相对于该待存储文件文件头的偏移量,如上述假设中,名字为Key2的键的值中存储的文件块在待存储文件中的偏移量为1M。
在发明的一种实现方式中,上述获得每一目标键要存储的文件块的元数据,可以包括:
S1、确定每一目标键要存储的文件块相对于待存储文件的文件头的偏移量;
在本发明的一种实施方式中,确定每一目标键要存储的文件块相对于待存储文件的文件头的偏移量,可以包括:
计算目标键X要存储的文件块F相对于待存储文件文件头的偏移量,其中,目标键X为:待存储文件对应的若干目标键中的任一键。
文件块相对于该待存储文件文件头的偏移量也是该待存储文件的待存储元数据的一部分,存储该偏移量后,存储终端就可以在读取文件时,根据该偏移量准确的获得该文件的文件块,并以正确的顺序将存储在多个键中的、属于同一个文件的文件块组成完整正确的文件。
S2、根据每一目标键要存储的文件块相对于待存储文件的文件头的偏移量,获得该目标键要存储的文件块的元数据。
在本发明的一种实施方式中,在确定了文件块F相对于待存储文件的文件头的偏移量之后,结合待存储文件的标识、文件块F的数据量和存储该文件块F的域的标识等元数据信息,获得该目标键X的值要存储的文件块F的元数据。
S104:将待存储元数据存储至预设的元数据库以及所确定的目标键的名字中,并将待存储文件存储至所确定的目标键的值中。
这里,预设的元数据库,用于存储文件的元数据。
具体地,存储终端将待存储文件存储至目标键的值中的同时,将待存储元数据存储至预设的元数据库以及目标键的名字中。这样,在进行数据访问时,就可以根据元数据库中的元数据进行数据访问了。另外,将待存储元数据存储在目标键的名字中,这样就可以在元数据库存在元数据丢失的情况下,根据键的名字中存储的元数据来恢复元数据库中的元数据了。由于每个键的名字所占的存储空间是固定的,不管每个键的名字对应的存储空间是否被信息存满,均会占用固定的存储空间,因此将待存储元数据存储在目标键的名字中,既备份了文件的元数据,又不会占用额外的存储空间,进而变相节约了存储终端的存储空间。
需要说明的是,上述存储待存储文件的步骤可以与存储待存储元数据的步骤同时执行,也可以在存储待存储元数据之前S102之后执行,或者,也可以在存储待存储元数据之后执行,本申请并不对此进行限定。
在本发明的一种实现方式中,在目标键包含多个键时,键的命名规则可以为:[文件的标识]_[该文件所在域的标识]_[键的值中存储的文件块相对于该文件文件头的偏移量]_[键的值中存储的该文件的文件块的数据量]。在一个实施例中,根据步骤S103中的描述,可以参考表1对键进行命名,表1为原键的名字与本发明实施例中键的名字的对比。
表1
原键的名字 本发明实施例中键的名字
key1 [file1]_[1]_[0]_[len_in_key1]
key2 [file1]_[1]_[len_in_key1]_[len_in_key2]
其中,第一个键的原名为key1,第二个键的原名为key2;
在本发明实施例的键的名字中,[file1]为文件A的标识;[1]为存储该文件A的域的标识,表示文件A被存储在域1中;
在本发明实施例的第一个键(原名为key1的键)中,[0]为键的值中存储的文件块相对于该文件A文件头的偏移量,因为第一个键是从文件A文件头开始存储文件A的一个文件块的,所以第一个键的偏移量为0;[len_in_key1]表示在第一个键的值中存储的文件块的数据量;
在本发明实施例的第二个键(原名为key2的键)中,[len_in_key1]为键的值中存储的文件块相对于该文件A文件头的偏移量,因为在第一个键中已经存储了数据量为[len_in_key1]的文件块,因此,第二个键的偏移量为[len_in_key1];[len_in_key2]表示在第二个键中存储的文件块的数据量。
由上可以看出,键的名中存储了元数据库中需要的元数据,当元数据库存储元数据丢失的情况下,就可以根据键的名中存储的元数据恢复元数据了。
在本发明的一种实现方式中,按照文件块的起始存储位置相对于待存储文件的文件头的偏移量由小到大的顺序,依次存储至目标键中,这样避免待存储文件的某一文件块未能成功存储的问题;另外,将文件块存储至目标键中时,按照目标键的物理地址或逻辑地址由小到大的顺序依次存储文件块,这样在读取该待存储文件时,便于存储终端快速获得该待存储文件的文件块。
另外,存储终端在成功存储了待存储文件后,再存储该待存储文件的元数据,保证了元数据库中的元数据的准确性,避免出现未成功存储待存储文件,却存储了该待存储文件的元数据,进而导致存储终端不能正确读取元数据库中的元数据数据,出现存储终端崩溃等问题。
应用图1所示实施例,存储终端在接收到针对待存储文件的存储请求后,获得该待存储文件待存储元数据,在将该待存储元数据存储至元数据库中同时,将该待存储元数据存储在目标键的名字中,并将待存储文件存储至目标键的值中。这样,在元数据库存在元数据丢失的情况下,就可以根据键的名字中存储的元数据来恢复元数据库中的元数据,保证了元数据的恢复,并且将元数据存储在键的名字原本就占用的固定存储空间中,不会占用额外的存储空间,进而节约了存储终端的存储空间。
参考图2,图2为本发明实施例提供的另一种文件存储方法的流程示意图,应用于存储终端,该方法还可以包括如下步骤:
S105:在预设的元数据库存在元数据丢失的情况下,根据所有键的名字中存储的元数据,更新该预设的元数据库。
在本发明的一种实现方式中,每次元数据库更新了存储的元数据后,都获得一个第一校验值,在下一次存储元数据之前可以再次获得一个第二校验值,当第一校验值和第二校验值不同时,就可以判定元数据库存在元数据丢失。在本发明的一种实施方式中,可以根据CRC(Cyclic Redundancy Check)校验算法或其他校验算法来获得校验值。
在本发明的一种实现方式中,当确定元数据库存在元数据丢失时,可以根据所有键的名字中存储的文件的标识、在键的值中存储的文件块的起始位置与该文件的文件头间的偏移量、该文件所在的域的标识、该文件在键的值中存储的文件块的数据量等信息,获得元数据信息,用获得的元数据信息替换元数据库中的全部原有数据,这样就能更新元数据库,保证了元数据库中元数据的恢复,避免了文件损失。
需要说明的是,步骤S105可以发生在步骤S101、S102、S103和S104中的任一步骤之前,也可以发生在步骤S101、S102、S103和S104中的任一步骤之后,还可以与步骤S101、S102、S103和S104中的任一步骤同时发生,本发明对此不进行限定。
应用图2所示实施例,存储终端在预设的元数据库存在元数据丢失的情况下,根据所有键的名字中存储的元数据信息,更新预设的元数据库,能够有效地恢复元数据库中的元数据,避免了文件损失。
参考图3,图3为本发明实施例提供的另一种文件存储方法的流程示意图,应用于存储终端,该方法中,步骤S105可以包括:
S1051:在预设的元数据库存在元数据丢失的情况下,获得元数据丢失的文件的标识;
在本发明的一种实施方式中,元数据库中丢失的元数据可能仅仅只是一小部分,此时,若全部更新元数据库中存储的元数据,将会增加存储终端的工作量,并且导致元数据的恢复速度慢。若只更新元数据库中丢失的元数据,将会大大减少存储终端的工作量,并且使得元数据的恢复速度加快。
在本发明的一个实施例中,当存储终端针对某一文件进行读取时,若不能够读取到该文件,则可以判定该文件在元数据库中的元数据丢失,进而获得该文件的标识。在本发明的一种可选实现方式中,该文件的标识可以从针对该文件的读取请求中获得。
S1052:根据S1051中所获得的标识和所有键的名字中存储的元数据,确定包含所获得的标识的键;
在本发明的一个实施例中,元数据中包含文件的标识,可以读取所有键的名字中存储的元数据,判断读取到的元数据是否包含元数据丢失的文件的标识,若一个键的名字中存储的元数据包含该文件的标识,则获得该键,并将该键确定为包含该文件的标识的键。
S1053:根据所确定的键的名字中存储的元数据,更新预设的元数据库。
在本发明的一个实施例中,在确定出包含元数据的键后,就可以根据键的命名规则(如步骤S104中提到的键的命名规则)获得该键的值中存储的文件或文件块的元数据,进而将获得的元数据对应该文件的标识存入元数据库中,更新元数据库中的元数据。
应用图3所示实施例,在预设的元数据库存在元数据丢失的情况下,存储终端只需要获得元数据丢失的文件的标识,根据所获得的标识和所有键的名字中存储的元数据,确定包含所获得的标识的键,根据所获得的键的名字中存储的元数据,对应该文件的标识更新预设的元数据库就可以了,减少了存储终端的工作量,提高了元数据库更新的效率。
参考图4,图4为本发明实施例提供的一种文件存储装置的结构示意图,应用于存储终端,该装置包括:存储请求接收模块401、目标键确定模块402、元数据获得模块403和数据存储模块404;
其中,存储请求接收模块401,用于接收针对待存储文件的存储请求;
目标键确定模块402,用于确定用于存储待存储文件的目标键;
元数据获得模块403,用于根据所确定的目标键,获得待存储文件的待存储元数据;
数据存储模块404,用于将待存储元数据存储至预设的元数据库以及所确定的目标键的名字中,并将待存储文件存储至所确定的目标键的值中。
在本发明的一种实现方式中,在所确定的目标键为多个键的情况下,上述文件存储装置还可以包括:文件块获得模块(图4中未示出),用于:
根据所确定的目标键的数量,获得每一目标键要存储的待存储文件的文件块;
这种情况下,元数据获得模块403,具体用于:
获得每一目标键要存储的文件块的元数据,并将所获得的元数据确定为待存储文件的待存储元数据。
在本发明的一种实现方式中,元数据获得模块403,可以包括:偏移量确定子模块和元数据获得子模块(图4中未示出);
偏移量确定子模块,用于确定每一目标键要存储的文件块相对于待存储文件的文件头的偏移量;
元数据获得子模块,用于根据每一目标键要存储的文件块相对于待存储文件的文件头的偏移量,获得该目标键要存储的文件块的元数据。
应用图4所示实施例,存储终端在接收到针对待存储文件的存储请求后,获得该待存储文件待存储元数据,在将该待存储元数据存储至元数据库中同时,将该待存储元数据存储在目标键的名字中,并将待存储文件存储至目标键的值中。这样,在元数据库存在元数据丢失的情况下,就可以根据键的名字中存储的元数据来恢复元数据库中的元数据,保证了元数据的恢复,并且将元数据存储在键的名字原本就占用的固定存储空间中,不会占用额外的存储空间,进而节约了存储终端的存储空间。
参考图5,图5为本发明实施例提供的另一种文件存储装置的结构示意图,应用于存储终端,该装置还可以包括:元数据库更新模块405;
其中,元数据库更新模块405,用于在预设的元数据库存在元数据丢失的情况下,根据所有键的名字中存储的元数据,更新预设的元数据库。
应用图5所示实施例,存储终端在预设的元数据库存在元数据丢失的情况下,根据所有键的名字中存储的元数据信息,更新预设的元数据库,能够有效地恢复元数据库中的元数据,避免了文件损失。
参考图6,图6为本发明实施例提供的另一种文件存储装置的结构示意图,应用于存储终端,待存储元数据包含待存储文件的标识,该装置中,元数据库更新模块405,可以包括:标识获得子模块4051、键确定子模块4052和数据库更新子模块4053;
其中,标识获得子模块4051,用于获得元数据丢失的文件的标识;
键确定子模块4052,用于根据所获得的标识和所有键的名字中存储的元数据,确定包含所获得的标识的键;
数据库更新子模块4053,用于根据所获得的键的名字中存储的元数据,更新预设的元数据库。
应用图6所示实施例,在预设的元数据库存在元数据丢失的情况下,存储终端只需要获得元数据丢失的文件的标识,根据所获得的标识和所有键的名字中存储的元数据,确定包含所获得的标识的键,根据所获得的键的名字中存储的元数据,对应该文件的标识更新预设的元数据库就可以了,减少了存储终端的工作量,提高了元数据库更新的效率。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种文件存储方法,应用于存储终端,其特征在于,所述方法包括:
接收针对待存储文件的存储请求;
确定用于存储所述待存储文件的目标键;
根据所确定的目标键,获得所述待存储文件的待存储元数据;
将所述待存储元数据存储至预设的元数据库以及所确定的目标键的名字中,并将所述待存储文件存储至所确定的目标键的值中。
2.根据权利要求1所述的方法,其特征在于,在所确定的目标键为多个键的情况下,在所述根据所确定的目标键,获得所述待存储文件的待存储元数据之前,还包括:
根据所确定的目标键的数量,获得每一目标键要存储的所述待存储文件的文件块;
所述根据所确定的目标键,获得所述待存储文件的待存储元数据,包括:
获得每一目标键要存储的文件块的元数据,并将所获得的元数据确定为所述待存储文件的待存储元数据。
3.根据权利要求2所述的方法,其特征在于,所述获得每一目标键要存储的文件块的元数据,包括:
确定每一目标键要存储的文件块相对于所述待存储文件的文件头的偏移量;
根据每一目标键要存储的文件块相对于所述待存储文件的文件头的偏移量,获得该目标键要存储的文件块的元数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述预设的元数据库存在元数据丢失的情况下,根据所有键的名字中存储的元数据,更新所述预设的元数据库。
5.根据权利要求4所述的方法,其特征在于,所述待存储元数据包含所述待存储文件的标识;
所述根据所有键的名字中存储的元数据,更新所述预设的元数据库,包括:
获得元数据丢失的文件的标识;
根据所获得的标识和所有键的名字中存储的元数据,确定包含所获得的标识的键;
根据所确定的键的名字中存储的元数据,更新所述预设的元数据库。
6.一种文件存储装置,应用于存储终端,其特征在于,所述装置包括:存储请求接收模块、目标键确定模块、元数据获得模块和数据存储模块;
其中,所述存储请求接收模块,用于接收针对待存储文件的存储请求;
所述目标键确定模块,用于确定用于存储所述待存储文件的目标键;
所述元数据获得模块,用于根据所确定的目标键,获得所述待存储文件的待存储元数据;
所述数据存储模块,用于将所述待存储元数据存储至预设的元数据库以及所确定的目标键的名字中,并将所述待存储文件存储至所确定的目标键的值中。
7.根据权利要求6所述的装置,其特征在于,在所确定的目标键为多个键的情况下,所述装置还包括:文件块获得模块,用于:
根据所确定的目标键的数量,获得每一目标键要存储的所述待存储文件的文件块
所述元数据获得模块,具体用于:
获得每一目标键要存储的文件块的元数据,并将所获得的元数据确定为所述待存储文件的待存储元数据。
8.根据权利要求7所述的装置,其特征在于,所述元数据获得模块,包括:偏移量确定子模块和元数据获得子模块;
所述偏移量确定子模块,用于确定每一目标键要存储的文件块相对于所述待存储文件的文件头的偏移量;
所述元数据获得子模块,用于根据每一目标键要存储的文件块相对于所述待存储文件的文件头的偏移量,获得该目标键要存储的文件块的元数据。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:元数据库更新模块;
其中,所述元数据库更新模块,用于在所述预设的元数据库存在元数据丢失的情况下,根据所有键的名字中存储的元数据,更新所述预设的元数据库。
10.根据权利要求9所述的装置,其特征在于,所述待存储元数据包含所述待存储文件的标识;
所述元数据库更新模块,包括:标识获得子模块、键确定子模块和数据库更新子模块;
其中,所述标识获得子模块,用于获得元数据丢失的文件的标识;
所述键确定子模块,用于根据所获得的标识和所有键的名字中存储的元数据,确定包含所获得的标识的键;
所述数据库更新子模块,用于根据所获得的键的名字中存储的元数据,更新所述预设的元数据库。
CN201610234765.0A 2016-04-14 2016-04-14 一种文件存储方法及装置 Active CN107301183B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201610234765.0A CN107301183B (zh) 2016-04-14 2016-04-14 一种文件存储方法及装置
PCT/CN2017/073202 WO2017177754A1 (zh) 2016-04-14 2017-02-10 一种文件存储方法及装置
EP17781730.1A EP3444730A4 (en) 2016-04-14 2017-02-10 DATA STORAGE METHOD AND DEVICE

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610234765.0A CN107301183B (zh) 2016-04-14 2016-04-14 一种文件存储方法及装置

Publications (2)

Publication Number Publication Date
CN107301183A CN107301183A (zh) 2017-10-27
CN107301183B true CN107301183B (zh) 2020-02-18

Family

ID=60042241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610234765.0A Active CN107301183B (zh) 2016-04-14 2016-04-14 一种文件存储方法及装置

Country Status (3)

Country Link
EP (1) EP3444730A4 (zh)
CN (1) CN107301183B (zh)
WO (1) WO2017177754A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102298641A (zh) * 2011-09-14 2011-12-28 清华大学 一种基于键值库的文件与结构化数据统一存储方法
CN103327052A (zh) * 2012-03-22 2013-09-25 深圳市腾讯计算机***有限公司 数据存储方法和***以及数据访问方法和***
CN103699585A (zh) * 2013-12-06 2014-04-02 华为技术有限公司 文件的元数据存储以及文件恢复的方法、装置和***
CN104281534A (zh) * 2014-09-22 2015-01-14 华为技术有限公司 一种存储元数据的方法和装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8325924B2 (en) * 2009-02-19 2012-12-04 Microsoft Corporation Managing group keys
CN101996217B (zh) * 2009-08-24 2012-11-07 华为技术有限公司 一种存储数据的方法及其存储设备
US8631052B1 (en) * 2011-12-22 2014-01-14 Emc Corporation Efficient content meta-data collection and trace generation from deduplicated storage
CN103795811B (zh) * 2014-03-06 2015-05-06 焦点科技股份有限公司 一种基于元数据保存存储信息及统计管理数据的方法
CN105404634B (zh) * 2014-09-15 2019-02-22 南京理工大学 基于Key-Value数据块的数据管理方法及***
CN104331478B (zh) * 2014-11-05 2017-09-22 浪潮电子信息产业股份有限公司 一种自精简存储***数据一致性管理方法
CN104866430B (zh) * 2015-04-30 2017-12-15 上海交通大学 结合主从备份和纠删码的内存计算***高可用优化方法
CN105069048A (zh) * 2015-07-23 2015-11-18 东方网力科技股份有限公司 一种小文件存储方法、查询方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102298641A (zh) * 2011-09-14 2011-12-28 清华大学 一种基于键值库的文件与结构化数据统一存储方法
CN103327052A (zh) * 2012-03-22 2013-09-25 深圳市腾讯计算机***有限公司 数据存储方法和***以及数据访问方法和***
CN103699585A (zh) * 2013-12-06 2014-04-02 华为技术有限公司 文件的元数据存储以及文件恢复的方法、装置和***
CN104281534A (zh) * 2014-09-22 2015-01-14 华为技术有限公司 一种存储元数据的方法和装置

Also Published As

Publication number Publication date
EP3444730A1 (en) 2019-02-20
EP3444730A4 (en) 2019-02-20
CN107301183A (zh) 2017-10-27
WO2017177754A1 (zh) 2017-10-19

Similar Documents

Publication Publication Date Title
US11537659B2 (en) Method for reading and writing data and distributed storage system
CN109284073B (zh) 数据存储方法、装置、***、服务器、控制节点及介质
US9983941B2 (en) Method and apparatus for recovering data
CN108255647B (zh) 一种samba服务器集群下的高速数据备份方法
CN106445643B (zh) 克隆、升级虚拟机的方法及设备
CN110647514B (zh) 一种元数据更新方法、装置及元数据服务器
CN109241004B (zh) 元数据文件大小恢复方法、***、装置及可读存储介质
CN111078662A (zh) 一种区块链数据存储方法与装置
US20190227710A1 (en) Incremental data restoration method and apparatus
CN110618974A (zh) 一种数据存储方法、装置、设备及存储介质
US10664349B2 (en) Method and device for file storage
CN109542860B (zh) 基于hdfs的业务数据管理方法、终端设备
CN109344163B (zh) 一种数据校验方法、装置和计算机可读介质
CN109271097B (zh) 数据处理方法、数据处理装置和服务器
CN111857603B (zh) 数据处理方法及相关装置
CN107301177B (zh) 一种文件存储方法及装置
CN111708763B (zh) 分片集群的数据迁移方法、装置和分片集群***
CN110134340B (zh) 一种元数据更新的方法、装置、设备以及存储介质
CN107301183B (zh) 一种文件存储方法及装置
CN110765125B (zh) 一种存储数据的方法及装置
CN111404737A (zh) 一种容灾处理方法以及相关装置
CN113535482B (zh) 云备份链数据备份方法及装置、设备、可读介质
CN107704208B (zh) 一种元数据的修复方法、装置及介质
CN111698330B (zh) 存储集群的数据恢复方法、装置及服务器
CN104778097A (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