CN111400248A - 写数据、恢复数据的方法及文件系统 - Google Patents

写数据、恢复数据的方法及文件系统 Download PDF

Info

Publication number
CN111400248A
CN111400248A CN201911136400.4A CN201911136400A CN111400248A CN 111400248 A CN111400248 A CN 111400248A CN 201911136400 A CN201911136400 A CN 201911136400A CN 111400248 A CN111400248 A CN 111400248A
Authority
CN
China
Prior art keywords
data
index
file system
block
data block
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
CN201911136400.4A
Other languages
English (en)
Other versions
CN111400248B (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 System Technology Co Ltd
Original Assignee
Hangzhou Hikvision System 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 System Technology Co Ltd filed Critical Hangzhou Hikvision System Technology Co Ltd
Priority to CN201911136400.4A priority Critical patent/CN111400248B/zh
Publication of CN111400248A publication Critical patent/CN111400248A/zh
Application granted granted Critical
Publication of CN111400248B publication Critical patent/CN111400248B/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/1458Management of the backup or restore process
    • 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/172Caching, prefetching or hoarding of files

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是本申请实施例提供的一种文件系统的结构示意图;
图7是本申请实施例提供的另一种文件系统的结构示意图;
图8是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细的解释说明之前,先对本申请实施例涉及的系统架构予以介绍。
图1是本申请实施例提供的一种文件系统示意图。如图1所示,该文件系统100包括索引记录区101、索引区102和数据区103。
数据区103用来存储用户数据。数据区包含多个数据块,该多个数据块体现在图1中为数据块1~数据块M。
索引区102用于存储各个数据块对应的索引信息,也即是每个数据块中存储的用户数据的索引信息。该索引信息可以包括用户数据的身份标识、数据类型、数据大小等信息。其中,数据类型用于指示该用户数据的类型,数据类型可以包括录像、图片或者文本等。数据大小用于指示用户数据占据磁盘空间的大小。
索引记录区用于存储各个数据块的状态信息。状态信息包括第一状态信息和第二状态信息,第一状态信息用于指示相应数据块对应的索引信息未持久化至文件系统,第二状态信息用于指示相应数据块对应的索引信息已持久化至文件系统。也即是当突然发生断电这种异常情况,可以通过索引记录区的状态信息判断出需要对那些数据块对应的索引信息进行恢复。
可选地,索引记录区还可以用于存储各个数据块的分配信息,该分配信息用于指示相应数据块是否已存储用户数据,并根据该分配信息判断出需要对哪些数据块执行写入操作。
此外,索引记录区101可以包括主索引记录区和备索引记录区,主索引记录区和备索引记录区互为备份。主索引记录区和备索引记录区均包含多个索引记录块,该多个索引记录块体现在图1中为:主索引记录区中的索引记录块1~索引记录块M。
索引区102可以包括主索引区和备索引区,主索引区和备索引区互为备份。主索引区和备索引区均包含多个索引块,该多个索引块体现在图1中为:主索引区中的索引块1~索引块M。该索引块1~索引块M分别存储数据块1~数据块M的对应的索引信息。
也即是,图1中的索引记录块、索引块和数据块都是一一对应的关系。
在另一种可能的实现方式中,文件系统100还可以包括启动块104。启动块104包括主启动块和备启动块。主启动块和备启动块互为备份。主启动块或备启动块用于记录文件系统的配置信息。该配置信息包括该文件系统的标识、该文件系统包括的每个索引块的大小以及每个数据块的大小等信息。
图1所示的文件系统100中的索引记录区、索引区、数据区的大小根据启动块中每个索引块的大小以及每个数据块的大小来确定。其详细过程会在接下来解释说明。
文件系统100中各个区域的位置可以在各个区域的大小不改变的基础上进行调换,在此并不做限定。图1所示的文件系统100中的索引记录区、索引区、数据区的位置仅为了展示方便画成连续,真实位置可以根据实际情况来确定。
下面对构建上述文件系统的过程进行解释说明。
图2是本申请实施例提供的一种构建文件系统的方法流程图,该方法包括如下步骤:
步骤201:服务器接收文件系统格式化请求,文件系统格式化请求携带文件系统的配置信息,配置信息包括每个索引块的大小、每个数据块的大小以及文件系统的总容量。
为了能够实现服务器能够恢复未持久化到硬盘的索引信息,在本申请实施例中,可以通过步骤201至步骤205来构建一种包括索引记录区的文件系统,以便于后续服务器通过索引记录区中的状态信息来分析需要恢复哪些数据块对应的索引信息。
在一种可能的实现方式中,当用户端需要创建本申请实施提供的文件系统时,首先需要向服务器发起一个文件系统格式化请求。服务器接收到文件系统格式化请求时,根据格式化请求中携带的文件系统的配置信息通过下述步骤202至步骤205来构建文件系统。
配置信息还可以包括用于构建对象系统的磁盘的标识、启动块的大小等信息。另外,格式化请求中携带的文件系统的配置信息的功能将在下述步骤中详细解释说明,在此先不阐述。
服务器构建文件系统是指根据每个数据块的大小,每个索引块的大小、以及数据块的数量来确定文件系统包括的各个区的大小,因此,当接收到文件系统格式化请求时,需要先确定预构建的文件系统包括的数据块的数量。确定数据块的数量可以通过下述步骤202和步骤203来实现。
步骤202:服务器根据每个索引块的大小、每个数据块的大小以及文件系统的总容量,确定文件系统包括的数据块的初始数量。
在一种可能的实现方式中,步骤202的实现过程可以为:当文件系统中包括主启动块和备启动块时,服务器可以先基于主启动块和备启动块的大小,和文件系统的总容量,确定文件系统中的索引区和数据区的最大容量,然后根据确定的最大容量以及每个索引块的大小和每个数据块的大小,确定文件系统中包括的数据块的初始数量。
比如,当文件系统中包括主启动块和备启动块,文件系统的总容量是C,主启动块和备启动块的大小均为B,每个索引块的大小为I,每个数据块的大小为D。服务器可以先基于主启动快和备启动块的大小和文件系统的总容量,确定文件系统中的索引区和数据区的最大容量,该最大容量为(C–B*2)。然后根据确定的最大容量以及每个索引块的大小和每个数据块的大小,确定文件系统中包括的数据块的初始数量,该初始数量为(C–B*2)/(I*2+D)。
由于文件系统中的一个数据块对应主索引区的一个索引块以及备索引区的一个索引块,因此,还可以将一个数据块以及对应的两个索引块统称为一个对象块。所以,上述确定出的数据块的初始数量也可以称为文件系统中的对象块的初始数量。
通过上述方式确定的初始容量能够使得文件系统除却启动块后剩余的容量尽可能的容纳更多的数据块。进而根据该初始数量所确定出的数据区的容量为文件系统能够容纳的数据区的最大容量。
如果直接按照该方式确定出的数据块的初始数量构建文件系统,则构建后的文件系统可能容纳不下索引记录区,因此,在确定出初始数量之后,还需通过下述步骤203至步骤204对该初始数量进行校正。
步骤203:服务器根据初始数量确定索引记录区的大小。
在一种可能的实现方式中,步骤203的实现过程可以为:针对每个数据块配置参考数量个字节用于指示该数据块的状态信息,因此,当服务器根据步骤202确定出文件系统包括的数据块的初始数量之后,便可将初始数量和参考数量相乘,得到的数值即为索引记录区的大小。
上述参考数量为预先设置的数值,该参考数量可以为1,也可以为2。
例如,索引记录区的大小可以通过下述公式来实现:
确定引记录区的大小R,
Figure BDA0002279715220000131
其中T表示索引记录区的初始大小。索引记录区的初始大小为索引记录块的大小乘以索引记录块的数量,由于索引记录块和数据块是一一对应的,因此索引记录块的数量和数据块的数量是一致的,均为T。也即索引记录块的大小1乘以索引记录块的数量T,确定出索引记录区的初始大小为T。而
Figure BDA0002279715220000132
Figure BDA0002279715220000133
为了保证索引记录区的大小为一个整数,满足4k对齐。
Figure BDA0002279715220000134
表示向上取整的意思。而4k对齐是一种是能够加速计算机读写速度,保障计算机高效运行的方式。
步骤204:服务器根据索引记录区的大小对初始数量进行校正,得到文件系统包括的数据块的实际数量。
在一种可能的实现方式中,步骤204还包括如下子步骤2041~2043:
步骤2041:服务器根据索引记录区的大小、初始数量、每个索引块的大小、每个数据块的大小,确定文件系统的理论所需容量。
在一种可能的实现方式中,步骤2041的实现过程可以为:根据步骤202确定出文件系统包括的数据块的初始数量,确定出数据区以及索引区的总共初始大小。根据步骤203确定出文件系统中包括的索引记录区的大小。进而根据数据区和索引区的初始大小、启动块的大小以及索引记录区的大小确定出文件系统的理论所需容量。
比如,根据步骤202确定出文件系统包括的数据块的初始数量,该初始数量为T,确定出数据区以及索引记录区的总共初始大小,该总共初始大小为(I*2+D)*T。根据步骤203确定出文件系统中包括的索引记录区的大小,该索引记录区的大小为R*2。进而根据数据区和索引区的初始大小、启动块的大小以及索引记录区的大小确定出文件系统的理论所需容量,该文件系统的理论所需容量为B*2+R*2+(I*2+D)*T。
步骤2042:如果文件系统的理论所需容量小于等于文件系统的总容量,则将初始数量作为文件系统包括的数据块的实际数量。
如果文件系统的理论所需容量小于等于文件系统的总容量,则表明基于上述步骤202确定出文件系统中包括的数据块的初始数量,文件系统的容量在减去启动块的大小、数据区的大小以及索引区的大小后剩余磁盘容量可以容纳索引记录区。因此,可以直接将上述步骤202确定出文件系统中包括的数据块的初始数量作为文件系统中的数据块的实际数量。
反之,如果文件系统的理论所需容量大于文件系统的总容量,则表明基于上述步骤202确定出文件系统中包括的数据块的初始数量,文件系统的容量在减去启动块的大小、数据区的大小以及索引区的大小后剩余磁盘容量不可以容纳索引记录区。因此,需通过下述步骤2043重新确定文件系统中的数据块的实际数量。
步骤2043:如果文件系统的理论所需容量大于文件系统的总容量,则根据总容量、索引记录区的大小、每个索引块的大小、每个数据块的大小,确定文件系统包括的数据块的实际数量。
在一种可能的实现方式中,步骤2043的实现过程可以为:服务器先基于启动块的大小、索引记录区的大小和文件系统的总容量,确定出文件系统剩余容量。该文件系统剩余容量为文件系统的总容量减去启动块的大小和索引记录区的大小后的文件系统剩余的容量。然后根据确定的文件系统剩余容量以及每个索引块的大小和每个数据块的大小,确定文件系统中包括的数据块的实际数量。
比如,服务器先基于启动块的大小B、索引记录区的大小R和文件系统的总容量C,确定出文件系统剩余容量。该文件系统剩余容量为文件系统的总容量减去启动块的大小、和索引记录区的大小后的文件系统剩余的容量。也即是该文件系统剩余容量为(C–B*2–R*2)。然后根据确定的文件系统剩余容量以及每个索引块的大小和每个数据块的大小,确定文件系统中包括的数据块的实际数量,该实际数量为(C–B*2–R*2)/(I*2+D)。
步骤205:服务器根据文件系统包括的数据块的实际数量、每个索引块的大小、每个数据块的大小、以及索引记录区的大小,构建文件系统。
在一种可能的实现方式中,步骤205的实现过程可以为:服务器基于文件系统包括的数据块的实际数量以及每个索引块的大小、每个数据块的大小,确定出索引区的大小和数据区的大小。再根据步骤203所确定的索引记录区的大小、以及文件系统配置信息中启动块大小共同构建出本申请实施例提供的文件系统。
例如,索引区大小IA和数据区的大小DA,可以通过以下述公式实现:
IA=I*T
DA=D*T
另外,构建完文件系统后,需要向启动块、索引记录区、索引区写入初始信息。启动块的初始信息可以由文件系统的配置信息来确定。而对于索引记录区和索引区以及数据区,由于当前还未对该文件系统执行写入操作,因此这些区中的初始信息可以设置为空值。
本申请实施中,服务器通过接收一个文件系统格式化请求,并根据该文件系统格式化请求携带的启动块的大小、每个索引块的大小以及每个数据块的大小,分别确定出索引区、数据区和索引记录区的大小,进而构建一个文件系统。该文件系统包括一个索引记录区,用来记录第一数据块的状态信息。根据该状态信息可以确定相应数据块对应的索引信息是否持久化至文件系统。当突然发生断电这种异常情况时,若内存中的索引信息尚未来得及持久化到文件系统中的索引区,可以将这部分索引信息进行再恢复。从而保障了文件系统中的数据的完整性。
基于构建的文件系统,服务器可以在构建的文件系统中执行用户端发送的写数据请求,下面对该过程进行解释说明。
图3是本申请实施例提供的一种写数据方法流程图,该写数据方法可以包括如下几个步骤:
步骤301:服务器将索引记录区中第一数据块的状态信息设置为第一状态信息,第一数据块为第一用户数据待写入的数据块,第一数据块为多个数据块中的任一数据块。
第一数据块为当前时刻需要写入用户数据的数据块。第一状态信息用于指示相应数据块对应的索引信息未持久化至文件系统。
在一种可能的实现方式中,步骤301的实现过程可以为:当需要向第一数据区中的第一数据块写入第一用户数据时,先检查第一数据块对应的索引记录块的状态信息是否为第一状态信息。若不是第一状态信息,需要首先将第一数据块的状态信息设置为第一状态信息。
此外,当需要向第一数据区中的第一数据块写入第一用户数据时,服务器还可以从索引区中获取第一数据块对应的索引信息,将第一数据块对应的索引信息缓存在内存中,以便于后续在写入第一数据的过程中,及时更新第一数据块对应的索引信息。
需要说明的是,第一状态信息也称为脏状态。上述从索引区中获取第一数据块对应的索引信息也称为初始索信息。如果向第一数据区中的第一数据块写入第一用户数据之前,第一数据块中已经存储有用户数据,此时该初始索引信息表示未对第一数据块执行写入操作前第一数据块中已存储的用户数据的索引信息。如果向第一数据区中的第一数据块写入第一用户数据之前,第一数据块中尚未存储有用户数据,此时该初始索引信息可以为空值。
例如,当前需要向第一数据区中的数据块1中写入第一用户数据,第一用户数据为:100兆图片型数据。先检查数据块1对应的索引记录块的状态信息是否为第一状态信息,如果数据块1对应的索引记录块的状态信息不是第一状态信息。则需要首先将数据块1的状态信息设置为第一状态信息。在设置数据块1的状态信息为第一状态信息后,服务器从索引区中获取数据块1对应的索引信息,并将该索引信息缓存在内存中。
步骤302:服务器确定第一用户数据包括的多个数据片中每个数据片的索引信息,分批次将多个数据片和每个数据片的索引信息写入第一数据块,每批写入一个数据片和同一数据片的索引信息。
当第一用户数据容量较大时,通常需要将用户数据分成多个数据片执行多次写入操作。并且每次将一个数据片和数据片的索引信息一次写入数据区,避免由于同一数据片中用户数据和数据片的索引信息分两次写入而造成的写数据次数过多的问题。
比如,第一用户数据为100兆时,该100兆的用户数据过大。服务器需要将该用户数据平均划分为10个数据片。并确定第一用户数据包括的10个数据片中每个数据片的索引信息。表1是本申请实施例提供的一种将第一用户数据划分为数据片的方式。如表1所示,将这100兆的用户数据划分为10个数据片,分别标记为第一数据片、第二数据片、、、、以及第十数据片。每个数据片可以配置一个身份标识,比如为第一数据片配置的身份标识为001,为第二数据片配置的身份标识为002等。每个数据片还对应一个数据类型,比如,第一数据片对应的数据类型为风景图片,第二数据片对应的数据类型为人物图片,第十数据片对应的数据类型为动物图片等。每个数据片的大小均为10兆。
表1
身份标识 数据类型 数据大小
第一数据片 001 风景图片 10兆
第二数据片 002 人物图片 10兆
………. ……… ……… ……….
第十数据片 010 动物图片 10兆
此外,数据片的索引信息包括数据长度、索引变化信息以及校验信息。索引变化信息是指相对于初始索引信息发生增加或者更改的索引信息。校验信息可以校验当前数据片的索引信息是否完整,也可以校验当前数据片是否有效。跟文件系统的安全级别有关,其中,安全级别越高,相应可校验的信息越多。数据长度为当前和索引信息一起写入数据区的数据片的数据的长度。
上述数据片的索引信息的长度通常为固定值,以便于文件系统根据当前数据片的数据长度来定位到下一个数据片。例如,每个数据片的数据长度为1兆。那么文件系统在定位出一个当前数据片之后,便可直接在当前数据片的逻辑地址上偏移1兆的地址区间,即可定位出下一个数据片。
另外,如果在步骤301中,服务器还将第一数据块对应的索引信息缓存在内存中,此时,服务器在每次写入一个数据片和同一数据片的索引信息之后,还根据本次写入的数据片的索引信息,更新内存中的第一数据块对应的索引信息。当确定多个数据片以及每个数据片的索引信息均写入第一数据块时,将最后一次更新后的内存中的第一数据块对应的索引信息持久化至索引区。
也即是,在分批次写入第一用户数据的过程中,实时更新内存中的第一数据块的索引信息,如此在将全部数据片写入第一数据块之后,内存中第一数据块的索引信息也更新完毕,且此时更新之后的第一数据块的索引信息能够正确指示第一数据块当前时间存储的全部用户数据。因此,当确定多个数据片以及每个数据片的索引信息均写入第一数据块时,服务器便可将最后一次更新后的内存中的第一数据块对应的索引信息持久化至索引区。
可选地,服务器在分批次一用户数据的过程中,并不更新内存中的第一数据块的索引信息,而是在确定该多个数据片以及每个数据片的索引信息均写入第一数据块时,此时直接根据该多个数据片的索引信息一次性更新内存中的第一数据块的索引信息,并将更新之后的第一数据块对应的索引信息持久化至索引区。
步骤303:当服务器确定第一数据块对应的第一索引信息持久化至索引区中时,将索引记录区中第一数据块的状态信息设置为第二状态信息。
步骤303之前需要判断是否完成满足条件的全部数据片和全部数据片的索引信息均写入第一数据块。若已完成满足条件的全部的数据片的写入操作,则将内存中更新之后的的第一数据块对应的索引信息持久化至索引区。此时将索引记录区中第一数据块的状态信息设置为第二状态信息,表示第一数据块对应的索引信息已经持久化到索引区。其中,第二状态信息也称为非脏状态。
需要说明是,上述判断是否完成满足条件的全部数据片和全部数据片的索引信息均写入第一数据块存在两种情况。
第一种情况:第一用户数据的大小超过第一数据块的容量限制。这时,以第一数据块的容量限制为准,在分批次写入第一用户数据的过程中,如果当前第一数据块已经写满,则确定已完成满足条件的全部的数据片的写入操作。
第二种情况:第一用户数据的大小未超过第一数据块的容量限制。此时,若第一用户数据全部写入第一数据块,则确定已完成满足条件的全部的数据片的写入操作。
例如,当前需要向数据块1中写入100兆图片型数据,该100兆图片型数据包含10个数据片,每个数据片包含10兆的图片。而第一数据块最多容纳90兆图片型数据,因此,当前前9个数据片写入第一数据块之后,便可将内存中更新之后的第一数据对应的索引信息持久化至索引区。
又比如,当前需要向数据块1中写入100兆图片型数据,该100兆图片型数据包含10个数据片,每个数据片包含10兆的图片。而第一数据块最多容纳120兆图片型数据,因此当第十数据片和第十数据片的索引信息均写入第一数据块时,便可将内存中更新之后的第一数据对应的索引信息持久化至索引区。
需要说明的是,对一个包括N个数据片的用户数据,采用本方案执行该用户数据的写入操作的次数总共有N+6次。其中,每次将一个数据片和该数据片的索引信息一次性写入数据区时,需要执行一次写入操作。由于该用户数据包含N个数据片,则一共需要执行N次写入操作。其次,在写入各个数据片之前,需要将待写入该用户数据的数据块的状态信息在索引记录区中设置为第一状态信息,也即在主索引记录区和备索引记录区均执行写入第一状态信息的操作,需要执行两次写入操作。另外,在执行完前述将N个数据片和索引信息均写入数据区之后,还需将更新后的数据块的索引信息持久化至主索引区和备索引区,此时则需要执行两次写入操作。另外,执行完前述将N个数据片和索引信息均写入数据区之后,再将该数据块的状态信息设置为第二状态信息,也即在主索引记录区和备索引记录区均执行写入第二状态信息的操作,需要执行两次写入操作。
如果采用相关技术中实时更新索引的方法,也即是,对一个包括N个数据片的数据块,每次写入一个数据片时,需要同时向主索引区以及备索引区写入该数据片对应的索引信息,并向数据区写入该数据片包括的用户数据,此时对于包括N个数据片的用户数据文件系统需要执行写入操作的次数为3N次。
两种方案的执行写入操作的次数的对比结果如表2所示:
表2
Figure BDA0002279715220000191
Figure BDA0002279715220000201
如表2所示,随着用户数据包括的数据片的数量的增加,采用本申请提供的写数据的方案可明显减少写操作的次数。
另外,上述N+6次是针对文件系统包括主索引记录区和备索引记录区,以及主索引区和备索引区的场景。如果文件系统包括更多的备索引记录区或者更多的备索引区,或者,文件系统不包括备索引记录区或备索引区,此时,对一个包括N个数据片的用户数据,在写入该用户数据时,最终所需的写操作的次数仍为N+a次,该a取决于文件系统包括的备索引记录区以及备索引区的个数,在此不再详细阐述。
在本申请实施例中,通过在第一数据块写入第一用户数据之前,先将索引记录区中第一数据块的状态信息设置为第一状态信息,再分批次将第一用户数据包括的每个数据片和每个数据片的索引信息一同写入第一数据块直至最后数据片以及最后数据片的索引信息写入第一数据块时,将索引记录区中第一数据块的状态信息设置为第二状态信息。根据该状态信息可以确定相应数据块对应的索引信息是否持久化至文件系统。当突然发生断电这种异常情况时,若内存中的索引信息尚未来得及持久化到文件系统中的索引区,可以将这部分索引信息进行再恢复。从而保障了文件系统中的数据的完整性。
基于构建的文件系统,服务器可以在构建的文件系统中执行用户端发送的读数据请求,下面对该过程进行解释说明。
图4是本申请实施例提供的一种读数据的方法流程图,该方法应用于图1所示的文件系统。该读数据方法可以包括如下几个步骤:
步骤401:服务器接收读数据请求,读数据请求携带第二用户数据的索引信息。
在一种可能的实现方式中,步骤401的实现过程可以为:当用户端需要从存储设备中获取数据时,用户端向部署有文件系统的存储应用服务器发送读数据请求,读数据请求携带第二用户数据的索引信息。
步骤402:服务器从索引区中获取与第二用户数据的索引信息一致索引信息。
在一种可能的实现方式中,步骤402的实现过程可以为:服务器从索引区中获取多个索引块的索引信息,并筛选出与第二用户数据的索引信息一致索引信息对应的索引块。
例如,该读数据请求携带携带第二用户数据的索引信息如表3所示:
表3
数据类型 数据大小
图片 100兆
索引区中分别包含5个索引块,这5个索引块的索引信息分别如下:
索引块1中的索引信息如表4所示:
表4
身份标识 数据类型 数据大小
001 人物图片 100兆
索引块2中的索引信息如表5所示:
表5
身份标识 数据类型 数据大小
002 风景图片 100兆
索引块3中的索引信息如表6所示:
表6
身份标识 数据类型 数据大小
003 动物图片 100兆
索引块4中的索引信息如表7所示:
表7
身份标识 数据类型 数据大小
004 活动录像 30兆
索引块5中的索引信息如表8所示:
表8
身份标识 数据类型 数据大小
005 文本 100兆
因此与第二用户数据的索引信息一致索引信息对应的索引块,分别为索引块1、索引块2和索引块3。
步骤403:服务器将获取的索引信息所对应的数据块中存储的数据缓存至内存。
在一种可能的实现方式中,步骤403的实现过程可以为:服务器确定步骤402中获取的索引信息所对应的索引块,将该索引块对应数据块中存储的数据缓存至内存。
例如,将索引块1对应的数据块1中存储的的用户数据和索引信息、索引块2对应的数据块2中存储的的用户数据和索引信息、索引块3对应的数据块3中存储的的用户数据和索引信息均缓存至内存。
步骤404:服务器将缓存的数据中的数据片的索引信息删掉,将删掉后剩余的数据返回至发送读数据请求的用户端。
需要说明的是,数据块中存储的数据除了用户数据还包括用户数据对应的索引信息。因此,在将数据块中存储的数据缓存至内存时,还应该将缓存的数据中的数据片的索引信息删掉,只保留用户数据,并将该用户数据返回至客户端。
另外,服务器也可以不删除索引信息,直接将数据块中存储的数据直接返回至发送读数据请求的用户端,用户端读数据过程中可以选择只读用户数据,而不读索引信息。
此外,服务器在索引区中获取到与第二用户数据的索引信息一致的索引信息之后,将该索引信息所对应的数据块中所存储的除了索引信息之外的用户数据缓存至内存,并将该用户数据返回至发送该读数据请求的用户端,此时则无需执行上述步骤404中删掉索引信息的操作。
在本申请实施例中,服务器对于接收到的读数据请求,首先根据该读数据请求携带第二用户数据的索引信息,在索引区中获取与该第二用户数据的索引信息的索引信息。并将该索引信息相对应的数据块中存储的数据缓存至内存,最后将该存储的数据中包括的索引信息删除,给用户端返回所需的用户数据。这样可以根据用户请求精准的获取用户所需的用户数据。
图5是本申请实施例提供的一种恢复数据的方法流程图,该方法应用于图1所示的文件系统。该恢复数据的方法可以包括如下几个步骤:
步骤501:服务器当检测到数据恢复指令时,从索引记录区中获取状态信息为第一状态信息的状态信息,从数据区中确定获取的状态信息对应的数据块。
在一种可能的实现方式中,当文件系统遭遇异常断电等情况而需要数据恢复的情况时,后台管理人员可以通过管理员端向服务器发送数据恢复指令,以使服务器通过步骤501至步骤505对数据进行恢复。该数据恢复指令由管理人员通过预设操作触发,该预设操作可以为点击操作、滑动操作或语音操作等。
例如,当服务器检测到数据恢复指令时,服务器在文件系统的索引记录区中获取状态信息为第一状态信息的索引记录块。假设当前状态信息为第一状态信息的索引记录块分别有索引记录块3、索引记录块4、索引记录块5。服务器根据这些索引记录块定位到对应的数据块,分别为数据块3、数据块4、数据块5,以便于后续通过步骤505至步骤505根据这些数据块中的索引信息进行数据恢复。
步骤502:服务器对于获取的任一数据块,确定该数据块包括的各个数据片中每个数据片的索引信息。
例如,数据块3为需要恢复索引信息的数据块。数据块3包含10个数据片,每个数据片包含10兆的图片。确定出的这10个数据片中每个数据片的索引信息表9所示,每个数据片的索引信息包括该数据片的身份标识、数据类型以及数据大小等。
表9
Figure BDA0002279715220000231
Figure BDA0002279715220000241
步骤503:服务器将该数据块包括的各个数据片中每个数据片的索引信息缓存至内存。
由于步骤501中获取的是状态信息为第一状态信息的数据块,而第一状态信息用于指示相应数据块对应的索引信息未持久化至文件系统,也即是未持久化至索引区。因此,当文件系统出现故障时,文件系统的索引区中将没有步骤501中的获取的数据块的索引信息,如此后续用户将无法通过索引信息读取到这些数块中的用户数据。因此,在本申请实施例中,需要将数据块包括的各个数据片中每个数据片的索引信息缓存至内存,以便于对这些数据块对应的索引信息进行恢复。
步骤504:服务器根据该数据块包括的各个数据片中每个数据片的索引信息确定该数据块对应的索引信息。
在一种可能的实现方式中,步骤504的实现过程可以为:对于任一数据块包括的各个数据片中每个数据片的索引信息,根据每个数据片的索引信息依次更新该数据块对应的索引信息。当根据该数据块包括的所有数据片中每个数据片的索引信息更新了该数据块对应的索引信息之后,便可得到数据块对应的索引信息。
步骤505:服务器将该数据块对应的索引信息缓存在内存中。
通过上述步骤501至步骤505,对于正在写入的用户数据,若写入过程中发生断电这种异常情况,内存中丢失的数据块的索引信息也可以再恢复。
本申请实施中,服务器检测到数据恢复指令时,可以从索引记录区中获取状态信息为第一状态信息的状态信息。从数据区中确定获取的状态信息对应的数据块。并对该数据块中存储的每个数据片的索引信息进行恢复。因而,即使突然发生断电这种异常情况时,首先可以通过状态信息判断出需要对哪些数据块中的索引信息进行恢复。若内存中的索引信息尚未来得及持久化到文件系统中的索引区,可以将这部分索引信息进行再恢复。从而保障了文件系统中的数据的完整性。
图6是本申请提供的一种文件系统600的结构示意图,该文件系统可以由软件、硬件或者两者的结合实现。该写文件系统可以包括:
第一设置模块601,用于将索引记录区中第一数据块的状态信息设置为第一状态信息,该第一数据块为第一用户数据待写入的数据块,该第一数据块为该多个数据块中的任一数据块;
第一确定模块602,用于确定该第一用户数据包括的多个数据片中每个数据片的索引信息,分批次将该多个数据片和每个数据片的索引信息写入该第一数据块,每批写入一个数据片和同一数据片的索引信息;
第二设置模块603,用于当确定该第一数据块对应的索引信息持久化至该索引区中时,将该索引记录区中该第一数据块的状态信息设置为第二状态信息。
可选的,该文件系统还包括:
第一获取模块,用于从该索引区中获取该第一数据块对应的索引信息,将该第一数据块对应的索引信息缓存在内存中;
相应地,该文件系统,还包括:
更新模块,用于在每次写入一个数据片和同一数据片的索引信息之后,根据本次写入的数据片的索引信息,更新该内存中该的第一数据块对应的索引信息;
持久化模块,用于当确定该多个数据片以及每个数据片的索引信息均写入该第一数据块时,将最后一次更新后的该内存中该的第一数据块对应的索引信息持久化至该索引区。
可选的,该文件系统还包括:
第一接收模块,用于接收读数据请求,该读数据请求携带第二用户数据的索引信息;
第二获取模块,用于从该索引区中获取与该第二用户数据的索引信息一致索引信息;
缓存模块,用于将获取的索引信息所对应的数据块中存储的数据缓存至内存;
返回模块,用于将缓存的数据中的数据片的索引信息删掉,将删掉后剩余的数据返回至发送该读数据请求的用户端。
可选的,该索引区包括与该多个数据块一一对应的多个索引块,该文件系统还包括:
第二接收模块,用于接收文件系统格式化请求,该文件系统格式化请求携带该文件系统的配置信息,该配置信息包括每个索引块的大小、每个数据块的大小以及该文件系统的总容量;
第二确定模块,用于根据每个索引块的大小、每个数据块的大小以及该文件系统的总容量,确定该文件系统包括的数据块的初始数量;
第三确定模块,用于根据该初始数量确定该索引记录区的大小;
校正模块,用于根据该索引记录区的大小对该初始数量进行校正,得到该文件系统包括的数据块的实际数量;
构建模块,用于根据该文件系统包括的多个数据块的实际数量、每个索引块的大小、每个数据块的大小、以及该索引记录区的大小,构建该文件系统。
可选的,该校正模块用于:
根据该索引记录区的大小、该初始数量、每个索引块的大小、每个数据块的大小,确定该文件系统的理论所需容量;
如果该文件系统的理论所需容量小于等于该文件系统的总容量,则将该初始数量作为该文件系统包括的数据块的实际数量;或者,
如果该文件系统的理论所需容量大于该文件系统的总容量,则根据该总容量、该索引记录区的大小、每个索引块的大小、每个数据块的大小,确定该文件系统包括的数据块的实际数量。
本申请实施中,服务器通过接收一个文件系统格式化请求,并根据该文件系统格式化请求携带的启动块的大小、每个索引块的大小以及每个数据块的大小,分别确定出索引区、数据区和索引记录区的大小,进而构建一个文件系统。该文件系统包括一个索引记录区,用来记录第一数据块的状态信息。根据该状态信息可以确定相应数据块对应的索引信息是否持久化至文件系统。当突然发生断电这种异常情况时,若内存中的索引信息尚未来得及持久化到文件系统中的索引区,可以将这部分索引信息进行再恢复。从而保障了文件系统中的数据的完整性。
需要说明的是:上述实施例提供的文件系统在存储数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的文件系统与写数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图7是本申请提供的一种文件系统700的结构示意图,该文件系统可以由软件、硬件或者两者的结合实现。该写文件系统可以包括:
第一获取模块701,用于当检测到数据恢复指令时,从该索引记录区中获取状态信息为该第一状态信息的状态信息,从该数据区中确定获取的状态信息对应的数据块;
第一确定模块702,用于对于获取的任一数据块,确定该任一数据块包括的各个数据片中每个数据片的索引信息;
第一缓存模块703,用于将该任一数据块包括的各个数据片中每个数据片的索引信息缓存至内存;
第二确定模块704,用于根据该任一数据块包括的各个数据片中每个数据片的索引信息确定该任一数据块对应的索引信息;
第二缓存模块705,用于将该任一数据块对应的索引信息缓存在该内存中。
可选的,该文件系统还包括:
校验模块,用于对于该任一数据块包括的各个数据片中的第一数据片,校验该第一数据片的索引信息是否有效,该第一数据片为该任一数据块包括的各个数据片中任一数据片;
该第一缓存模块,还用于如果该第一数据片的索引信息有效,则执行将该第一数据片的索引信息缓存至该内存的步骤。
可选的,该文件系统还包括:
第一接收模块,用于接收读数据请求,该读数据请求携带第二用户数据的索引信息;
第二获取模块,用于从该索引区中获取与该第二用户数据的索引信息一致索引信息;
第三缓存模块,用于将获取的索引信息所对应的数据块中存储的数据缓存至内存;
返回模块,用于将缓存的数据中的数据片的索引信息删掉,将删掉后剩余的数据返回至发送该读数据请求的用户端。
可选的,该索引区包括与该多个数据块一一对应的多个索引块,该文件系统还包括:
第二接收模块,用于接收文件系统格式化请求,该文件系统格式化请求携带该文件系统的配置信息,该配置信息包括每个索引块的大小、每个数据块的大小以及该文件系统的总容量;
第三确定模块,用于根据每个索引块的大小、每个数据块的大小以及该文件系统的总容量,确定该文件系统包括的数据块的初始数量;
第四确实模块,用于根据该初始数量确定该索引记录区的大小;
校正模块,用于根据该索引记录区的大小对该初始数量进行校正,得到该文件系统包括的数据块的实际数量;
构建模块,用于根据该文件系统包括的多个数据块的实际数量、每个索引块的大小、每个数据块的大小、以及该索引记录区的大小,构建该文件系统。
可选的,该校正模块用于:
根据该索引记录区的大小、该初始数量、每个索引块的大小、每个数据块的大小,确定该文件系统的理论所需容量;
如果该文件系统的理论所需容量小于等于该文件系统的总容量,则将该初始数量作为该文件系统包括的数据块的实际数量;或者,
如果该文件系统的理论所需容量大于该文件系统的总容量,则根据该总容量、该索引记录区的大小、每个索引块的大小、每个数据块的大小,确定该文件系统包括的数据块的实际数量。
本申请实施中,服务器通过接收一个文件系统格式化请求,并根据该文件系统格式化请求携带的启动块的大小、每个索引块的大小以及每个数据块的大小,分别确定出索引区、数据区和索引记录区的大小,进而构建一个文件系统。该文件系统包括一个索引记录区,用来记录第一数据块的状态信息。根据该状态信息可以确定相应数据块对应的索引信息是否持久化至文件系统。当突然发生断电这种异常情况时,若内存中的索引信息尚未来得及持久化到文件系统中的索引区,可以将这部分索引信息进行再恢复。从而保障了文件系统中的数据的完整性。
需要说明的是:上述实施例提供的文件系统在存储数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的文件系统与恢复数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是本申请实施例提供的一种服务器的结构示意图。该服务器可以是后台服务器集群中的服务器。具体来讲:
服务器800包括中央处理单元(CPU)801、包括随机存取存储器(RAM)802和只读存储器(ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。服务器800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)806,和用于存储操作系统813、应用程序814和其他程序模块815的大容量存储设备807。
基本输入/输出系统806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。基本输入/输出系统806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。大容量存储设备807及其相关联的计算机可读介质为服务器800提供非易失性存储。也就是说,大容量存储设备807可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
根据本申请的各种实施例,服务器800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器800可以通过连接在系统总线805上的网络接口单元811连接到网络812,或者说,也可以使用网络接口单元811来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。所述一个或者一个以上程序包含用于进行本申请实施例提供的写数据以及数据恢复方法的指令。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够执行上实施例提供的写数据以及数据恢复方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在服务器上运行时,使得服务器执行上述实施例提供的写数据以及数据恢复方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (22)

1.一种写数据的方法,其特征在于,应用于文件系统,所述文件系统包括索引记录区、索引区和数据区,所述数据区包括多个数据块,每个数据块用于存储用户数据,所述索引区用于存储各个数据块对应的索引信息,每个数据块对应的索引信息是指每个数据块中存储的用户数据的索引信息,所述索引记录区用于存储各个数据块的状态信息,所述状态信息包括第一状态信息和第二状态信息,所述第一状态信息用于指示相应数据块对应的索引信息未持久化至所述文件系统,所述第二状态信息用于指示相应数据块对应的索引信息已持久化至所述文件系统;
所述方法包括:
将所述索引记录区中第一数据块的状态信息设置为第一状态信息,所述第一数据块为第一用户数据待写入的数据块,所述第一数据块为所述多个数据块中的任一数据块;
确定所述第一用户数据包括的多个数据片中每个数据片的索引信息,分批次将所述多个数据片和每个数据片的索引信息写入所述第一数据块,每批写入一个数据片和同一数据片的索引信息;
当确定所述第一数据块对应的索引信息持久化至所述索引区中时,将所述索引记录区中所述第一数据块的状态信息设置为第二状态信息。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
从所述索引区中获取所述第一数据块对应的索引信息,将所述第一数据块对应的索引信息缓存在内存中;
相应地,所述分批次将所述多个数据片和每个数据片的索引信息写入所述第一数据块之后,还包括:
在每次写入一个数据片和同一数据片的索引信息之后,根据本次写入的数据片的索引信息,更新所述内存中所述第一数据块对应的索引信息;
当确定所述多个数据片以及每个数据片的索引信息均写入所述第一数据块时,将最后一次更新后的所述内存中所述第一数据块对应的索引信息持久化至所述索引区。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收读数据请求,所述读数据请求携带第二用户数据的索引信息;
从所述索引区中获取与所述第二用户数据的索引信息一致索引信息;
将获取的索引信息所对应的数据块中存储的数据缓存至内存;
将缓存的数据中的数据片的索引信息删掉,将删掉后剩余的数据返回至发送所述读数据请求的用户端。
4.如权利要求1所述的方法,其特征在于,所述索引区包括与所述多个数据块一一对应的多个索引块,所述方法还包括:
接收文件系统格式化请求,所述文件系统格式化请求携带所述文件系统的配置信息,所述配置信息包括每个索引块的大小、每个数据块的大小以及所述文件系统的总容量;
根据每个索引块的大小、每个数据块的大小以及所述文件系统的总容量,确定所述文件系统包括的数据块的初始数量;
根据所述初始数量确定所述索引记录区的大小;
根据所述索引记录区的大小对所述初始数量进行校正,得到所述文件系统包括的数据块的实际数量;
根据所述文件系统包括的多个数据块的实际数量、每个索引块的大小、每个数据块的大小、以及所述索引记录区的大小,构建所述文件系统。
5.如权利要求4所述的方法,其特征在于,所述根据所述索引记录区的大小对所述初始数量进行校正,得到所述文件系统包括的数据块的实际数量,包括:
根据所述索引记录区的大小、所述初始数量、每个索引块的大小、每个数据块的大小,确定所述文件系统的理论所需容量;
如果所述文件系统的理论所需容量小于等于所述文件系统的总容量,则将所述初始数量作为所述文件系统包括的数据块的实际数量;或者,
如果所述文件系统的理论所需容量大于所述文件系统的总容量,则根据所述总容量、所述索引记录区的大小、每个索引块的大小、每个数据块的大小,确定所述文件系统包括的数据块的实际数量。
6.一种恢复数据的方法,其特征在于,应用于文件系统,所述文件系统包括索引记录区、索引区和数据区,所述数据区包括多个数据块,每个数据块用于存储用户数据,所述索引区用于存储各个数据块对应的索引信息,每个数据块对应的索引信息是指每个数据块中存储的用户数据的索引信息,所述索引记录区用于存储各个数据块的状态信息,所述状态信息包括第一状态信息和第二状态信息,所述第一状态信息用于指示相应数据块对应的索引信息未持久化至所述文件系统,所述第二状态信息用于指示相应数据块对应的索引信息已持久化至所述文件系统;
所述方法包括:
当检测到数据恢复指令时,从所述索引记录区中获取状态信息为所述第一状态信息的状态信息,从所述数据区中确定获取的状态信息对应的数据块;
对于获取的任一数据块,确定所述任一数据块包括的各个数据片中每个数据片的索引信息;
将所述任一数据块包括的各个数据片中每个数据片的索引信息缓存至内存;
根据所述任一数据块包括的各个数据片中每个数据片的索引信息确定所述任一数据块对应的索引信息;
将所述任一数据块对应的索引信息缓存在所述内存中。
7.如权利要求6所述的方法,其特征在于,所述将所述任一数据块包括的各个数据片中每个数据片的索引信息缓存至所述内存之前,还包括:
对于所述任一数据块包括的各个数据片中的第一数据片,校验所述第一数据片的索引信息是否有效,所述第一数据片为所述任一数据块包括的各个数据片中任一数据片;
如果所述第一数据片的索引信息有效,则执行将所述第一数据片的索引信息缓存至所述内存的步骤。
8.如权利要求6所述的方法,其特征在于,所述方法还包括:
接收读数据请求,所述读数据请求携带第二用户数据的索引信息;
从所述索引区中获取与所述第二用户数据的索引信息一致索引信息;
将获取的索引信息所对应的数据块中存储的数据缓存至内存;
将缓存的数据中的数据片的索引信息删掉,将删掉后剩余的数据返回至发送所述读数据请求的用户端。
9.如权利要求6所述的方法,其特征在于,所述索引区包括与所述多个数据块一一对应的多个索引块,所述方法还包括:
接收文件系统格式化请求,所述文件系统格式化请求携带所述文件系统的配置信息,所述配置信息包括每个索引块的大小、每个数据块的大小以及所述文件系统的总容量;
根据每个索引块的大小、每个数据块的大小以及所述文件系统的总容量,确定所述文件系统包括的数据块的初始数量;
根据所述初始数量确定所述索引记录区的大小;
根据所述索引记录区的大小对所述初始数量进行校正,得到所述文件系统包括的数据块的实际数量;
根据所述文件系统包括的多个数据块的实际数量、每个索引块的大小、每个数据块的大小、以及所述索引记录区的大小,构建所述文件系统。
10.如权利要求9所述的方法,其特征在于,所述根据所述索引记录区的大小对所述初始数量进行校正,得到所述文件系统包括的数据块的实际数量,包括:
根据所述索引记录区的大小、所述初始数量、每个索引块的大小、每个数据块的大小,确定所述文件系统的理论所需容量;
如果所述文件系统的理论所需容量小于等于所述文件系统的总容量,则将所述初始数量作为所述文件系统包括的数据块的实际数量;或者,
如果所述文件系统的理论所需容量大于所述文件系统的总容量,则根据所述总容量、所述索引记录区的大小、每个索引块的大小、每个数据块的大小,确定所述文件系统包括的数据块的实际数量。
11.一种文件系统,其特征在于,应用于文件系统,所述文件系统包括索引记录区、索引区和数据区,所述数据区包括多个数据块,每个数据块用于存储用户数据,所述索引区用于存储各个数据块对应的索引信息,每个数据块对应的索引信息是指每个数据块中存储的用户数据的索引信息,所述索引记录区用于存储各个数据块的状态信息,所述状态信息包括第一状态信息和第二状态信息,所述第一状态信息用于指示相应数据块对应的索引信息未持久化至所述文件系统,所述第二状态信息用于指示相应数据块对应的索引信息已持久化至所述文件系统;
所述文件系统包括:
第一设置模块,用于将所述索引记录区中第一数据块的状态信息设置为第一状态信息,所述第一数据块为第一用户数据待写入的数据块,所述第一数据块为所述多个数据块中的任一数据块;
第一确定模块,用于确定所述第一用户数据包括的多个数据片中每个数据片的索引信息,分批次将所述多个数据片和每个数据片的索引信息写入所述第一数据块,每批写入一个数据片和同一数据片的索引信息;
第二设置模块,用于当确定所述第一数据块对应的索引信息持久化至所述索引区中时,将所述索引记录区中所述第一数据块的状态信息设置为第二状态信息。
12.如权利要求11所述的文件系统,其特征在于,所述文件系统还包括:
第一获取模块,用于从所述索引区中获取所述第一数据块对应的索引信息,将所述第一数据块对应的索引信息缓存在内存中;
相应地,所述文件系统,还包括:
更新模块,用于在每次写入一个数据片和同一数据片的索引信息之后,根据本次写入的数据片的索引信息,更新所述内存中所述第一数据块对应的索引信息;
持久化模块,用于当确定所述多个数据片以及每个数据片的索引信息均写入所述第一数据块时,将最后一次更新后的所述内存中所述第一数据块对应的索引信息持久化至所述索引区。
13.如权利要求11所述的文件系统,其特征在于,所述文件系统还包括:
第一接收模块,用于接收读数据请求,所述读数据请求携带第二用户数据的索引信息;
第二获取模块,用于从所述索引区中获取与所述第二用户数据的索引信息一致索引信息;
缓存模块,用于将获取的索引信息所对应的数据块中存储的数据缓存至内存;
返回模块,用于将缓存的数据中的数据片的索引信息删掉,将删掉后剩余的数据返回至发送所述读数据请求的用户端。
14.如权利要求11所述的文件系统,其特征在于,所述索引区包括与所述多个数据块一一对应的多个索引块,所述文件系统还包括:
第二接收模块,用于接收文件系统格式化请求,所述文件系统格式化请求携带所述文件系统的配置信息,所述配置信息包括每个索引块的大小、每个数据块的大小以及所述文件系统的总容量;
第二确定模块,用于根据每个索引块的大小、每个数据块的大小以及所述文件系统的总容量,确定所述文件系统包括的数据块的初始数量;
第三确定模块,用于根据所述初始数量确定所述索引记录区的大小;
校正模块,用于根据所述索引记录区的大小对所述初始数量进行校正,得到所述文件系统包括的数据块的实际数量;
构建模块,用于根据所述文件系统包括的多个数据块的实际数量、每个索引块的大小、每个数据块的大小、以及所述索引记录区的大小,构建所述文件系统。
15.如权利要求11所述的文件系统,其特征在于,所述校正模块用于:
根据所述索引记录区的大小、所述初始数量、每个索引块的大小、每个数据块的大小,确定所述文件系统的理论所需容量;
如果所述文件系统的理论所需容量小于等于所述文件系统的总容量,则将所述初始数量作为所述文件系统包括的数据块的实际数量;或者,
如果所述文件系统的理论所需容量大于所述文件系统的总容量,则根据所述总容量、所述索引记录区的大小、每个索引块的大小、每个数据块的大小,确定所述文件系统包括的数据块的实际数量。
16.一种文件系统,其特征在于,应用于文件系统,所述文件系统包括索引记录区、索引区和数据区,所述数据区包括多个数据块,每个数据块用于存储用户数据,所述索引区用于存储各个数据块对应的索引信息,每个数据块对应的索引信息是指每个数据块中存储的用户数据的索引信息,所述索引记录区用于存储各个数据块的状态信息,所述状态信息包括第一状态信息和第二状态信息,所述第一状态信息用于指示相应数据块对应的索引信息未持久化至所述文件系统,所述第二状态信息用于指示相应数据块对应的索引信息已持久化至所述文件系统;
所述文件系统包括:
第一获取模块,用于当检测到数据恢复指令时,从所述索引记录区中获取状态信息为所述第一状态信息的状态信息,从所述数据区中确定获取的状态信息对应的数据块;
第一确定模块,用于对于获取的任一数据块,确定所述任一数据块包括的各个数据片中每个数据片的索引信息;
第一缓存模块,用于将所述任一数据块包括的各个数据片中每个数据片的索引信息缓存至内存;
第二确定模块,用于根据所述任一数据块包括的各个数据片中每个数据片的索引信息确定所述任一数据块对应的索引信息;
第二缓存模块,用于将所述任一数据块对应的索引信息缓存在所述内存中。
17.如权利要求16所述的文件系统,其特征在于,所述文件系统还包括:
校验模块,用于对于所述任一数据块包括的各个数据片中的第一数据片,校验所述第一数据片的索引信息是否有效,所述第一数据片为所述任一数据块包括的各个数据片中任一数据片;
所述第一缓存模块,还用于如果所述第一数据片的索引信息有效,则执行将所述第一数据片的索引信息缓存至所述内存的步骤。
18.如权利要求16所述的文件系统,其特征在于,所述文件系统还包括:
第一接收模块,用于接收读数据请求,所述读数据请求携带第二用户数据的索引信息;
第二获取模块,用于从所述索引区中获取与所述第二用户数据的索引信息一致索引信息;
第三缓存模块,用于将获取的索引信息所对应的数据块中存储的数据缓存至内存;
返回模块,用于将缓存的数据中的数据片的索引信息删掉,将删掉后剩余的数据返回至发送所述读数据请求的用户端。
19.如权利要求16所述的文件系统,其特征在于,所述索引区包括与所述多个数据块一一对应的多个索引块,所述文件系统还包括:
第二接收模块,用于接收文件系统格式化请求,所述文件系统格式化请求携带所述文件系统的配置信息,所述配置信息包括每个索引块的大小、每个数据块的大小以及所述文件系统的总容量;
第三确定模块,用于根据每个索引块的大小、每个数据块的大小以及所述文件系统的总容量,确定所述文件系统包括的数据块的初始数量;
第四确实模块,用于根据所述初始数量确定所述索引记录区的大小;
校正模块,用于根据所述索引记录区的大小对所述初始数量进行校正,得到所述文件系统包括的数据块的实际数量;
构建模块,用于根据所述文件系统包括的多个数据块的实际数量、每个索引块的大小、每个数据块的大小、以及所述索引记录区的大小,构建所述文件系统。
20.如权利要求19所述的文件系统,其特征在于,所述校正模块用于:
根据所述索引记录区的大小、所述初始数量、每个索引块的大小、每个数据块的大小,确定所述文件系统的理论所需容量;
如果所述文件系统的理论所需容量小于等于所述文件系统的总容量,则将所述初始数量作为所述文件系统包括的数据块的实际数量;或者,
如果所述文件系统的理论所需容量大于所述文件系统的总容量,则根据所述总容量、所述索引记录区的大小、每个索引块的大小、每个数据块的大小,确定所述文件系统包括的数据块的实际数量。
21.一种文件系统,其特征在于,所述文件系统包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求1至权利要求5中的任一项权利要求所述的方法的步骤,或者,执行上述权利要求6至权利要求10中的任一项权利要求所述的方法的步骤。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述权利要求1至权利要求5中的任一项权利要求所述的方法的步骤,或者,实现上述权利要求6至权利要求10中的任一项权利要求所述的方法的步骤。
CN201911136400.4A 2019-11-19 2019-11-19 写数据、恢复数据的方法及文件系统 Active CN111400248B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911136400.4A CN111400248B (zh) 2019-11-19 2019-11-19 写数据、恢复数据的方法及文件系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911136400.4A CN111400248B (zh) 2019-11-19 2019-11-19 写数据、恢复数据的方法及文件系统

Publications (2)

Publication Number Publication Date
CN111400248A true CN111400248A (zh) 2020-07-10
CN111400248B CN111400248B (zh) 2023-06-30

Family

ID=71432249

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911136400.4A Active CN111400248B (zh) 2019-11-19 2019-11-19 写数据、恢复数据的方法及文件系统

Country Status (1)

Country Link
CN (1) CN111400248B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190503A (zh) * 2021-05-08 2021-07-30 重庆紫光华山智安科技有限公司 文件系统扩容方法、装置、电子设备及存储介质
CN117472291A (zh) * 2023-12-27 2024-01-30 苏州元脑智能科技有限公司 数据块的校验方法和装置、存储介质及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101315628A (zh) * 2007-06-01 2008-12-03 华为技术有限公司 内存数据库系统及实现内存数据库的方法和装置
US20090037456A1 (en) * 2007-07-31 2009-02-05 Kirshenbaum Evan R Providing an index for a data store
US20130073813A1 (en) * 2011-09-15 2013-03-21 Josef Michael Bacik Mechanism for Saving a Snapshot of Free Space of a File System on Persistent Storage
CN104063447A (zh) * 2014-06-17 2014-09-24 惠州华阳通用电子有限公司 一种监控视频文件修复方法
US20180157420A1 (en) * 2016-12-05 2018-06-07 International Business Machines Corporation Writing file information for tape file systems
CN109426587A (zh) * 2017-08-25 2019-03-05 杭州海康威视数字技术股份有限公司 一种数据恢复方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101315628A (zh) * 2007-06-01 2008-12-03 华为技术有限公司 内存数据库系统及实现内存数据库的方法和装置
US20090037456A1 (en) * 2007-07-31 2009-02-05 Kirshenbaum Evan R Providing an index for a data store
US20130073813A1 (en) * 2011-09-15 2013-03-21 Josef Michael Bacik Mechanism for Saving a Snapshot of Free Space of a File System on Persistent Storage
CN104063447A (zh) * 2014-06-17 2014-09-24 惠州华阳通用电子有限公司 一种监控视频文件修复方法
US20180157420A1 (en) * 2016-12-05 2018-06-07 International Business Machines Corporation Writing file information for tape file systems
CN109426587A (zh) * 2017-08-25 2019-03-05 杭州海康威视数字技术股份有限公司 一种数据恢复方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王浩,邵高平,胡泽明: "基于分组—循环擦写的闪存磨损均衡算法" *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190503A (zh) * 2021-05-08 2021-07-30 重庆紫光华山智安科技有限公司 文件系统扩容方法、装置、电子设备及存储介质
CN113190503B (zh) * 2021-05-08 2022-12-02 重庆紫光华山智安科技有限公司 文件系统扩容方法、装置、电子设备及存储介质
CN117472291A (zh) * 2023-12-27 2024-01-30 苏州元脑智能科技有限公司 数据块的校验方法和装置、存储介质及电子设备
CN117472291B (zh) * 2023-12-27 2024-03-22 苏州元脑智能科技有限公司 数据块的校验方法和装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN111400248B (zh) 2023-06-30

Similar Documents

Publication Publication Date Title
CN107807794B (zh) 一种数据存储方法和装置
EP3179359B1 (en) Data sending method, data receiving method, and storage device
CN110895445B (zh) 数据处理方法和系统
CN106776130B (zh) 一种日志恢复方法、存储装置和存储节点
CN108052655B (zh) 数据写入及读取方法
CN103765373B (zh) 数据存储方法、数据存储装置和存储设备
US9547706B2 (en) Using colocation hints to facilitate accessing a distributed data storage system
US10489289B1 (en) Physical media aware spacially coupled journaling and trim
CN108733311B (zh) 用于管理存储系统的方法和设备
US20190317872A1 (en) Database cluster architecture based on dual port solid state disk
CN113849339B (zh) 恢复应用程序的运行状态的方法、装置及存储介质
CN107817950B (zh) 一种数据处理方法及装置
CN113515531B (zh) 数据访问方法、装置、客户端及存储介质
CN105338078A (zh) 用于存储系统的数据存储方法和装置
US10572335B2 (en) Metadata recovery method and apparatus
CN111400248B (zh) 写数据、恢复数据的方法及文件系统
US20180121531A1 (en) Data Updating Method, Device, and Related System
CN113885809B (zh) 数据管理系统及方法
CN112000850B (zh) 进行数据处理的方法、装置、系统及设备
CN105068760A (zh) 数据存储方法、数据存储装置和存储设备
CN115827322A (zh) 一种云存储数据全量灾备方法及系统
CN115390754A (zh) 一种硬盘管理方法及装置
US11221773B2 (en) Method and apparatus for performing mapping information management regarding redundant array of independent disks
CN113886352A (zh) 分布式文件系统的元数据恢复方法、装置、设备及介质
CN113625952A (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