CN107918527B - 存储空间分配方法及装置以及文件存储方法及装置 - Google Patents

存储空间分配方法及装置以及文件存储方法及装置 Download PDF

Info

Publication number
CN107918527B
CN107918527B CN201711057818.7A CN201711057818A CN107918527B CN 107918527 B CN107918527 B CN 107918527B CN 201711057818 A CN201711057818 A CN 201711057818A CN 107918527 B CN107918527 B CN 107918527B
Authority
CN
China
Prior art keywords
data block
information
level directory
quota
file
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
CN201711057818.7A
Other languages
English (en)
Other versions
CN107918527A (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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201711057818.7A priority Critical patent/CN107918527B/zh
Publication of CN107918527A publication Critical patent/CN107918527A/zh
Application granted granted Critical
Publication of CN107918527B publication Critical patent/CN107918527B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开是关于一种存储空间分配方法及装置以及文件存储方法及装置。该方法应用于分布式文件系统中部署有命名节点的服务器,系统还包括客户端和数据节点,方法包括:接收客户端携带单级目录信息的数据块创建请求;根据单级目录配额和已占用配额,判断是否满足数据块创建条件;满足时创建数据块将数据块信息发送客户端,数据块信息包括单级目录信息,客户端根据数据块信息写入单级目录。根据本公开实施例,能够接收客户端携带单级目录信息的数据块创建请求,在根据单级目录的配额和已占用的配额判断满足数据块创建条件时,创建数据块将数据块信息发送给客户端,从而实现具备单级目录的分布式文件系统,可区分不同业务用户的文件。

Description

存储空间分配方法及装置以及文件存储方法及装置
技术领域
本公开涉及计算机技术领域,尤其涉及一种存储空间分配方法及装置以及文件存储方法及装置。
背景技术
随着互联网技术的快速发展,人们对信息存储的需求也越来越大,分布式文件系统可以用来存储数据,满足人们对信息存储的需求。相关技术中,分布式文件系统多不支持目录的概念,仅提供类似于对象存储的功能来存储文件。然而,这种分布式文件系统将无法对不同业务用户的文件进行区分。
发明内容
为克服相关技术中存在的问题,本公开提供一种存储空间分配方法及装置以及文件存储方法及装置。
根据本公开实施例的第一方面,提供一种存储空间分配方法,所述方法应用于分布式文件系统中部署有命名节点的服务器中,所述分布式文件系统还包括客户端以及多个数据节点,所述方法包括:
接收客户端的数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
根据所述单级目录的配额和已占用的配额,判断是否满足数据块创建条件;
在满足所述数据块创建条件时,创建数据块将数据块信息发送给所述客户端,所述数据块信息包括所述单级目录的信息,用于所述客户端根据所述数据块信息将所述单级目录下的文件写入相应的数据块中。
对于以上方法,在一种可能的实现方式中,所述配额包括:数据块空间配额以及文件数量配额,
其中,根据所述单级目录的配额和已占用的配额,判断是否满足数据块创建条件,包括:
根据所述单级目录的数据块空间配额和所述单级目录的已占用的数据块空间配额,确定所述单级目录的剩余数据块空间配额;
在所述单级目录的剩余数据块空间配额大于或等于待创建数据块所占用的数据块空间,且所述单级目录的文件数量配额大于所述单级目录的已占用的文件数量配额时,判断满足数据块创建条件。
对于以上方法,在一种可能的实现方式中,所述方法还包括:
在所述命名节点初始化时,扫描数据块状态表,获取多个数据块信息;
基于所述多个数据块信息,确定所述单级目录下的多个数据块信息;
基于所述单级目录下的多个数据块信息,确定所述单级目录的已占用的配额,
其中,所述数据块信息包括所述数据块的已占用的配额的信息。
对于以上方法,在一种可能的实现方式中,所述方法还包括:
接收客户端发送的密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额;
响应于所述密封数据块请求,更新与所述密封数据块请求相对应的数据块的数据块信息,其中,所述数据块信息包括所述数据块的状态信息以及所述数据块的已占用的配额的信息;
基于所述数据块信息,更新所述单级目录的已占用的配额。
对于以上方法,在一种可能的实现方式中,所述方法还包括:
接收客户端的数据块信息获取请求,其中,所述数据块信息获取请求携带数据块的标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
响应于客户端的数据块信息获取请求,确定与所述标识相对应的数据块的数据块信息;
将所述数据块信息发送给所述客户端,所述数据块信息用于所述客户端根据所述数据块信息从对应的所述单级目录的数据块中读取所述单级目录下的文件。
根据本公开实施例的第二方面,提供一种文件存储方法,所述方法应用于分布式文件系统中部署有客户端的服务器中,所述分布式文件系统还包括命名节点以及多个数据节点,所述方法包括:
向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
接收所述命名节点发送的数据块的数据块信息,所述数据块信息包括所述单级目录的信息;
将所述数据块确定为所述单级目录的可用的数据块;
根据所述数据块信息将所述单级目录下的文件写入相应的数据块中。
对于以上方法,在一种可能的实现方式中,所述方法还包括:
在所述可用的数据块被写满时,向所述命名节点发送密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额;
向所述命名节点发送数据块创建请求,包括:
在所述单级目录下没有可用的数据块时,向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息。
对于以上方法,在一种可能的实现方式中,所述方法还包括:
在将文件写入所述可用的数据块时,检测所述可用的数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息是否相同;
在所述数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息相同时,将所述文件写入所述可用的数据块中。
对于以上方法,在一种可能的实现方式中,在完成将所述文件写入所述可用的数据块中时,基于所述可用的数据块的标识、偏移地址以及所述可用的数据块所属的单级目录的信息,确定所述文件的存储路径。
对于以上方法,在一种可能的实现方式中,所述方法还包括:
基于待读取的文件的存储路径,确定所述文件所属数据块的标识、偏移地址以及所述文件的单级目录的信息;
向命名节点发送数据块信息获取请求,其中,所述数据块信息获取请求携带所述标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息;
获取所述命名节点发送的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
基于所述数据块信息,确定所述数据块所属的单级目录的信息;
在所述数据块所属的单级目录的信息与所述文件的单级目录的信息相同时,从相应数据块中读取所述文件。
对于以上方法,在一种可能的实现方式中,所述方法还包括:
在所述数据块所属的单级目录的信息与所述文件的单级目录的信息不相同时,返回读文件错误信息。
根据本公开实施例的第三方面,提供一种存储空间分配装置,所述装置应用于分布式文件系统中部署有命名节点的服务器中,所述分布式文件系统还包括客户端以及多个数据节点,所述装置包括:
第一请求接收模块,用于接收客户端的数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
判断模块,用于根据所述单级目录的配额和已占用的配额,判断是否满足数据块创建条件;
第一信息发送模块,用于在满足所述数据块创建条件时,创建数据块将数据块信息发送给所述客户端,所述数据块信息包括所述单级目录的信息,用于所述客户端根据所述数据块信息将所述单级目录下的文件写入相应的数据块中。
对于以上装置,在一种可能的实现方式中,所述配额包括:数据块空间配额以及文件数量配额,所述判断模块包括:
空间配额确定子模块,用于根据所述单级目录的数据块空间配额和所述单级目录的已占用的数据块空间配额,确定所述单级目录的剩余数据块空间配额;
判断子模块,用于在所述单级目录的剩余数据块空间配额大于或等于待创建数据块所占用的数据块空间,且所述单级目录的文件数量配额大于所述单级目录的已占用的文件数量配额时,判断满足数据块创建条件。
对于以上装置,在一种可能的实现方式中,所述装置还包括:
第一信息获取模块,用于在所述命名节点初始化时,扫描数据块状态表,获取多个数据块信息;
第一信息确定模块,用于基于所述多个数据块信息,确定所述单级目录下的多个数据块信息;
配额确定模块,用于基于所述单级目录下的多个数据块信息,确定所述单级目录的已占用的配额,
其中,所述数据块信息包括所述数据块的已占用的配额的信息。
对于以上装置,在一种可能的实现方式中,所述装置还包括:
第二请求接收模块,用于接收客户端发送的密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额;
信息更新模块,用于响应于所述密封数据块请求,更新与所述密封数据块请求相对应的数据块的数据块信息,其中,所述数据块信息包括所述数据块的状态信息以及所述数据块的已占用的配额的信息;
配额更新模块,用于基于所述数据块信息,更新所述单级目录的已占用的配额。
对于以上装置,在一种可能的实现方式中,所述装置还包括:
第三请求接收模块,用于接收客户端的数据块信息获取请求,其中,所述数据块信息获取请求携带数据块的标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
第二信息确定模块,用于响应于客户端的数据块信息获取请求,确定与所述标识相对应的数据块的数据块信息;
第二信息发送模块,用于将所述数据块信息发送给所述客户端,所述数据块信息用于所述客户端根据所述数据块信息从对应的所述单级目录的数据块中读取所述单级目录下的文件。
根据本公开实施例的第四方面,提供一种文件存储装置,所述装置应用于分布式文件系统中部署有客户端的服务器中,所述分布式文件系统还包括命名节点以及多个数据节点,所述装置包括:
第一请求发送模块,用于向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
信息接收模块,用于接收所述命名节点发送的数据块的数据块信息,所述数据块信息包括所述单级目录的信息;
确定模块,用于将所述数据块确定为所述单级目录的可用的数据块;
第一写入模块,用于根据所述数据块信息将所述单级目录下的文件写入相应的数据块中。
对于以上装置,在一种可能的实现方式中,所述装置还包括:
第二请求发送模块,用于在所述可用的数据块被写满时,向所述命名节点发送密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额;
所述第一请求发送模块包括:
请求发送子模块,用于在所述单级目录下没有可用的数据块时,向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息。
对于以上装置,在一种可能的实现方式中,所述装置还包括:
检测模块,用于在将文件写入所述可用的数据块时,检测所述可用的数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息是否相同;
第二写入模块,用于在所述数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息相同时,将所述文件写入所述可用的数据块中。
对于以上装置,在一种可能的实现方式中,存储路径确定模块,用于在完成将所述文件写入所述可用的数据块中时,基于所述可用的数据块的标识、偏移地址以及所述可用的数据块所属的单级目录的信息,确定所述文件的存储路径。
对于以上装置,在一种可能的实现方式中,所述装置还包括:
文件信息确定模块,用于基于待读取的文件的存储路径,确定所述文件所属数据块的标识、偏移地址以及所述文件的单级目录的信息;
信息请求模块,用于向命名节点发送数据块信息获取请求,其中,所述数据块信息获取请求携带所述标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息;
第二信息获取模块,用于获取所述命名节点发送的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
单级目录信息确定模块,用于基于所述数据块信息,确定所述数据块所属的单级目录的信息;
文件读取模块,用于在所述数据块所属的单级目录的信息与所述文件的单级目录的信息相同时,从相应数据块中读取所述文件。
对于以上装置,在一种可能的实现方式中,所述装置还包括:
错误信息返回模块,用于在所述数据块所属的单级目录的信息与所述文件的单级目录的信息不相同时,返回读文件错误信息。
根据本公开实施例的第五方面,提供一种存储空间分配装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述方法。
根据本公开实施例的第六方面,提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得处理器能够执行上述存储空间分配方法。
根据本公开实施例的第七方面,提供一种文件存储装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述方法。
根据本公开实施例的第八方面,提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得处理器能够执行上述文件存储方法。
本公开的实施例提供的技术方案可以包括以下有益效果:能够接收客户端携带单级目录的信息的数据块创建请求,在根据单级目录的配额和已占用的配额判断满足数据块创建条件时,创建数据块将数据块信息发送给客户端,从而实现具备单级目录的分布式文件系统,可区分不同业务用户的文件。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种分布式文件系统的架构的示意图。
图2是根据一示例性实施例示出的一种存储空间分配方法的流程图。
图3是根据一示例性实施例示出的一种存储空间分配方法的流程图。
图4是根据一示例性实施例示出的一种存储空间分配方法的流程图。
图5是根据一示例性实施例示出的一种存储空间分配方法的流程图。
图6是根据一示例性实施例示出的一种存储空间分配方法的流程图。
图7是根据一示例性实施例示出的一种文件存储方法的流程图。
图8是根据一示例性实施例示出的一种文件存储方法的流程图。
图9是根据一示例性实施例示出的一种文件存储方法的流程图。
图10是根据一示例性实施例示出的一种文件存储方法的流程图。
图11是根据一示例性实施例示出的一种文件存储方法的流程图。
图12是根据一示例性实施例示出的一种文件存储方法的流程图。
图13是根据一示例性实施例示出的一种存储空间分配方法的应用场景的示意图。
图14是根据一示例性实施例示出的一种存储空间分配装置的框图。
图15是根据一示例性实施例示出的一种存储空间分配装置的框图。
图16是根据一示例性实施例示出的一种文件存储装置的框图。
图17是根据一示例性实施例示出的一种文件存储装置的框图。
图18是根据一示例性实施例示出的一种存储空间分配装置的框图。
图19是根据一示例性实施例示出的一种文件存储装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种分布式文件系统的架构的示意图。分布式文件系统的构架中可以主要包括客户端(Client)、元数据节点(MetaNode)、命名节点(NameNode)以及数据节点(DataNode)。
其中,客户端负责提供文件的读写接口。元数据节点负责持久化存储分布式文件系统的相关元数据信息,包括数据块(Block)的分布信息、当前所有数据节点的信息以及目录信息等,例如,可以使用Mysql数据库来实现。命名节点可以在内存中缓存元数据节点数据库中的元数据信息,并接受客户端和数据节点的所有元数据请求。数据节点可以负责存储文件的数据和相关的元数据信息,按照数据块的方式存储,文件占用数据块的一部分。数据块按照多副本的方式存放在多个数据节点上,一个数据节点上可能存在多个磁盘(Storage)。本公开对上述数据块副本个数以及数据节点上的磁盘数量等均不作具体限定。
图2是根据一示例性实施例示出的一种存储空间分配方法的流程图。如图2所示,该方法应用于分布式文件系统中部署有命名节点的服务器中,该分布式文件系统还包括客户端以及多个数据节点。根据本公开实施例的存储空间分配方法包括:
在步骤S201中,接收客户端的数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
在步骤S202中,根据所述单级目录的配额和已占用的配额,判断是否满足数据块创建条件;
在步骤S203中,在满足所述数据块创建条件时,创建数据块将数据块信息发送给所述客户端,所述数据块信息包括所述单级目录的信息,用于所述客户端根据所述数据块信息将所述单级目录下的文件写入相应的数据块中。
根据本公开实施例,能够接收客户端携带单级目录的信息的数据块创建请求,在根据单级目录的配额和已占用的配额判断满足数据块创建条件时,创建数据块将数据块信息发送给客户端,实现具备单级目录的分布式文件系统,具备单级目录的分布式文件系统保存的元数据数据量较小,不局限于分布式文件系统的命名节点的内存和存储量的限制,因此,可以满足海量小文件的存储需求,并提高该分布式文件系统的可扩展性。同时,具备单级目录的分布式文件系统支持单级目录,可以对不同业务用户的文件进行区分,提供分目录的功能,还可以对单级目录设置配额,限制业务用户的文件占用的配额。
如前文所述,该分布式文件系统的元数据节点中存储了文件系统的元数据信息(包括目录信息),并由命名节点的内存中缓存该元数据信息。客户端可以创建单级目录,例如,该客户端可以向命名节点(部署有命名节点的服务器)发送创建单级目录的请求,该分布式文件系统的管理员可以将该单级目录的信息作为配置信息,存放在元数据节点的配置表(Configuration Table)中,并缓存在命名节点的内存中。举例来说,该管理员可以在该配置表中增加一个通道(Channel)信息作为单级目录的信息,例如,可以增加一个通道信息为MyApp,此时,创建了单级目录MyApp。
另外,该分布式文件系统还会将每个数据块的数据块信息存放在元数据节点的数据块状态表(BlockStatTable)里,并缓存在该命名节点的内存中。该数据块信息中也包括一个通道信息作为单级目录的信息,该通道信息可以表明该数据块所属于的单级目录,某一单级目录下的数据块可用于存储当该单级目录下的文件。举例来说,某一数据块的数据块信息中的通道信息表明该数据块属于MyApp这个单级目录,则其可以存储当前MyApp这个单级目录下的文件。
通过这种方式,将单级目录的信息作为配置信息存放在元数据节点的配置表中,并在元数据节点的数据块状态表中,将数据块的数据块信息中增加了代表该数据块所属的单级目录的信息,可以创建并实现多个不同的单级目录,从而实现对不同的业务用户提供分目录的功能。本领域技术人员应理解,可以通过相关技术实现对单级目录的创建和实现,数据块信息可以包括多种信息,例如,数据块的单级目录的信息、数据块的分布信息、数据块的空间大小、文件数量、数据块状态信息等,本公开对此不作限制。
在一种可能的实现方式中,该命名节点接收客户端的数据块创建请求,其中,所述数据块创建请求携带单级目录的信息。
举例来说,客户端在希望在某个单级目录下写文件时,可以向命名节点发起携带该单级目录的信息的数据块创建请求。该命名节点接收该携带单级目录的信息的数据块创建请求。例如,客户端创建了自己的单级目录(例如,MyApp),此时,该单级目录下可能还没有数据块。客户端在希望向单级目录MyApp下写文件时,可以向命名节点发起数据块创建请求。或者,客户端在希望向单级目录MyApp下写文件时,其之前向命名节点申请的该单级目录下的数据块已经写满了,此时,该客户端也可以向命名节点发起数据块创建请求,其中,该数据块创建请求携带该单级目录的信息。此时,该命名节点接收到客户端的携带单级目录的信息的数据块创建请求。
在一种可能的实现方式中,该命名节点可以根据该单级目录的配额和已占用的配额,判断是否满足数据块创建条件。
举例来说,该命名节点接收到客户端的携带单级目录的信息的数据块创建请求时,可以根据该单级目录的配额和已占用的配额,判断是否满足数据块创建条件。其中,配额是指该分布式文件系统为该单级目录设置的总额度。该分布式文件系统的管理员可以将该单级目录的配额作为配置信息,存放在元数据节点的配置表。该命名节点在接收到客户端携带该单级目录的信息的数据块创建请求时,可以根据该单级目录的配额和已占用的配额,判断是否满足数据块创建条件。
通过这种方式,可以对单级目录设置配额,限制客户端上传到该单级目录的文件占用空间和文件数量等。本领域技术人员应理解,各单级目录配额大小、种类可以包括多种形式,例如,数据块空间配额、文件数量配额等,某一单级目录的配额可以为极限配额(例如,最大配额、零配额等),本公开对此不作限制。
在一种可能的实现方式中,命名节点可以通过查询配置表,来确定该单级目录的配额。
举例来说,如前文所述,该分布式文件系统的管理员可以将该单级目录的配额作为配置信息,存放在元数据节点的配置表。该命名节点的内存中缓存元数据节点的元数据信息,该命名节点可以通过查询其缓存在内存中的元数据节点的元数据信息中的配置表,可以确定该单级目录的配额的信息。
在一种可能的实现方式中,该命名节点还可以确定该单级目录已占用的配额。
图3是根据一示例性实施例示出的一种存储空间分配方法的流程图。在一种可能的实现方式中,如图3所示,所述方法还包括:
在步骤S204中,在所述命名节点初始化时,扫描数据块状态表,获取多个数据块信息;
在步骤S205中,基于所述多个数据块信息,确定所述单级目录下的多个数据块信息;
在步骤S206中,基于所述单级目录下的多个数据块信息,确定所述单级目录的已占用的配额,
其中,所述数据块信息包括所述数据块的已占用的配额的信息。
举例来说,数据块的数据块信息中可以包括该数据块的单级目录的信息、数据块的已占用的配额的信息、数据块分布等信息。该命名节点可以获取单级目录下的多个数据块信息,并基于该多个数据块信息,确定该单级目录的已占用的配额。例如,该命名节点可以在初始化时扫描数据块的状态表,得到所有数据块的数据块信息,并可以按照数据块信息中的单级目录的信息对数据块进行分类。例如,该命名节点在初始化时扫描数据块的状态表,可以得到所有数据块的数据块信息。数据块信息中包括单级目录的信息,例如,一部分数据块的数据块信息中的单级目录的信息为MyApp,另一部分数据块的数据块信息中的单级目录的信息为MyMusic,则可以按照数据块信息中的单级目录的信息将数据块分为两类,分别确定单级目录MyApp下的多个数据块信息,以及单级目录MyMusic下的多个数据块信息。基于单级目录下的多个数据块信息,可以确定该单级目录的已占用的配额。例如,可以根据单级目录MyApp下的多个数据块信息的数据块的已占用的配额的信息,确定单级目录MyApp的已占用的配额。例如,可以将单级目录MyApp下的所有数据块的已占用的配额的信息相加,从而得到单级目录下的已占用的配额。
通过这种方式,可以确定各单级目录的配额以及已占用的配额,从而用于判断是否满足数据块创建条件。本领域技术人员应理解,可以采用相关技术确定单级目录的配额以及已占用的配额,本公开对此不作限制。
在一种可能的实现方式中,可以将确定的各单级目录的已占用的配额的信息存入元数据节点的配置表中,并缓存在该命名节点的内存中。
举例来说,如前文所述,各单级目录的配额的信息存储在配置表中,该命名节点可以通过查询配置表,确定单级目录的配额的信息。在该命名节点初始化后,可以将获取到各命名节点的已占用的配额的信息也存入元数据节点的配置表中,并缓存在该命名节点的内存中。在该命名节点需要更新单级目录的已占用的配额的情况下,例如,在该单级目录下的某个数据块被写满时,该命名节点需要更新该单级目录的已占用的配额,该命名节点可以通过查询配置表得到该单级目录的已占用的配额的信息,并更新该单级目录的已占用的配额的信息。这样,该命名节点在接收到客户端的携带单级目录的信息的数据块创建请求时,可以通过查询配置表中的该单级目录的配额和该单级目录的已占用的配额的信息,来判断是否满足数据块创建条件。本领域技术人员应理解,可以采用相关技术实现将各单级目录的已占用的配额的信息存入元数据节点的配置表中,并缓存在该命名节点的内存中,本公开对此不作限制。
图4是根据一示例性实施例示出的一种存储空间分配方法的流程图。在一种可能的实现方式中,如图4所示,所述配额包括:数据块空间配额以及文件数量配额,步骤S202可以包括:
在步骤S2021中,根据所述单级目录的数据块空间配额和所述单级目录的已占用的数据块空间配额,确定所述单级目录的剩余数据块空间配额;
在步骤S2022中,在所述单级目录的剩余数据块空间配额大于或等于待创建数据块所占用的数据块空间,且所述单级目录的文件数量配额大于所述单级目录的已占用的文件数量配额时,判断满足数据块创建条件。
举例来说,该分布式文件系统为该单级目录设置的可以包括数据块空间配额以及文件数量配额。例如,该分布式文件系统可以给单级目录MyApp设置数据块空间配额为10T,文件数量配额为100万个。本领域技术人员应理解,配额可以包括多种形式,本公开对此不作限制。
在一种可能的实现方式中,可以根据所述单级目录的数据块空间配额和所述单级目录的已占用的数据块空间配额,确定所述单级目录的剩余数据块空间配额。
如前文所述,在客户端发起数据块创建请求时,该请求中包含需要创建的数据块的单级目录的信息。该命名节点可以根据该单级目录的配额和已占用的配额,判断是否满足数据块创建条件。例如,可以根据单级目录的数据块空间配额和单级目录的已占用的数据块空间配额,确定该单级目录的剩余数据块空间配额。
举例来说,该命名节点可以确定该单级目录的配额和已占用的配额。其中,该单级目录的配额可以如前文所述,通过查询配置表获取,在此不再赘述。现以单级目录MyAPP为例说明如何确定单级目录的已占用的配额。例如,该命名节点可以获取单级目录MyAPP下的所有数据块的数据块信息。该数据块信息包括该数据块的已占用的配额的信息,分别为该数据块的数据块空间的信息和数据块的文件数量的信息。该命名节点可以将单级目录MyAPP下的所有数据块的数据块信息中的数据块空间的信息相加,获取该单级目录的已占用的数据块空间配额,将该所有数据块的数据块信息中的文件数量的信息相加,获取到该单级目录的已占用的文件数量配额。从而可以确定该单级目录的数据块空间配额、该单级目录的文件数量配额、该单级目录的已占用的数据块空间配额以及该单级目录的已占用的文件数量配额。
在一种可能的实现方式中,可以根据所述单级目录的数据块空间配额和所述单级目录的已占用的数据块空间配额,确定所述单级目录的剩余数据块空间配额。
举例来说,可以将确定的单级目录的数据块空间配额和所述单级目录的已占用的数据块空间配额做差,确定该单级目录的剩余数据块空间配额。
在一种可能的实现方式中,在所述单级目录的剩余数据块空间配额大于或等于待创建数据块所占用的数据块空间,且所述单级目录的文件数量配额大于所述单级目录的已占用的文件数量配额时,判断满足数据块创建条件。
举例来说,该单级目录MyApp的配额包括可用的数据块空间配额为10T,文件数量配额为100万个,已占用的数据块空间配额为8T,文件数量配额为80万个。在客户端发起携带单级目录MyApp的信息的数据块创建请求时,该命名节点可以确定该单级目录的剩余数据块空间配额为2T,此时,该单级目录的剩余数据块空间配额(2T)大于待创建数据块所占用的数据块空间(例如,待创建数据块的数据块空间为512M),且该单级目录的文件数量配额(100万)大于该单级目录的已占用的文件数量配额(80万),可以判断满足数据块创建条件。
通过这种方式,可以根据单级目录的配额和已占用的配额,以及待创建数据块所占用的数据块空间,来可以判断是否满足数据块创建条件。本领域技术人员应理解,只要可以根据单级目录的配额和已占用的配额判断是否满足数据块创建条件即可,本公开对此不作限制。
在一种可能的实现方式中,在满足所述数据块创建条件时,创建数据块将数据块信息发送给所述客户端,所述数据块信息包括所述单级目录的信息,用于所述客户端根据所述数据块信息将所述单级目录下的文件写入相应的数据块中。
举例来说,在满足数据块创建条件时,该命名节点可以创建数据块,并在该数据块的数据块状态表中写入相应信息(例如,写入该数据块属于的单级目录的信息等),并将该数据块的数据块信息发送给客户端,该数据块信息包括单级目录的信息,用于客户端根据数据块信息将单级目录下的文件写入相应的数据块中。本领域技术人员应理解,可以采用相关技术实现在满足数据块创建条件时,创建数据块将数据块信息发送给客户端,本公开对此不作限制。
在一种可能的实现方式中,在不满足所述数据块创建条件时,将无法响应请求结果返回给所述客户端。
举例来说,当该单级目录的剩余空间配额小于待创建数据块所占用的数据块空间,或者该单级目录的文件数量配额等于已占用的文件数量配额时,此时,无法再创建该单级目录下的数据块。例如,该单级目录MyApp的配额包括可用的存储空间为10T,文件数量为100万个,已占用的配额为10T,文件数量为80万个时,当前单级目录无剩余数据块空间,此时,无法再创建该单级目录下的数据块。或者,该单级目录MyApp的配额包括可用的存储空间为10T,文件数量为100万个,已占用的配额为1T,文件数量为100万个时,该单级目录的已占用的文件数量配额已经等于该单级目录的文件数量配额,此时,不满足数据块创建条件,无法创建数据块。
通过这种方式,可以对单级目录设置配额,限制客户端上传到该单级目录的文件占用空间和文件数量。本领域技术人员应理解,对各单级目录配额大小、种类可以包括多种方式,本公开对此不作限制。
图5是根据一示例性实施例示出的一种存储空间分配方法的流程图。在一种可能的实现方式中,如图5所示,所述方法还包括:
在步骤S207中,接收客户端发送的密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额;
在步骤S208中,响应于所述密封数据块请求,更新与所述密封数据块请求相对应的数据块的数据块信息,其中,所述数据块信息包括所述数据块的状态信息以及所述数据块的已占用的配额的信息;
在步骤S209中,基于所述数据块信息,更新所述单级目录的已占用的配额。
举例来说,在客户端将文件写入数据节点的数据块过程中,一个数据块被写满时,该客户端可以向命名节点发送密封数据块请求,该密封数据块请求携带该数据块的标识以及该数据块已占用的配额的信息。该命名节点接收到该密封数据块请求时,响应于该密封数据块请求,可以根据该密封数据块请求中的数据块的标识,确定与该数据块的标识相对应的数据块,可以更新该数据块的数据块信息,其中,可以更新该数据块的数据块信息中的数据块的状态信息以及该数据块的已占用的配额的信息。例如,可以将该数据块的状态信息更新为数据块已满,例如,可以将该数据块的数据块信息中代表其状态的信息的Status字段更新为BLOCK_DUPLICATE,并可以更新该数据块的数据块信息中的数据块空间、数据块文件数量等代表该数据块的已占用的配额的字段信息。该命名节点还可以根据该数据块信息,获取到该数据块所属于的单级目录的信息,根据该数据块的单级目录的信息,该命名节点可以从配置信息中获取该单级目录的配额以及已占用的配额,该命名节点可以将该需要密封的数据块的已占用的配额的信息,增加到该单级目录的已占用的配额,以更新该单级目录的已占用的配额。例如,该命名节点接收到了一个密封数据块请求,该命名节点可以根据该密封数据块请求携带的数据块的标识,确定该数据块,并更新该数据块的数据块信息中的Status字段更新为BLOCK_DUPLICATE,并根据密封数据块请求携带的该数据块的数据块空间、数据块文件数量等数据块的已占用的配额的信息,更新该数据块的数据块信息中的相应字段。该命名节点可以根据该数据块的数据块信息确定该数据块所属的单级目录的信息,并从配置表中获取该单级目录的配额的信息以及已占用的配额的信息,并将该刚刚密封的数据块的已占用的配额增加到该配置表中该单级目录中的已占用的配额的信息,例如,更新配置表中该单级目录中代表该单级目录的已占用的配额的相应字段。
通过这种方式,可以及时更新数据块信息以及该数据块所属的单级目录的已占用的配额信息。本领域技术人员应理解,可以采用相关技术实现根据密封数据块请求,更新相应数据块的数据块信息以及更新该数据块所属单级目录的已占用的配额的信息,本公开对此不作限制。
图6是根据一示例性实施例示出的一种存储空间分配方法的流程图。在一种可能的实现方式中,如图6所示,所述方法还包括:
在步骤S210中,接收客户端的数据块信息获取请求,其中,所述数据块信息获取请求携带数据块的标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
在步骤S211中,响应于客户端的数据块信息获取请求,确定与所述标识相对应的数据块的数据块信息;
在步骤S212中,将所述数据块信息发送给所述客户端,所述数据块信息用于所述客户端根据所述数据块信息从对应的所述单级目录的数据块中读取所述单级目录下的文件。
举例来说,当客户端想要读文件时,客户端会向命名节点发送数据块信息获取请求,该数据块信息获取请求携带该数据块的标识。例如,客户端读文件时,会根据文件存储路径,例如,MyApp/1789234027ds3333333dafsfs2332312fdge93,来确定该文件所述数据块的标识、偏移地址以及该文件的单级目录的信息。并向命名节点发送携带该数据块的标识的数据块信息获取请求。该命名节点可以根据该数据块信息获取请求中携带的数据块的标识,确定与该标识相对应的数据块的数据块信息,并将该数据块信息发送给客户端,数据块信息用于客户端根据该数据块信息从对应的单级目录的数据块中读取该单级目录下的文件。
通过这种方式,可以便于客户端准确读取单级目录下的文件,保证该具备单级目录的分布式文件系统的可用性。本领域技术人员应理解,可以采用相关技术实现根据数据块信息获取请求携带的数据块的标识,确定相应的数据块的数据块信息,并将该数据块信息发送给客户端,本公开对此不作限制。
图7是根据一示例性实施例示出的一种文件存储方法的流程图。如图7所示,该方法应用于分布式文件系统中部署有客户端的服务器中,该分布式文件系统还包括命名节点以及多个数据节点。根据本公开实施例的存储方法包括:
在步骤S701中,向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
在步骤S702中,接收所述命名节点发送的数据块的数据块信息,所述数据块信息包括所述单级目录的信息;
在步骤S703中,将所述数据块确定为所述单级目录的可用的数据块;
在步骤S704中,根据所述数据块信息将所述单级目录下的文件写入相应的数据块中。
根据本公开实施例,通过向命名节点发送携带单级目录的信息的数据块创建请求,并接收该命名节点发送的数据块的数据块信息,将该数据块确定为单级目录的可用数据块,并根据该数据块信息将单级目录下的文件写入相应的数据块中,从而实现了具备单级目录的分布式文件系统,减小分布式文件系统的元数据的数据量。
举例来说,该客户端可以向命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息,以创建单级目录下的可用的数据块。该客户端可以接收命名节点发送的数据块的数据块信息,并将该数据块确定为该单级目录的可用的数据块。其中,在客户端希望向该单级目录下写文件时,在存在该单级目录的可用的数据块时,可以不用每次都向命名节点发送数据块创建请求,可以基于其已经确定的该单级目录的可用数据块的数据块信息,直接向该分布式文件系统中的数据节点相应数据块中写入文件。例如,该客户端可以向命名节点发送携带单级目录的信息MyApp的数据块创建请求,该客户端接收到命名节点发送的属于单级目录MyApp的数据块的数据块信息后,可以将该数据块确定为单级目录MyApp的可用的数据块,并将该单级目录MyApp文件写入到该数据块中,此时该数据块可能没有被写满。在一段时间后,当该客户端希望再次向该单级目录MyApp写文件时,此时,该客户端可以根据之前确定的该单级目录下的可用的数据块的数据块信息,将该单级目录下的文件写入到该可用的数据块中,可以无需重新向命名节点发送数据块创建请求。
图8是根据一示例性实施例示出的一种文件存储方法的流程图。在一种可能的实现方式中,如图8所示,该方法还包括:
在步骤S705中,在所述可用的数据块被写满时,向所述命名节点发送密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额;
步骤S701可以包括:
在步骤S7011中,在所述单级目录下没有可用的数据块时,向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息。
举例来说,在客户端根据其确定的该单级目录下的可用的数据块的数据块信息向数据节点相应数据块写入文件时,可能出现该可用的数据块被写满的情况,此时,该客户端可以向命名节点发送密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额。
此时,该客户端确定的该单级目录的可用的数据块可能都已写满,可能单级目录下没有可用的数据块,客户端可以向命名节点发送携带单级目录的信息的数据块创建请求,以获取新的该单级目录的可用的数据块。
通过这种方式,可以在单级目录下可用的数据块被写满时,及时请求命名节点密封该数据块,并在单级目录下没有可用的数据块时,向命名节点申请创建该单级目录下的数据块。本领域技术人员应理解,可以采用相关技术实现向命名节点发送密封数据块请求以及在单级目录下没有可用的数据块时,向命名节点发送携带单级目录的信息的数据块创建请求,本公开对此不作限制。
图9是根据一示例性实施例示出的一种文件存储方法的流程图。在一种可能的实现方式中,如图9所示,该方法还包括:
在步骤S706中,在将文件写入所述可用的数据块时,检测所述可用的数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息是否相同;
在步骤S707中。在所述数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息相同时,将所述文件写入所述可用的数据块中。
举例来说,客户端可以通过系统提供的文件写入接口,将文件写入数据节点中相应的数据块中时,其中,该文件系统提供的接口携带单级目录的信息。客户端在将文件写入到数据节点相应的数据块中时,客户端可以根据该数据块的数据块信息,确定该数据块所属的单级目录,客户端检测该数据块所属的单级目录与文件系统提供的接口所携带的单级目录的信息是否相同。例如,客户端希望将文件写入可用的数据块,可以根据该数据块的数据块信息确定该数据块属于单级目录MyApp,客户端在通过系统提供的接口写入文件时,可以检测该接口所携带的单级目录的信息与该数据块所属的单级目录信息是否相同。
在该数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息相同时,将该文件写入该可用的数据块中。例如,在检测到系统提供的接口所携带的单级目录的信息是MyApp时,与该可用的数据块的单级目录的信息相同,则可以将文件写入该可用的数据块中。
在该数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息不相同时,则无法将文件写入该可用的数据块中。
通过这种方式,可以实现分布式文件系统单级目录的文件写入操作。本领域技术人员应理解,可以采用相关技术检测该数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息是否相同,并在相同时将文件写入数据节点相应的数据块中,本公开对此不作限制。
图10是根据一示例性实施例示出的一种文件存储方法的流程图。在一种可能的实现方式中,如图10所示,该方法还包括:
在步骤S708中,在完成将所述文件写入所述可用的数据块中时,基于所述可用的数据块的标识、偏移地址以及所述可用的数据块所属的单级目录的信息,确定所述文件的存储路径。
举例来说,在完成将文件写入该可用的数据块中时,可以基于该可用数据块的标识、偏移地址以及该可用的数据块所属的单级目录的信息,生成该文件的存储路径。例如,该文件写入的数据块的标识为dbcca966-6f32-46d7-a8e1-6db7f41853c4,偏移地址为1000。在经过一系列变换之后得到文件的文件名为:18950447296d458803c0fb38f041f8052beb7e2d,加上该可用的数据块所属的单级目录的信息,例如MyApp,可以生成该文件的存储路径,例如,MyApp/18950447296d458803c0fb38f041f8052beb7e2d。客户端可以将生成的该文件的存储路径返回给用户。
通过这种方式,可以在将文件写入到可用的数据块中后,生成该文件的存储路径,该存储路径可用于在相应单级目录下寻找该文件。本领域技术人员应理解,可以采用相关技术实现基于该可用数据块的标识、偏移地址以及该可用的数据块所属的单级目录的信息,生成该文件的存储路径,可以采用相关技术根据数据块的标识和偏移地址,经过变化生成文件的文件名,本公开对此不作限制。
图11是根据一示例性实施例示出的一种文件存储方法的流程图。在一种可能的实现方式中,如图11所示,该方法还包括:
在步骤S709中,基于待读取的文件的存储路径,确定所述文件所属数据块的标识、偏移地址以及所述文件的单级目录的信息;
在步骤S710中,向命名节点发送数据块信息获取请求,其中,所述数据块信息获取请求携带所述标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息;
在步骤S711中,获取所述命名节点发送的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
在步骤S712中,基于所述数据块信息,确定所述数据块所属的单级目录的信息;
在步骤S713中,在所述数据块所属的单级目录的信息与所述文件的单级目录的信息相同时,从相应数据块中读取所述文件。
举例来说,客户端在读取文件时,可以基于待读取的文件的存储路径,确定该文件所属的数据块的标识、偏移地址以及文件的单级目录的信息。例如,客户端可以根据该文件的存储路径:MyApp/18950447296d458803c0fb38f041f8052beb7e2d,确定该文件所属的数据块的标识、偏移地址以及文件的单级目录的信息。例如,客户端可以分解该存储路径,确定该文件所属的数据块标识、偏移地址以及文件的单级目录的信息为:数据块的标识为dbcca966-6f32-46d7-a8e1-6db7f41853c4,偏移地址为1000,文件的单级目录的信息为MyApp。
客户端向命名节点发送数据块信息获取请求,其中,所述数据块信息获取请求携带所述标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息。客户端可以获取该命名节点发送的数据块信息,其中,该数据块信息包括所述单级目录的信息。客户端可以根据命名节点发送的数据块信息确定该数据块所属的单级目录的信息,例如,可以确定命名节点发送的数据块信息所属的单级目录信息也为MyApp。此时,该数据块所属的单级目录的信息与该文件的单级目录的信息相同,客户端可以从相应数据块中读取该文件。
通过这种方式,可以实现客户端准确从数据节点读取其自己的单级目录下的文件,保证了该分布式文件系统的可用性和稳定性。本领域技术人员应理解,可以采用相关技术实现上述方法,本公开对此不作限制。
图12是根据一示例性实施例示出的一种文件存储方法的流程图。在一种可能的实现方式中,如图12所示,该方法还包括:
在步骤S714中,在所述数据块所属的单级目录的信息与所述文件的单级目录的信息不相同时,返回读文件错误信息。
举例来说,客户端分解该文件的存储路径,得到该文件所属的单级目录的信息为MyApp。如前文所述,客户端可以通过向命名节点发送数据块信息获取请求,获取到命名节点发送的数据块信息,根据该数据块信息可以确定该数据块所属的单级目录的信息。在确定出该数据块所属的单级目录的信息与该文件的单级目录的信息MyApp不同时,例如,该数据块所属的单级目录的信息为MyMusic时,说明当前该单级目录下没有该待读取的文件,返回读文件错误信息。
通过这种方式,可以准确地确定该单级目录是否存在待读取的文件,在不存在待读取的文件时,返回读文件错误信息,保证客户端只能访问其自己单级目录下的文件,从而保证了该分布式文件系统的可用性和稳定性。本领域技术人员应理解,可以采用相关技术实现上述方法,本公开对此不作限制。
应用示例
以下结合“客户端将文件写入单级目录MyApp”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解文件写入方法的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
图13是根据一示例性实施例示出的一种存储空间分配方法的应用场景的示意图。如图13所示,在该应用示例中,客户端将文件写入单级目录MyApp中。
在该应用示例中,客户端创建了单级目录MyApp。该分布式文件系统的元数据节点的配置表中创建了该单级目录MyApp,该配置表中还包括有该单级目录MyApp的配额的信息以及已占用的配额的信息。该分布式文件系统的命名节点为部署有命名节点的服务器,并缓存了元数据节点数据库中的元数据信息。该分布式文件系统的客户端为部署有客户端的服务器,该分布式文件系统还包括多个部署有数据节点的服务器。
在该应用示例中,该客户端想将文件写入到单级目录MyApp中。该客户端可以向命名节点发送数据块创建请求,该数据块创建请求携带单级目录的信息,例如,携带单级目录的信息MyApp,表示客户端想创建单级目录MyApp下的数据块。
在该应用示例中,该命名节点可以接收该携带单级目录的信息的数据块创建请求,该命名节点可以根据该单级目录的配额和已占用的配额,判断是否满足数据块创建条件。在该应用示例中,该命名节点可以通过查询配置表,获取该单级目录的配额和已占用的配额。其中,该单级目录的配额是该分布式文件系统为该单级目录设置的配额,例如,可以设置该单级目录的数据块空间配额以及该单级目录的文件数量配额。该单级目录的已占用的配额是该命名节点在初始化时,通过扫描数据块状态表,获取该多个数据块信息,并根据多个数据块信息,确定单级目录下的多个数据块信息,并基于单级目录下的多个数据块信息,确定该单级目录的已占用的配额。例如,在初始化时,根据数据块状态表,获取多个数据块信息,并根据多个数据块信息,确定单级目录MyApp下的多个数据块信息,将单级目录MyApp下的多个数据块信息的已占用的数据块空间以及已占用的文件数量分别相加,确定该单级目录的已占用的配额的信息,例如,包括该单级目录的已占用的数据块空间配额的信息以及该单级目录的已占用的文件数量配额的信息,将确定的该单级目录的已占用的配额,并存储在该分布式文件系统的配置表中。
在该应用示例中,该命名节点可以根据查询配置表获取的该单级目录的数据块空间配额、该单级目录的文件数量配额、该单级目录的已占用的数据块空间配额以及该单级目录的已占用的文件数量配额,判断是否满足数据块创建条件。例如,可以根据该单级目录的数据块空间配额以及该单级目录的已占用的数据块空间配额,确定该单级目录的剩余数据块空间配额。在该单级目录的剩余数据块空间配额大于或等于待创建数据块所占用的数据块空间,且该单级目录的文件数量配额大于该单级目录的已占用的文件数量配额时,可以判断满足数据块创建条件。例如,该单级目录的配额以及已占用的配额存储在元数据节点的配置表中,该命名节点可以根据其缓存的元数据信息确定该单级目录MyApp的配额为10T的数据块空间配额、100万个文件数量配额、该单级目录的已占用的数据块空间配额为0T以及已占用的文件数量配额为0个。在该应用示例中,该命名节点可以在初始化时扫描数据块的数据块状态表,并得到所有数据块的数据块信息,并可以按照数据块信息中的目录信息对数据块进行分类,将每个单级目录MyApp下的所有数据块的数据块空间和数据块的文件数量各自相加,从而得到单级目录MyApp下的已占用的配额(例如,初始阶段,该单级目录下还没有文件,包括已占用的数据块空间配额0T以及文件数量配额0个)。
在该应用示例中,可以根据单级目录MyApp的数据块空间配额和已占用的数据块空间配额,确定该单级目录MyApp的剩余空间配额为10T。在该应用示例中,该剩余空间配额大于待创建数据块所占用的数据块空间(例如,512M),且该文件数量配额(100万个)大于已占用的文件数量配额(0个),该命名节点判断满足数据块创建条件。在该应用示例中,在命名节点根据单级目录MyApp的配额和已占用的配额,判断不满足数据块创建条件时,可以将无法响应请求结果返回给客户端,此时,创建数据块失败。
在该应用示例中,在满足数据块创建请求时,该命名节点可以创建该数据块并将数据块信息发送给所述客户端,所述数据块信息包括所述单级目录的信息,用于所述客户端根据所述数据块信息将所述单级目录下的文件写入相应的数据块中。
在该应用示例中,客户端在接收到该命名节点发送的数据块信息后,可以通过该数据块信息得到该数据块所属的单级目录,该客户端可以将该数据块确定为该单级目录的可用的数据块。客户端可以根据该数据块信息将该单级目录下的文件写入相应的数据块中。在该应用示例中,客户端在将文件写入该可用的数据块时,可以检测该数据块的数据块信息中的单级目录的信息与用于写入文件的接口所携带的单级目录的信息是否相同,在两个单级目录的信息相同时,可以将该文件写入该数据块中。
在该应用示例中,客户端在完成将文件写入所述可用的数据块中时,基于所述可用的数据块的标识、偏移地址以及所述可用的数据块所属的单级目录的信息,确定所述文件的存储路径。例如,该文件写入的数据块的标识为dbcca966-6f32-46d7-a8e1-6db7f41853c4,偏移地址为1000。根据该标识以及偏移地址,可以在经过一系列变换之后得到文件的文件名为:18950447296d458803c0fb38f041f8052beb7e2d,在该文件的文件名上加上该可用的数据块所属的单级目录的信息,例如MyApp,可以生成该文件的存储路径,例如,存储路径为:MyApp/18950447296d458803c0fb38f041f8052beb7e2d。
在该应用示例中,在一个可用的数据块被写满的时候,客户端可以向命名节点发送密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额。该命名节点在收到该密封数据块请求时,该命名节点可以更新与该密封数据块请求相对应的数据块的数据块信息,例如,可以将该数据块的数据块信息的标识状态信息的Status字段改为BlockDuplicate(数据块已满),并设置该数据块的数据块空间和文件数量等代表该数据块的已占用的配额的字段信息。该命名节点还可以获取到该数据块的单级目录的信息,根据该单级目录的信息,查询配置表,得到该单级目录的已占用的配额,并增加该数据块的已占用的配额到该单级目录的已占用的配额,更新该单级目录的已占用的配额。例如,该单级目录的配额为数据块空间配额10T以及文件数量配额100万个。在一个可用的数据块写满后,该客户端向命名节点发送密封数据块请求,该请求携带该数据块的标识以及该数据块的已占用的配额信息,例如,该数据块的已占用的配额信息为已占用数据块空间配额512M以及已占用的文件数量配额1000个。该命名节点在接收到该密封数据块请求时,可以更新与该数据块的标识相对应的数据块的信息为数据块已满,并更新该数据块的数据块信息,并更新配置表中该单级目录的已占用的配额,例如,在当前的已占用的数据块空间配额0T基础上加上512M,在已占用的文件数量配额0个基础上加上1000个,并更新该单级目录的已占用的配额,例如,更新为该单级目录的已占用的配额为已占用的数据块空间配额512M以及该已占用的文件数量配额1000个。
在该应用示例中,客户端还可以访问自己单级目录下的文件。客户端可以将文件的存储路径分解得到该文件属于的单级目录、数据块标识以及数据块偏移地址等。该客户端可以向命名节点发送数据块信息获取请求,其中,所述数据块信息获取请求携带所述标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息。该命名节点响应于客户端的数据块信息获取请求,确定与所述标识相对应的数据块的数据块信息,并将该数据块信息发送给客户端。该客户端获取该命名节点发送的数据块信息,可以根据该数据块信息确定该数据块所属的单级目录的信息。在该数据块所属的单级目录的信息与该文件的单级目录的信息相同时,例如,都为MyApp时,可以根据该数据块信息,从相应的数据节点的数据块中读取该文件。在该数据块所属的单级目录的信息与该文件系统的单级目录的信息不相同时,返回读文件错误信息。
根据本公开实施例,能够接收客户端携带单级目录的信息的数据块创建请求,在根据单级目录的配额和已占用的配额判断满足数据块创建条件时,创建数据块将数据块信息发送给客户端,从而实现具备单级目录的分布式文件系统,减小分布式文件系统的元数据数据量。
图14是根据一示例性实施例示出的一种存储空间分配装置的框图。参照图14,该装置包括第一请求接收模块801,判断模块802和第一信息发送模块803。
该第一请求接收模块801,被配置为接收客户端的数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
该判断模块802,被配置为根据所述单级目录的配额和已占用的配额,判断是否满足数据块创建条件;
该第一信息发送模块803,被配置为在满足所述数据块创建条件时,创建数据块将数据块信息发送给所述客户端,所述数据块信息包括所述单级目录的信息,用于所述客户端根据所述数据块信息将所述单级目录下的文件写入相应的数据块中。
图15是根据一示例性实施例示出的一种存储空间分配装置的框图。参照图15,在一种可能的实现方式中,所述配额包括:数据块空间配额以及文件数量配额,所述判断模块802包括:
空间配额确定子模块8021,被配置为根据所述单级目录的数据块空间配额和所述单级目录的已占用的数据块空间配额,确定所述单级目录的剩余数据块空间配额;
判断子模块8022,被配置为在所述单级目录的剩余数据块空间配额大于或等于待创建数据块所占用的数据块空间,且所述单级目录的文件数量配额大于所述单级目录的已占用的文件数量配额时,判断满足数据块创建条件。
参照图15,在一种可能的实现方式中,所述装置还包括:
第一信息获取模块804,被配置为在所述命名节点初始化时,扫描数据块状态表,获取多个数据块信息;
第一信息确定模块805,被配置为基于所述多个数据块信息,确定所述单级目录下的多个数据块信息;
配额确定模块806,被配置为基于所述单级目录下的多个数据块信息,确定所述单级目录的已占用的配额,
其中,所述数据块信息包括所述数据块的已占用的配额的信息。
参照图15,在一种可能的实现方式中,所述装置还包括:
第二请求接收模块807,被配置为接收客户端发送的密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额;
信息更新模块808,被配置为响应于所述密封数据块请求,更新与所述密封数据块请求相对应的数据块的数据块信息,其中,所述数据块信息包括所述数据块的状态信息以及所述数据块的已占用的配额的信息;
配额更新模块809,被配置为基于所述数据块信息,更新所述单级目录的已占用的配额。
参照图15,在一种可能的实现方式中,所述装置还包括:
第三请求接收模块810,被配置为接收客户端的数据块信息获取请求,其中,所述数据块信息获取请求携带数据块的标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
第二信息确定模块811,被配置为响应于客户端的数据块信息获取请求,确定与所述标识相对应的数据块的数据块信息;
第二信息发送模块812,被配置为将所述数据块信息发送给所述客户端,所述数据块信息用于所述客户端根据所述数据块信息从对应的所述单级目录的数据块中读取所述单级目录下的文件。
图16是根据一示例性实施例示出的一种文件存储装置的框图。参照图16,该装置包括第一请求发送模块901,信息接收模块902、确定模块903和第一写入模块904。
该第一请求发送模块901,被配置为向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
该信息接收模块902,被配置为接收所述命名节点发送的数据块的数据块信息,所述数据块信息包括所述单级目录的信息;
该确定模块903,被配置为将所述数据块确定为所述单级目录的可用的数据块;
该第一写入模块904,被配置为根据所述数据块信息将所述单级目录下的文件写入相应的数据块中。
图17是根据一示例性实施例示出的一种文件存储装置的框图。参照图17,在一种可能的实现方式中,所述装置还包括:
第二请求发送模块905,被配置为在所述可用的数据块被写满时,向所述命名节点发送密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额;
所述第一请求发送模块901包括:
请求发送子模块9011,被配置为在所述单级目录下没有可用的数据块时,向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息。
参照图17,在一种可能的实现方式中,所述装置还包括:
检测模块906,被配置为在将文件写入所述可用的数据块时,检测所述可用的数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息是否相同;
第二写入模块907,被配置为在所述数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息相同时,将所述文件写入所述可用的数据块中。
参照图17,在一种可能的实现方式中,所述装置还包括:
存储路径确定模块908,被配置为在完成将所述文件写入所述可用的数据块中时,基于所述可用的数据块的标识、偏移地址以及所述可用的数据块所属的单级目录的信息,确定所述文件的存储路径。
参照图17,在一种可能的实现方式中,所述装置还包括:
文件信息确定模块909,被配置为基于待读取的文件的存储路径,确定所述文件所属数据块的标识、偏移地址以及所述文件的单级目录的信息;
信息请求模块910,被配置为向命名节点发送数据块信息获取请求,其中,所述数据块信息获取请求携带所述标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息;
第二信息获取模块911,被配置为获取所述命名节点发送的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
单级目录信息确定模块912,被配置为基于所述数据块信息,确定所述数据块所属的单级目录的信息;
文件读取模块913,被配置为在所述数据块所属的单级目录的信息与所述文件的单级目录的信息相同时,从相应数据块中读取所述文件。
参照图17,在一种可能的实现方式中,所述装置还包括:
错误信息返回模块914,被配置为在所述数据块所属的单级目录的信息与所述文件的单级目录的信息不相同时,返回读文件错误信息。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图18是根据一示例性实施例示出的一种存储空间分配装置的框图。例如,装置1800可以被提供为一服务器。参照图18,装置1800包括处理组件1822,其进一步包括一个或多个处理器,以及由存储器1832所代表的存储器资源,用于存储可由处理组件1822的执行的指令,例如应用程序。存储器1832中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1822被配置为执行指令,以执行上述方法。
装置1800还可以包括一个电源组件1826被配置为执行装置1800的电源管理,一个有线或无线网络接口1850被配置为将装置1800连接到网络,和一个输入输出(I/O)接口1858。装置1800可以操作基于存储在存储器1832的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1832,上述指令可由装置1800的处理组件1822执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图19是根据一示例性实施例示出的一种文件存储装置的框图。例如,装置1900可以被提供为一服务器。参照图19,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出(I/O)接口1958。装置1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1932,上述指令可由装置1900的处理组件1922执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (22)

1.一种存储空间分配方法,其特征在于,所述方法应用于分布式文件系统中部署有命名节点的服务器中,所述分布式文件系统还包括客户端以及多个数据节点,所述方法包括:
接收客户端的数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
根据所述单级目录的配额和已占用的配额,判断是否满足数据块创建条件;
在满足所述数据块创建条件时,创建数据块将数据块信息发送给所述客户端,所述数据块信息包括所述单级目录的信息,用于所述客户端根据所述数据块信息将所述单级目录下的文件写入相应的数据块中;
所述方法还包括:
在所述命名节点初始化时,扫描数据块状态表,获取多个数据块信息;
基于所述多个数据块信息,确定所述单级目录下的多个数据块信息;
基于所述单级目录下的多个数据块信息,确定所述单级目录的已占用的配额,
其中,所述数据块信息包括所述数据块的已占用的配额的信息;
接收客户端发送的密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额;
响应于所述密封数据块请求,更新与所述密封数据块请求相对应的数据块的数据块信息,其中,所述数据块信息包括所述数据块的状态信息以及所述数据块的已占用的配额的信息;
基于所述数据块信息,更新所述单级目录的已占用的配额。
2.根据权利要求1所述的方法,其特征在于,所述配额包括:数据块空间配额以及文件数量配额,
其中,根据所述单级目录的配额和已占用的配额,判断是否满足数据块创建条件,包括:
根据所述单级目录的数据块空间配额和所述单级目录的已占用的数据块空间配额,确定所述单级目录的剩余数据块空间配额;
在所述单级目录的剩余数据块空间配额大于或等于待创建数据块所占用的数据块空间,且所述单级目录的文件数量配额大于所述单级目录的已占用的文件数量配额时,判断满足数据块创建条件。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收客户端的数据块信息获取请求,其中,所述数据块信息获取请求携带数据块的标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
响应于客户端的数据块信息获取请求,确定与所述标识相对应的数据块的数据块信息;
将所述数据块信息发送给所述客户端,所述数据块信息用于所述客户端根据所述数据块信息从对应的所述单级目录的数据块中读取所述单级目录下的文件。
4.一种文件存储方法,其特征在于,所述方法应用于分布式文件系统中部署有客户端的服务器中,所述分布式文件系统还包括命名节点以及多个数据节点,所述方法包括:
向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
接收所述命名节点发送的数据块的数据块信息,所述数据块信息包括所述单级目录的信息;
将所述数据块确定为所述单级目录的可用的数据块;
根据所述数据块信息将所述单级目录下的文件写入相应的数据块中;
所述方法还包括:
在所述可用的数据块被写满时,向所述命名节点发送密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额。
5.根据权利要求4所述的方法,其特征在于,向所述命名节点发送数据块创建请求,包括:
在所述单级目录下没有可用的数据块时,向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在将文件写入所述可用的数据块时,检测所述可用的数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息是否相同;
在所述数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息相同时,将所述文件写入所述可用的数据块中。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在完成将所述文件写入所述可用的数据块中时,基于所述可用的数据块的标识、偏移地址以及所述可用的数据块所属的单级目录的信息,确定所述文件的存储路径。
8.根据权利要求4所述的方法,其特征在于,所述方法还包括:
基于待读取的文件的存储路径,确定所述文件所属数据块的标识、偏移地址以及所述文件的单级目录的信息;
向命名节点发送数据块信息获取请求,其中,所述数据块信息获取请求携带所述标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息;
获取所述命名节点发送的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
基于所述数据块信息,确定所述数据块所属的单级目录的信息;
在所述数据块所属的单级目录的信息与所述文件的单级目录的信息相同时,从相应数据块中读取所述文件。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在所述数据块所属的单级目录的信息与所述文件的单级目录的信息不相同时,返回读文件错误信息。
10.一种存储空间分配装置,其特征在于,所述装置应用于分布式文件系统中部署有命名节点的服务器中,所述分布式文件系统还包括客户端以及多个数据节点,所述装置包括:
第一请求接收模块,用于接收客户端的数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
判断模块,用于根据所述单级目录的配额和已占用的配额,判断是否满足数据块创建条件;
第一信息发送模块,用于在满足所述数据块创建条件时,创建数据块将数据块信息发送给所述客户端,所述数据块信息包括所述单级目录的信息,用于所述客户端根据所述数据块信息将所述单级目录下的文件写入相应的数据块中;
所述装置还包括:
第一信息获取模块,用于在所述命名节点初始化时,扫描数据块状态表,获取多个数据块信息;
第一信息确定模块,用于基于所述多个数据块信息,确定所述单级目录下的多个数据块信息;
配额确定模块,用于基于所述单级目录下的多个数据块信息,确定所述单级目录的已占用的配额,
其中,所述数据块信息包括所述数据块的已占用的配额的信息;
第二请求接收模块,用于接收客户端发送的密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额;
信息更新模块,用于响应于所述密封数据块请求,更新与所述密封数据块请求相对应的数据块的数据块信息,其中,所述数据块信息包括所述数据块的状态信息以及所述数据块的已占用的配额的信息;
配额更新模块,用于基于所述数据块信息,更新所述单级目录的已占用的配额。
11.根据权利要求10所述的装置,其特征在于,所述配额包括:数据块空间配额以及文件数量配额,
其中,所述判断模块包括:
空间配额确定子模块,用于根据所述单级目录的数据块空间配额和所述单级目录的已占用的数据块空间配额,确定所述单级目录的剩余数据块空间配额;
判断子模块,用于在所述单级目录的剩余数据块空间配额大于或等于待创建数据块所占用的数据块空间,且所述单级目录的文件数量配额大于所述单级目录的已占用的文件数量配额时,判断满足数据块创建条件。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第三请求接收模块,用于接收客户端的数据块信息获取请求,其中,所述数据块信息获取请求携带数据块的标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
第二信息确定模块,用于响应于客户端的数据块信息获取请求,确定与所述标识相对应的数据块的数据块信息;
第二信息发送模块,用于将所述数据块信息发送给所述客户端,所述数据块信息用于所述客户端根据所述数据块信息从对应的所述单级目录的数据块中读取所述单级目录下的文件。
13.一种文件存储装置,其特征在于,所述装置应用于分布式文件系统中部署有客户端的服务器中,所述分布式文件系统还包括命名节点以及多个数据节点,所述装置包括:
第一请求发送模块,用于向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息;
信息接收模块,用于接收所述命名节点发送的数据块的数据块信息,所述数据块信息包括所述单级目录的信息;
确定模块,用于将所述数据块确定为所述单级目录的可用的数据块;
第一写入模块,用于根据所述数据块信息将所述单级目录下的文件写入相应的数据块中;
所述装置还包括:
第二请求发送模块,用于在所述可用的数据块被写满时,向所述命名节点发送密封数据块请求,其中,所述密封数据块请求携带所述数据块的标识以及所述数据块已占用的配额的信息,用于所述命名节点根据所述密封数据块请求更新与所述标识相对应的数据块的数据块信息以及所述数据块所属的单级目录的已占用的配额。
14.根据权利要求13所述的装置,其特征在于,所述第一请求发送模块包括:
请求发送子模块,用于在所述单级目录下没有可用的数据块时,向所述命名节点发送数据块创建请求,其中,所述数据块创建请求携带单级目录的信息。
15.根据权利要求13所述的装置,其特征在于,所述装置还包括:
检测模块,用于在将文件写入所述可用的数据块时,检测所述可用的数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息是否相同;
第二写入模块,用于在所述数据块所属的单级目录的信息与用于写入文件的接口所携带的单级目录的信息相同时,将所述文件写入所述可用的数据块中。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
存储路径确定模块,用于在完成将所述文件写入所述可用的数据块中时,基于所述可用的数据块的标识、偏移地址以及所述可用的数据块所属的单级目录的信息,确定所述文件的存储路径。
17.根据权利要求13所述的装置,其特征在于,所述装置还包括:
文件信息确定模块,用于基于待读取的文件的存储路径,确定所述文件所属数据块的标识、偏移地址以及所述文件的单级目录的信息;
信息请求模块,用于向命名节点发送数据块信息获取请求,其中,所述数据块信息获取请求携带所述标识,用于所述命名节点根据所述数据块信息获取请求确定与所述标识相对应的数据块的数据块信息;
第二信息获取模块,用于获取所述命名节点发送的数据块信息,其中,所述数据块信息包括所述单级目录的信息;
单级目录信息确定模块,用于基于所述数据块信息,确定所述数据块所属的单级目录的信息;
文件读取模块,用于在所述数据块所属的单级目录的信息与所述文件的单级目录的信息相同时,从相应数据块中读取所述文件。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:
错误信息返回模块,用于在所述数据块所属的单级目录的信息与所述文件的单级目录的信息不相同时,返回读文件错误信息。
19.一种存储空间分配装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:执行权利要求1-3中任意一项所述的方法。
20.一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得处理器能够执行根据权利要求1-3中任意一项所述的方法。
21.一种文件存储装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:执行权利要求4-9中任意一项所述的方法。
22.一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得处理器能够执行根据权利要求4-9中任意一项所述的方法。
CN201711057818.7A 2017-11-01 2017-11-01 存储空间分配方法及装置以及文件存储方法及装置 Active CN107918527B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711057818.7A CN107918527B (zh) 2017-11-01 2017-11-01 存储空间分配方法及装置以及文件存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711057818.7A CN107918527B (zh) 2017-11-01 2017-11-01 存储空间分配方法及装置以及文件存储方法及装置

Publications (2)

Publication Number Publication Date
CN107918527A CN107918527A (zh) 2018-04-17
CN107918527B true CN107918527B (zh) 2021-04-23

Family

ID=61895134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711057818.7A Active CN107918527B (zh) 2017-11-01 2017-11-01 存储空间分配方法及装置以及文件存储方法及装置

Country Status (1)

Country Link
CN (1) CN107918527B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595122B (zh) * 2018-04-25 2020-12-22 江苏人加信息科技有限公司 一种基于局域网的计算机安全管理系统
CN109783467A (zh) * 2019-01-12 2019-05-21 郑州云海信息技术有限公司 一种分布式文件系统的嵌套目录文件个数配额设置方法
US12058234B2 (en) * 2019-03-29 2024-08-06 Accenture Global Solutions Limited Cryptologic blockchain-based off-chain storage verification
CN112000280A (zh) * 2020-07-30 2020-11-27 浪潮电子信息产业股份有限公司 一种配额管控方法及系统
CN115242818A (zh) * 2022-07-22 2022-10-25 济南浪潮数据技术有限公司 一种配额管理方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101042696A (zh) * 2006-03-23 2007-09-26 北京握奇数据系统有限公司 智能卡存储系统及该系统中文件创建管理的方法
WO2011023134A1 (en) * 2009-08-28 2011-03-03 Beijing Innovation Works Technology Company Limited Method and system for managing distributed storage system through virtual file system
CN103064639A (zh) * 2012-12-28 2013-04-24 华为技术有限公司 数据存储方法及装置
CN104272274A (zh) * 2013-12-31 2015-01-07 华为技术有限公司 一种分布式文件存储系统中的数据处理方法及设备
CN106331075A (zh) * 2016-08-18 2017-01-11 华为技术有限公司 用于存储文件的方法、元数据服务器和管理器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8204867B2 (en) * 2009-07-29 2012-06-19 International Business Machines Corporation Apparatus, system, and method for enhanced block-level deduplication

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101042696A (zh) * 2006-03-23 2007-09-26 北京握奇数据系统有限公司 智能卡存储系统及该系统中文件创建管理的方法
WO2011023134A1 (en) * 2009-08-28 2011-03-03 Beijing Innovation Works Technology Company Limited Method and system for managing distributed storage system through virtual file system
CN103064639A (zh) * 2012-12-28 2013-04-24 华为技术有限公司 数据存储方法及装置
CN104272274A (zh) * 2013-12-31 2015-01-07 华为技术有限公司 一种分布式文件存储系统中的数据处理方法及设备
CN106331075A (zh) * 2016-08-18 2017-01-11 华为技术有限公司 用于存储文件的方法、元数据服务器和管理器

Also Published As

Publication number Publication date
CN107918527A (zh) 2018-04-17

Similar Documents

Publication Publication Date Title
CN107918527B (zh) 存储空间分配方法及装置以及文件存储方法及装置
CN110019004B (zh) 一种数据处理方法、装置及系统
CN110018998B (zh) 一种文件管理方法、系统及电子设备和存储介质
CN107911461B (zh) 云存储系统中的对象处理方法、存储服务器及云存储系统
US8321487B1 (en) Recovery of directory information
CN108614837B (zh) 文件存储和检索的方法及装置
CN106021445A (zh) 一种加载缓存数据的方法及装置
KR20170123336A (ko) 파일 조작 방법 및 장치
CN107103011B (zh) 终端数据搜索的实现方法和装置
CN109302448B (zh) 一种数据处理方法及装置
CN113853778B (zh) 一种文件系统的克隆方法及装置
WO2020215580A1 (zh) 一种分布式全局数据去重方法和装置
CN110716924B (zh) 删除过期数据的方法和装置
US20210157513A1 (en) Data reading method, apparatus, and system, and distributed system
JP2014519100A (ja) 分散キャッシングおよびキャッシュ分析
US20060112083A1 (en) Object relation information management program, method, and apparatus
CN114089917B (zh) 分布式对象存储集群及其扩容方法、装置及电子设备
CN110888847B (zh) 一种回收站系统及文件回收方法
CN105005567A (zh) 兴趣点查询方法和系统
CN105843809B (zh) 数据处理方法和装置
CN101483668A (zh) 热点数据的网络存储和访问方法、设备及系统
US9626378B2 (en) Method for handling requests in a storage system and a storage node for a storage system
CN110334073B (zh) 一种元数据预取方法、装置、终端、服务器及存储介质
CN110275863B (zh) 文件移动方法、装置及存储介质
CN113905252B (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