CN107145303B - 一种用于在分布式存储系统中执行文件写入的方法与设备 - Google Patents

一种用于在分布式存储系统中执行文件写入的方法与设备 Download PDF

Info

Publication number
CN107145303B
CN107145303B CN201710118763.XA CN201710118763A CN107145303B CN 107145303 B CN107145303 B CN 107145303B CN 201710118763 A CN201710118763 A CN 201710118763A CN 107145303 B CN107145303 B CN 107145303B
Authority
CN
China
Prior art keywords
writable
block
target file
data blocks
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
CN201710118763.XA
Other languages
English (en)
Other versions
CN107145303A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN107145303A publication Critical patent/CN107145303A/zh
Application granted granted Critical
Publication of CN107145303B publication Critical patent/CN107145303B/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • 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/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请的目的是提供一种用于在分布式存储系统中执行文件写入的方法与设备。具体地,向元数据管理设备提交关于目标文件的可写数据块的块信息请求;接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块;根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。与现有技术相比,本申请向元数据管理设备提交关于目标文件的可写数据块的块信息请求,接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块,并根据关于所述目标文件的写入请求对所述多个可写数据块执行文件写入,从而允许单个文件可同时写入多个数据块,使得单文件写入吞吐量增加,减轻用户管理负担。

Description

一种用于在分布式存储系统中执行文件写入的方法与设备
技术领域
本申请涉及计算机领域,尤其涉及一种用于在分布式存储系统中执行文件写入的技术。
背景技术
随着互联网的普及,数据业务逐步增加,因此对分布式存储系统的要求亦逐步提高,尤其是对文件写入的吞吐量有一定的要求,在当前分布式存储系统中,以典型的三端模式的分布式存储系统GFS为例,Chunksever即数据管理模块本文亦称之为数据块服务器或块服务器都需要服务很多文件的读写请求,而每个Chunkserver所拥有的网络和磁盘带宽是有限的,所以平均每个文件所能分到的写带宽有限,这也就限制了每个文件写入的吞吐量,所以现有技术会采用同时写多路文件的方式来获得所需的写入带宽,从而提高文件写入吞吐量。
然而,现有技术会降低系统所能同时服务的用户数量,以典型的三端模式的分布式存储系统GFS为例,多路文件写入会增加Master也就是命名空间管理模块本文亦称之为元数据管理设备端的内存负担。现有技术在多路文件写入时还容易产生热点,例如,数据块服务器Chunksever同时接到多个文件的写入请求,从而产生写入热点,进而降低了每路文件分到的带宽资源,也就无法达到提高写入吞吐量的目的。此外,当现有技术通过多路文件来提高写入吞吐量的时候,用户需要为管理多路文件付出额外的成本,特别是当写入吞吐量在不断变化的时候,需要相应的调整多路文件的数量。
发明内容
本申请的一个目的是提供一种用于在分布式存储系统中执行文件写入的方法与设备,用以解决分布式存储系统中单文件写入吞吐量低下的问题。
根据本申请的一个方面,本申请提供了一种在元数据管理设备端用于在分布式存储系统中执行文件写入的方法,该方法解决了分布式存储系统中单文件写入吞吐量低下的问题,该方法包括:
获取用户设备提交的关于目标文件的可写数据块的块信息请求;
根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块;
将所述多个可写数据块返回至所述用户设备。
根据本申请的另一个方面,本申请提供了一种在用户设备端用于在分布式存储系统中执行文件写入的方法,该方法解决了分布式存储系统中单文件写入吞吐量低下的问题,该方法包括:
向元数据管理设备提交关于目标文件的可写数据块的块信息请求;
接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块;
根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。
根据本申请的又一个方面,本申请提供了一种用于在分布式存储系统中执行文件写入的元数据管理设备端设备,该设备解决了分布式存储系统中单文件写入吞吐量低下的问题,该设备包括:
块信息请求获取装置,用于获取用户设备提交的关于目标文件的可写数据块的块信息请求;
可写数据块确定装置,用于根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块;
块信息反馈装置,用于将所述多个可写数据块返回至所述用户设备。
根据本申请的再一个方面,本申请提供了一种用于在分布式存储系统中执行文件写入的用户设备端设备,该设备解决了分布式存储系统中单文件写入吞吐量低下的问题,该设备包括:
块信息请求发送装置,用于向元数据管理设备提交关于目标文件的可写数据块的块信息请求;
块信息接受装置,用于接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块;
数据块写入执行装置,用于根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。
根据本申请的又一个方面,本申请提供了一种用于在分布式存储系统中执行文件写入的元数据管理设备端设备,其中,该设备包括:
处理器;
以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取用户设备提交的关于目标文件的可写数据块的块信息请求;
根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块;
将所述多个可写数据块返回至所述用户设备。
根据本申请的又一个方面,本申请提供了一种用于在分布式存储系统中执行文件写入的用户设备端设备,其中,该设备包括:
处理器;
以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
向元数据管理设备提交关于目标文件的可写数据块的块信息请求;
接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块;
根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。
根据本申请的再一方面,还提供了一种实现在分布式存储系统中执行文件写入的系统,解决了分布式存储系统中单文件写入吞吐量低下的问题,其中,该系统包括如前所述根据本发明一个方面的一种用于在分布式存储系统中执行文件写入的元数据管理设备端设备,以及如前所述根据本发明另一个方面的一种用于在分布式存储系统中执行文件写入的用户设备端设备。
与现有技术相比,本申请向元数据管理设备提交关于目标文件的可写数据块的块信息请求,接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块,并根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入,从而允许单个文件可同时写入多个数据块,使得单文件写入吞吐量增加,消除写入热点发生的可能性,减轻用户管理负担。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的元数据管理设备端以及用户设备端配合实现的一种实现在分布式存储系统中执行文件写入的方法流程图;
图2示出根据本申请一个优选实例的一种实现在分布式存储系统中执行文件写入的方法中的步骤S22流程图;
图3示出根据本申请一个优选实例的一种实现在分布式存储系统中执行文件写入的方法中的步骤S13流程图;
图4示出根据本申请另一个方面的元数据管理设备端以及用户设备端配合实现的一种实现在分布式存储系统中执行文件写入的方法中修改可写块数量阈值的流程图;
图5示出根据本申请另一个方面的元数据管理设备端设备以及用户设备端设备配合实现的一种实现在分布式存储系统中执行文件写入的设备示意图;
图6示出根据本申请另一个优选实例的一种实现在分布式存储系统中执行文件写入的设备中可写数据块确定装置示意图。
图7示出根据本申请另一个优选实例的一种实现在分布式存储系统中执行文件写入的设备中数据块写入执行装置示意图。
图8示出根据本申请另一个方面的元数据管理设备端设备以及用户设备端设备配合实现的一种实现在分布式存储系统中执行文件写入的设备中实现修改可写块数量阈值功能的示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出根据本申请一个方面的元数据管理设备端以及用户设备端配合实现的一种实现在分布式存储系统中执行文件写入的方法流程图。其中,所述用户设备端包括步骤S11、步骤S12、步骤S13。所述元数据管理设备端包括步骤S21、步骤S22、步骤S23将所述多个可写数据块返回至所述用户设备。
其中,在步骤S11中用户设备端向元数据管理设备提交关于目标文件的可写数据块的块信息请求;在步骤S21中元数据管理设备端获取用户设备提交的关于目标文件的可写数据块的块信息请求;在步骤S22中元数据管理设备端根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块;在步骤S23中元数据管理设备端将所述多个可写数据块返回至所述用户设备;在步骤S12中用户设备端接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块;在步骤S13中用户设备端根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。
具体地,在步骤S11中用户设备端向元数据管理设备提交关于目标文件的可写数据块的块信息请求;在步骤S21中元数据管理设备端获取用户设备提交的关于目标文件的可写数据块的块信息请求。其中,所述用户设备端是指分布式存储系统中用于为用户提供各种接口的端口模块,以典型的三端模式的分布式存储系统GFS为例,所述用户设备端即为客户端库Client。所述元数据管理设备端是指分布式存储系统中管理分布式存储系统中元数据的模块,以典型的三端模式的分布式存储系统GFS为例,所述元数据管理设备端即为Master也就是命名空间管理模块。所述目标文件即为需要执行写入的文件,通常在分布式存储系统中会预先创建好但不限于此,所有需要执行写入的文件均可成为目标文件。所述数据块是指一段用户逻辑数据,以字节流的形式存储,用于目标文件的数据写入,以典型的三端模式的分布式存储系统GFS为例,数据块即为该系统中所称的chunk。所述关于目标文件的可写数据块的块信息是指可以用于执行目标文件写入的当前可写的数据块及其位置,数量等信息。所述提交和获取请求的方法包括但不限于通过分布式存储系统自有接口进行,以典型的三端模式的分布式存储系统GFS为例,Client启动,向Master发送获取目标文件F所有可以写的Chunk的信息的请求。通过上述动作,可以使得元数据管理设备端发起对目标文件可写数据块的块信息的查找,从而使得文件写入流程启动。
本领域技术人员应能理解上述发送和获取关于目标文件的可写数据块的块信息请求的方式仅为举例,其他现有的或今后可能出现的发送和获取关于目标文件的可写数据块的块信息请求的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,在步骤S22中元数据管理设备端根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块。即根据可写块数量阈值将与所述阈值比较的符合预置数目的可写数据块分配给所述目标文件进行写入,例如,所述可写块数量阈值为M,则以典型的三端模式的分布式存储系统GFS为例,元数据块管理设备端Master收到请求后在内存中找到目标文件F所有可以写的Chunk的信息T和可以写的Chunk的数量M,若T大于M则确定这T个可写数据块Chunk为目标文件F所对应的可写数据块。所述可写块数量阈值是指所设置的控制可写数据块数量的阈值,在此,块即指代数据块,此指代上下文均通用,所述可写块数量阈值可根据写入吞吐量或速率的要求进行设置,本阈值的存在使得用户不需要自己管理多路写入的文件,只需要根据写入的需求调整可写数据块的数量,此外,所述可写块数量阈值亦可以根据系统的要求设置系统自行调整,或进行初始设定。所述目标文件对应的多个可写数据块是指每个写入文件可以有一个以上的可写数据块,在典型的三端模式的分布式存储系统GFS中,现有技术仅支持每个目标文件在元数据块管理设备端Master有一个可写数据块,在本申请的实施例中可以通过对用户设备端以及元数据管理设备端的接口间的协议进行设置,使得每个目标文件在元数据块管理设备端有多个可写数据块,从而能够达到单文件写入时支持多个数据块同时写入的目的,进而使得单文件写入的效率提高。
其中,在本申请的实施例中通过对用户设备端以及元数据管理设备端的接口间的协议进行设置的方法,以典型的三端模式的分布式存储系统GFS为例,在元数据块管理设备端Master中设置如下:在面向用户设备端Client的服务和协议方面,对于获取文件可写数据块Chunk信息的服务:扩展现有协议,增加对可写的数据块Chunk有多个的支持;对于可写数据块Chunk数量的服务:增加设置文件可写数据块Chunk数量的协议和服务,增加获取文件可写数据块Chunk数量的协议和服务。在用户设备端Client中设置如下:在面向元数据块管理设备端Master协议方面:对于获取文件可写数据块Chunk信息的协议:扩展现有协议,增加对可写的数据块Chunk有多个的支持;对于可写数据块Chunk数量的接口:增加设置文件可写数据块Chunk数量的协议,增加获取文件可写数据块Chunk数量的协议;在对于在面向用户的接口方面:对于可写数据块Chunk数量的接口:增加设置文件可写数据块Chunk数量的接口,增加获取文件可写数据块Chunk数量的接口。以上设置使得每个目标文件在元数据块管理设备端有多个可写数据块,从而能够达到单文件写入时支持多个数据块同时写入的目的,满足用户需求,同时在元数据块管理设备端Master只耗费了单个文件的内存,没有降低集群服务用户的数量。
本领域技术人员应能理解上述对用户设备端以及元数据管理设备端的接口间的协议进行设置使得每个目标文件在元数据块管理设备端有多个可写数据块的方式仅为举例,其他现有的或今后可能出现的对用户设备端以及元数据管理设备端的接口间的协议进行设置使得每个目标文件在元数据块管理设备端有多个可写数据块的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,在步骤S23中元数据管理设备端将所述多个可写数据块返回至所述用户设备;在步骤S12中用户设备端接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块。即如上文所述确定所述目标文件对应的多个可写数据块后将所述数据块及其相关信息由元数据管理设备端返回至用户设备端,以典型的三端模式的分布式存储系统GFS为例,接上文举例,元数据管理设备端Master将目标文件F所有可以写的数据块Chunk的数量T及其相关信息从内存中找到并进行反馈,反馈的方式包括但不限于通过分布式存储系统自有接口进行。
其中,所述元数据管理设备端内存中的所述目标文件对应的可写数据块的数量以及相关信息的获取方式包括但不限于在获取每个在分布式存储系统中文件后,元数据管理设备端即存储其所有正在写以及允许写的数据块信息,以典型的三端模式的分布式存储系统GFS为例,元数据块管理设备端Master在文件的元数据存储方面:负责存储每个文件当前所有正在写的数据块Chunk信息,例如数据块的副本位置;负责存储每个文件当前所允许的可写数据块Chunk的数量。以上信息在元数据块管理设备端Master端都需要进行持久化的保存,宕机重启后不能丢失,从而使得可以在用户设备端需要目标文件是可以及时查找到。
本领域技术人员应能理解上述元数据管理设备端对每个文件数据块存储的方式仅为举例,其他现有的或今后可能出现的元数据管理设备端对每个文件数据块存储的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,在步骤S13中用户设备端根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。即因为所述目标文件有对应的多个可写数据块,因此,在所述用户设备端获得所述可写数据块相关信息后将所述多个可写数据块进行排序,或按照默认顺序依次在接受到目标文件的写入请求后进行写入。以典型的三端模式的分布式存储系统GFS为例,用户设备端Client将所接到的目标文件F所有的对应的可写数据块Chunk之后,在按照默认或设置的顺序对某一Chunk进行写入时,寻找其相应的数据块服务器Chunksever进行相应副本的写入。其中,Chunksever的信息的获取方式包括但不限于由元数据管理设备端Master记录当前可写Chunk所在的所有Chunkserver,这部分信息以缓存的形式存在,不需要持久化,宕机重启后可以根据之前所记录的信息恢复出来,也就是从所负责存储的每个文件当前所有正在写的数据块Chunk信息中进行恢复;用户设备端Client存储文件当前所有可写的Chunk信息,这部分信息以缓存的形式存在,不需要持久化,宕机重启后从Master端重新获取。
本领域技术人员应能理解上述保存和获取数据块对应数据块服务器信息的方式仅为举例,其他现有的或今后可能出现的保存和获取数据块对应数据块服务器信息的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述方法还包括步骤S14(未示出),在步骤S14中用户设备端当所述多个可写数据块中之一被写满时,向所述元数据管理设备重新提交关于所述目标文件的可写数据块的块信息请求。是指在对目标文件所对应的数据块进行写入时,若遇到所述数据块写满的情况,则需要向元数据管理设备重新提交获取同样目标文件的可写数据及其相关信息的请求,此时,如前文中实施例所述,将之前的步骤重新进行一遍。以典型的三端模式的分布式存储系统GFS为例,当Client发现某个Chunk已经写满的时候,向Master发送获取文件F所有可以写的Chunk的信息的请求,重新分配获取可写Chunk的数量,使得所述用户设备端获取新的目标文件所对应的可写数据块,从而继续进行文件的写入。
图2示出根据本申请一个优选实例的一种实现在分布式存储系统中执行文件写入的方法中的步骤S22流程图。其中,所述步骤S22包括步骤S221、步骤S222、步骤S223。
其中,在步骤S221中元数据管理设备端确定所述目标文件对应的所有可写的数据块;在步骤S222中元数据管理设备端若所述所有可写的数据块的数量等于或大于所述目标文件对应的可写块数量阈值,则将所述所有可写的数据块作为所述目标文件对应的多个可写数据块;否则,在步骤S223中元数据管理设备端为所述目标文件分配其他可写的数据块,并将所述其他可写的数据块及所述所有可写的数据块作为所述目标文件对应的多个可写数据块,其中,所述多个可写数据块的数量等于可写块数量阈值。
具体地,在步骤S221中元数据管理设备端确定所述目标文件对应的所有可写的数据块。是指确定所述目标文件的所有可写数据块信息,获取的方法包括如上文所述从所述元数据管理设备端所存储的元数据信息中的每个文件当前所允许的可写数据块的数量,即以典型的三端模式的分布式存储系统GFS为例,因为元数据块管理设备端Master在文件的元数据存储方面:负责存储每个文件当前所有正在写的数据块Chunk信息,例如数据块的副本位置;负责存储每个文件当前所允许的可写数据块Chunk的数量,因此可以从Master端中找到目标文件F的所有可写数据块,假设所找到的目标文件F的所有可写数据块为T。
接着,在步骤S222中元数据管理设备端若所述所有可写的数据块的数量等于或大于所述目标文件对应的可写块数量阈值,则将所述所有可写的数据块作为所述目标文件对应的多个可写数据块。即将根据系统默认或用户根据写入要求所设置的可写块数量阈值与所获得的目标文件的所有可写数据块数量进行比较,若所述目标文件的所有可写数据块数量不小于所述可写块数量阈值则将所述目标文件的所有可写数据块及其相关信息直接由元数据管理设备端反馈给用户设备端,使之作为所述目标文件对应的可写数据块进行写入。以典型的三端模式的分布式存储系统GFS为例,如果当前目标文件F已有的Chunk数量不小于可写块数量阈值M,则将这些Chunk信息返回Client。
接着,若所述所有可写的数据块的数量小于所述目标文件对应的可写块数量阈值,在步骤S223中元数据管理设备端为所述目标文件分配其他可写的数据块,并将所述其他可写的数据块及所述所有可写的数据块作为所述目标文件对应的多个可写数据块,其中,所述多个可写数据块的数量等于可写块数量阈值。即将根据系统默认或用户根据写入要求所设置的可写块数量阈值与所获得的目标文件的所有可写数据块数量进行比较,若所述目标文件的所有可写数据块数量小于所述可写块数量阈值,则重新由元数据管理设备端分配从所存储或新被释放的数据块中分配差额数量的数据块,使得所述目标文件的可写数据块数量与所述可写块数量阈值相等。以典型的三端模式的分布式存储系统GFS为例,如果当前文件F已有的Chunk数量小于可写块数量阈值M,则重新分配足够数量的Chunk,新分配的Chunk数量加已有的Chunk数量等于可写块数量阈值M,将所有Chunk信息返回Client。通过上述方式,可以通过可写块数量阈值控制,使得可写数据块维持在一定值,从而使得用户不需要对文件写入进行人工控制,减小用户的管理成本。
本领域技术人员应能理解上述确定目标文件对应可写数据块的方式仅为举例,其他现有的或今后可能出现的目标文件对应可写数据块的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述为所述目标文件分配其他可写的数据块包括:根据每个文件当前对应的在写数据块及每个在写数据块对应的块服务器,为所述目标文件分配其他可写的数据块,其中,每个其他可写的数据块对应的块服务器与每个在写数据块对应的块服务器小于或等于预定的块服务器重复阈值。即在分配新的可写数据块所对应的数据块服务器时,尽量避免其所分配的数据块服务器是元数据管理设备端中已经记录的,从而减少数据块服务器同时接受多个数据块的写入请求从而造成写入热点的情况。所述块服务器是指Chunksever,即数据管理模块本文亦称之为数据块服务器或块服务器,用于维护数据块副本的模块,提供数据块副本的访问的接口。所述块服务器重复阈值是指允许块服务器同时提供不同的数据块进行写入的数量,例如,所述块服务器重复阈值为3,即每个块服务器仅可对三个数据块提供服务。对数据块对应的块服务器的具体分配方式,以典型的三端模式的分布式存储系统GFS为例,在元数据管理设备端对Chunk位置的分配方面:记录当前可写Chunk所在的所有Chunkserver,这部分信息以缓存的形式存在,不需要持久化,宕机重启后可以根据上面记录的元数据信息恢复出来。分配新的Chunk的时候,根据块服务器重复阈值避免新分配的Chunkserver与上述步骤记录的Chunkserver重复。或者这一步操作采用尽量而为的策略,当集群可写的Chunkserver数量太少,无法满足不重复的要求的时候,也允许Chunk的分配动作成功。文件内部的数据分部信息可见,有效的避免多个Chunk分布在相同的Chunkserver上,消除热点,保证了写入吞吐量的实际效果。
图3示出根据本申请一个优选实例的一种实现在分布式存储系统中执行文件写入的方法中的步骤S13流程图。所述步骤S13包括步骤S131、步骤S132、步骤S133。
其中,在步骤S131中用户设备端接收关于所述目标文件的写入请求;在步骤S132中用户设备端根据所述写入请求对所述多个可写数据块中当前第一个可写数据块对应的一个或多个数据块副本执行文件写入;在步骤S133中用户设备端更新所述多个可写数据块中当前第一个可写数据块。
具体地,在步骤S131中用户设备端接收关于所述目标文件的写入请求。即用户设备端接受关于所述目标文件的写入请求,因为所述目标文件可写入的数据块数量大于所述可写块数量阈值,因此支持用户同时发起相应数量的写入请求。以典型的三端模式的分布式存储系统GFS为例,用户设备端Client在数据写入流程中支持用户同时发起M个写请求,M等于当前可写Chunk的数量。同时接受若干关于单个文件的写请求,使得单个文件的写入速率提升。
接着,在步骤S132中用户设备端根据所述写入请求对所述多个可写数据块中当前第一个可写数据块对应的一个或多个数据块副本执行文件写入。即用户设备端在接受到所述目标文件对应的多个可写数据块后按照默认排序或依据一定的排序准则对所述可写数据块的数据块服务器进行寻找,并传达相应的写入请求,从而在数据块及其副本上进行写入。以典型的三端模式的分布式存储系统GFS为例,Client收到可写Chunk信息后按顺序缓存,同时将下次可写Chunk的序号I设置为第一个可写Chunk的序号,Client收到用户的写入请求,选取序号为I的Chunk,将数据写入请求发往这个Chunk的所有Chunkserver,同时将I序号修改为下一个可写Chunk的序号。
接着,在步骤S133中用户设备端更新所述多个可写数据块中当前第一个可写数据块。即用户设备端按顺序对所有写入请求进行响应,即按顺序对所述数据块执行写入,当所述数据块排序所在的第一个可写数据块被执行写入后,将后续的所述可写数据块更新排序信息,例如上文举例,Client收到用户的写入请求,选取序号为I的Chunk,将数据写入请求发往这个Chunk的所有Chunkserver,同时将I序号修改为下一个可写Chunk的序号,即每当用户发起写请求的时候,根据序号I选择相应的Chunk,同时将I指向下一个Chunk,这样以轮询的方式访问所有的Chunk,避免某个Chunk成为写入的热点。
本领域技术人员应能理解上述对可写数据块进行轮询写入的方式仅为举例,其他现有的或今后可能出现的对可写数据块进行轮询写入的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述步骤S13还包括:步骤S134(未示出),在步骤S134中用户设备端当在所述一个或多个数据块副本均成功执行文件写入,回收所述当前第一个可写数据块以接收关于所述目标文件的新写入请求。是指在某个可写数据块及其副本进行写入后,当所有的块服务器均反馈写入成功后,用户设备端返回用户该数据块所对应的写入请求写入成功,进而因为当前所述可写数据块没有写满触发重新分配可写数据块的情况,因此可重新接受用户关于所述目标文件的写入请求。以典型的三端模式的分布式存储系统GFS为例,当某个Chunk的所有Chunkserver都返回Client成功的时候,Client返回用户成功,写流程返回接收用户新的请求的阶段,从而充分利用可写数据块同时使得单文件的写入保持在一定数量数据块的同时写入中,提升单文件写入速率。
优选地,所述步骤S13还包括:步骤S135(未示出),在步骤S135中用户设备端当所述多个可写数据块中每个可写数据块都在执行文件写入时,阻塞关于所述目标文件的写入请求。即因为所述执行文件写入的可写数据块与所设置的可写块数量阈值相等,因此同时接受的所述目标文件的写入请求与可写块数量阈值相等,通过在所有可写数据块均执行写入后阻塞相关写入请求的方式使得可以通过可写块数量阈值对单文件同时写入进程数量进行控制,从而达到用户不需要自己管理文件多进程写入的木大,只要根据写入需求控制所述可写块数量阈值即可,从而减轻用户的管理负担。以典型的三端模式的分布式存储系统GFS为例,重复对可写Chunk按顺序进行写入请求响应执行,直到当前所有的可写Chunk都有数据正在写入,阻塞用户的写入请求。
图4示出根据本申请另一个方面的元数据管理设备端以及用户设备端配合实现的一种实现在分布式存储系统中执行文件写入的方法中修改可写块数量阈值的流程图。为实现所述修改可写块数量阈值功能,所述用户设备端包括步骤S15。所述元数据管理设备端包括步骤S24、步骤S25。
其中,在步骤S15中用户设备端将用户提交的关于所述目标文件的可写块数量阈值设置请求发送至所述元数据管理设备,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值。在步骤S24中元数据管理设备端接收所述用户设备发送的关于所述目标文件的可写块数量阈值设置请求,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值;在步骤S25中元数据管理设备端根据所述新的可写块数量阈值更新所述可写块数量阈值。
具体地,在步骤S15中用户设备端将用户提交的关于所述目标文件的可写块数量阈值设置请求发送至所述元数据管理设备,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值。接着,在步骤S24中元数据管理设备端接收所述用户设备发送的关于所述目标文件的可写块数量阈值设置请求,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值;是指所述可写块数量阈值是可以根据用户的写入需求进行调整,将调整的具体数据和请求通过用户设备端发送至元数据块管理设备端即可。具体执行中可比较当前可写的数据块数量与需要设置的所述可写块数量阈值是否相等,若相等则不进行修改,若不等,则将所述可写块数量阈值修改为所需的数值,但不限于此。以典型的三端模式的分布式存储系统GFS为例,用户根据写入吞吐的要求,决定将可写Chunk的数量设置为M;用户调用Client接口,获取当前可写Chunk的数量;Client向Master发起请求,获取当前可写Chunk的数量;Master收到Client请求后在内存中找到文件可写Chunk的数量N,将N返回Client,Cilent将当前可写Chunk数量N返回用户;用户根据N和M的值进行判断,如果N==M,则无需修改;如果N!=M,则调用Client接口,设置当前可写Chunk的数量为M;Client向Master发起请求,将可写Chunk数量设置为M。
接着,在步骤S25中元数据管理设备端根据所述新的可写块数量阈值更新所述可写块数量阈值。是指所述元数据块管理设备端接受请求根据所述请求中的新的可写块数量阈值对历史值进行更新或存储。具体地,以典型的三端模式的分布式存储系统GFS为例,Master收到请求后将可写Chunk数量设置为M,同时将这个改动持久化。优选地,可返回Client改动成功;Client返回用户改动成功。通过以上方法为分布式文件系统添加了一种新的数据写入方式,允许单个文件同时可以写多个Chunk,同时可写Chunk的个数支持动态调整,从而用户不需要自己管理多路写入的文件,只需要根据写入的需求调整可写数据块的数量,节约用户管理成本。
图5示出根据本申请另一个方面的元数据管理设备端设备以及用户设备端设备配合实现的一种实现在分布式存储系统中执行文件写入的设备示意图。其中,所述用户设备端设备包括块信息请求发送装置111、块信息接受装置112、数据块写入执行装置113。所述元数据管理设备端设备包括块信息请求获取装置121、可写数据块确定装置122、块信息反馈装置123将所述多个可写数据块返回至所述用户设备。
其中,块信息请求发送装置111向元数据管理设备提交关于目标文件的可写数据块的块信息请求;块信息请求获取装置121获取用户设备提交的关于目标文件的可写数据块的块信息请求;可写数据块确定装置122根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块;块信息反馈装置123将所述多个可写数据块返回至所述用户设备;块信息接受装置112接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块;数据块写入执行装置113根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。
具体地,所述用户设备端设备中块信息请求发送装置111向元数据管理设备提交关于目标文件的可写数据块的块信息请求;所述元数据管理设备端设备中块信息请求获取装置121获取用户设备提交的关于目标文件的可写数据块的块信息请求。其中,所述用户设备端是指分布式存储系统中用于为用户提供各种接口的端口模块,以典型的三端模式的分布式存储系统GFS为例,所述用户设备端即为客户端库Client。所述元数据管理设备端是指分布式存储系统中管理分布式存储系统中元数据的模块,以典型的三端模式的分布式存储系统GFS为例,所述元数据管理设备端即为Master也就是命名空间管理模块。所述目标文件即为需要执行写入的文件,通常在分布式存储系统中会预先创建好但不限于此,所有需要执行写入的文件均可成为目标文件。所述数据块是指一段用户逻辑数据,以字节流的形式存储,用于目标文件的数据写入,以典型的三端模式的分布式存储系统GFS为例,数据块即为该系统中所称的chunk。所述关于目标文件的可写数据块的块信息是指可以用于执行目标文件写入的当前可写的数据块及其位置,数量等信息。所述提交和获取请求的方法包括但不限于通过分布式存储系统自有接口进行,以典型的三端模式的分布式存储系统GFS为例,Client启动,向Master发送获取目标文件F所有可以写的Chunk的信息的请求。通过上述动作,可以使得元数据管理设备端发起对目标文件可写数据块的块信息的查找,从而使得文件写入流程启动。
本领域技术人员应能理解上述发送和获取关于目标文件的可写数据块的块信息请求的方式仅为举例,其他现有的或今后可能出现的发送和获取关于目标文件的可写数据块的块信息请求的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,所述元数据管理设备端设备中可写数据块确定装置122根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块。即根据可写块数量阈值将与所述阈值比较的符合预置数目的可写数据块分配给所述目标文件进行写入,例如,所述可写块数量阈值为M,则以典型的三端模式的分布式存储系统GFS为例,元数据块管理设备端Master收到请求后在内存中找到目标文件F所有可以写的Chunk的信息T和可以写的Chunk的数量M,若T大于M则确定这T个可写数据块Chunk为目标文件F所对应的可写数据块。所述可写块数量阈值是指所设置的控制可写数据块数量的阈值,在此,块即指代数据块,此指代上下文均通用,所述可写块数量阈值可根据写入吞吐量或速率的要求进行设置,本阈值的存在使得用户不需要自己管理多路写入的文件,只需要根据写入的需求调整可写数据块的数量,此外,所述可写块数量阈值亦可以根据系统的要求设置系统自行调整,或进行初始设定。所述目标文件对应的多个可写数据块是指每个写入文件可以有一个以上的可写数据块,在典型的三端模式的分布式存储系统GFS中,现有技术仅支持每个目标文件在元数据块管理设备端Master有一个可写数据块,在本申请的实施例中可以通过对用户设备端以及元数据管理设备端的接口间的协议进行设置,使得每个目标文件在元数据块管理设备端有多个可写数据块,从而能够达到单文件写入时支持多个数据块同时写入的目的,进而使得单文件写入的效率提高。
其中,在本申请的实施例中通过对用户设备端以及元数据管理设备端的接口间的协议进行设置的方法,以典型的三端模式的分布式存储系统GFS为例,在元数据块管理设备端Master中设置如下:在面向用户设备端Client的服务和协议方面,对于获取文件可写数据块Chunk信息的服务:扩展现有协议,增加对可写的数据块Chunk有多个的支持;对于可写数据块Chunk数量的服务:增加设置文件可写数据块Chunk数量的协议和服务,增加获取文件可写数据块Chunk数量的协议和服务。在用户设备端Client中设置如下:在面向元数据块管理设备端Master协议方面:对于获取文件可写数据块Chunk信息的协议:扩展现有协议,增加对可写的数据块Chunk有多个的支持;对于可写数据块Chunk数量的接口:增加设置文件可写数据块Chunk数量的协议,增加获取文件可写数据块Chunk数量的协议;在对于在面向用户的接口方面:对于可写数据块Chunk数量的接口:增加设置文件可写数据块Chunk数量的接口,增加获取文件可写数据块Chunk数量的接口。以上设置使得每个目标文件在元数据块管理设备端有多个可写数据块,从而能够达到单文件写入时支持多个数据块同时写入的目的,满足用户需求,同时在元数据块管理设备端Master只耗费了单个文件的内存,没有降低集群服务用户的数量。
本领域技术人员应能理解上述对用户设备端以及元数据管理设备端的接口间的协议进行设置使得每个目标文件在元数据块管理设备端有多个可写数据块的方式仅为举例,其他现有的或今后可能出现的对用户设备端以及元数据管理设备端的接口间的协议进行设置使得每个目标文件在元数据块管理设备端有多个可写数据块的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,所述元数据管理设备端设备中块信息反馈装置123将所述多个可写数据块返回至所述用户设备;所述用户设备端设备中块信息接受装置112接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块。即如上文所述确定所述目标文件对应的多个可写数据块后将所述数据块及其相关信息由元数据管理设备端返回至用户设备端,以典型的三端模式的分布式存储系统GFS为例,接上文举例,元数据管理设备端Master将目标文件F所有可以写的数据块Chunk的数量T及其相关信息从内存中找到并进行反馈,反馈的方式包括但不限于通过分布式存储系统自有接口进行。
其中,所述元数据管理设备端内存中的所述目标文件对应的可写数据块的数量以及相关信息的获取方式包括但不限于在获取每个在分布式存储系统中文件后,元数据管理设备端即存储其所有正在写以及允许写的数据块信息,以典型的三端模式的分布式存储系统GFS为例,元数据块管理设备端Master在文件的元数据存储方面:负责存储每个文件当前所有正在写的数据块Chunk信息,例如数据块的副本位置;负责存储每个文件当前所允许的可写数据块Chunk的数量。以上信息在元数据块管理设备端Master端都需要进行持久化的保存,宕机重启后不能丢失,从而使得可以在用户设备端需要目标文件是可以及时查找到。
本领域技术人员应能理解上述元数据管理设备端对每个文件数据块存储的方式仅为举例,其他现有的或今后可能出现的元数据管理设备端对每个文件数据块存储的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,所述用户设备端设备中数据块写入执行装置113根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。即因为所述目标文件有对应的多个可写数据块,因此,在所述用户设备端获得所述可写数据块相关信息后将所述多个可写数据块进行排序,或按照默认顺序依次在接受到目标文件的写入请求后进行写入。以典型的三端模式的分布式存储系统GFS为例,用户设备端Client将所接到的目标文件F所有的对应的可写数据块Chunk之后,在按照默认或设置的顺序对某一Chunk进行写入时,寻找其相应的数据块服务器Chunksever进行相应副本的写入。其中,Chunksever的信息的获取方式包括但不限于由元数据管理设备端Master记录当前可写Chunk所在的所有Chunkserver,这部分信息以缓存的形式存在,不需要持久化,宕机重启后可以根据之前所记录的信息恢复出来,也就是从所负责存储的每个文件当前所有正在写的数据块Chunk信息中进行恢复;用户设备端Client存储文件当前所有可写的Chunk信息,这部分信息以缓存的形式存在,不需要持久化,宕机重启后从Master端重新获取。
本领域技术人员应能理解上述保存和获取数据块对应数据块服务器信息的方式仅为举例,其他现有的或今后可能出现的保存和获取数据块对应数据块服务器信息的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述设备还包括数据块写满处理装置114(未示出),所述用户设备端设备中数据块写满处理装置114当所述多个可写数据块中之一被写满时,向所述元数据管理设备重新提交关于所述目标文件的可写数据块的块信息请求。是指在对目标文件所对应的数据块进行写入时,若遇到所述数据块写满的情况,则需要向元数据管理设备重新提交获取同样目标文件的可写数据及其相关信息的请求,此时,如前文中实施例所述,将之前的步骤重新进行一遍。以典型的三端模式的分布式存储系统GFS为例,当Client发现某个Chunk已经写满的时候,向Master发送获取文件F所有可以写的Chunk的信息的请求,重新分配获取可写Chunk的数量,使得所述用户设备端获取新的目标文件所对应的可写数据块,从而继续进行文件的写入。
图6示出根据本申请另一个优选实例的一种实现在分布式存储系统中执行文件写入的设备中可写数据块确定装置示意图。其中,所述可写数据块确定装置122包括候选数据块确定单元1221、直接反馈单元1222、重分配反馈单元1223。
其中,候选数据块确定单元1221确定所述目标文件对应的所有可写的数据块;直接反馈单元1222若所述所有可写的数据块的数量等于或大于所述目标文件对应的可写块数量阈值,则将所述所有可写的数据块作为所述目标文件对应的多个可写数据块;否则,重分配反馈单元1223为所述目标文件分配其他可写的数据块,并将所述其他可写的数据块及所述所有可写的数据块作为所述目标文件对应的多个可写数据块,其中,所述多个可写数据块的数量等于可写块数量阈值。
具体地,候选数据块确定单元1221确定所述目标文件对应的所有可写的数据块。是指确定所述目标文件的所有可写数据块信息,获取的方法包括如上文所述从所述元数据管理设备端所存储的元数据信息中的每个文件当前所允许的可写数据块的数量,即以典型的三端模式的分布式存储系统GFS为例,因为元数据块管理设备端Master在文件的元数据存储方面:负责存储每个文件当前所有正在写的数据块Chunk信息,例如数据块的副本位置;负责存储每个文件当前所允许的可写数据块Chunk的数量,因此可以从Master端中找到目标文件F的所有可写数据块,假设所找到的目标文件F的所有可写数据块为T。
接着,直接反馈单元1222若所述所有可写的数据块的数量等于或大于所述目标文件对应的可写块数量阈值,则将所述所有可写的数据块作为所述目标文件对应的多个可写数据块。即将根据系统默认或用户根据写入要求所设置的可写块数量阈值与所获得的目标文件的所有可写数据块数量进行比较,若所述目标文件的所有可写数据块数量不小于所述可写块数量阈值则将所述目标文件的所有可写数据块及其相关信息直接由元数据管理设备端反馈给用户设备端,使之作为所述目标文件对应的可写数据块进行写入。以典型的三端模式的分布式存储系统GFS为例,如果当前目标文件F已有的Chunk数量不小于可写块数量阈值M,则将这些Chunk信息返回Client。
接着,若所述所有可写的数据块的数量小于所述目标文件对应的可写块数量阈值,重分配反馈单元1223为所述目标文件分配其他可写的数据块,并将所述其他可写的数据块及所述所有可写的数据块作为所述目标文件对应的多个可写数据块,其中,所述多个可写数据块的数量等于可写块数量阈值。即将根据系统默认或用户根据写入要求所设置的可写块数量阈值与所获得的目标文件的所有可写数据块数量进行比较,若所述目标文件的所有可写数据块数量小于所述可写块数量阈值,则重新由元数据管理设备端分配从所存储或新被释放的数据块中分配差额数量的数据块,使得所述目标文件的可写数据块数量与所述可写块数量阈值相等。以典型的三端模式的分布式存储系统GFS为例,如果当前文件F已有的Chunk数量小于可写块数量阈值M,则重新分配足够数量的Chunk,新分配的Chunk数量加已有的Chunk数量等于可写块数量阈值M,将所有Chunk信息返回Client。通过上述方式,可以通过可写块数量阈值控制,使得可写数据块维持在一定值,从而使得用户不需要对文件写入进行人工控制,减小用户的管理成本。
本领域技术人员应能理解上述确定目标文件对应可写数据块的方式仅为举例,其他现有的或今后可能出现的目标文件对应可写数据块的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述为所述目标文件分配其他可写的数据块包括:根据每个文件当前对应的在写数据块及每个在写数据块对应的块服务器,为所述目标文件分配其他可写的数据块,其中,每个其他可写的数据块对应的块服务器与每个在写数据块对应的块服务器小于或等于预定的块服务器重复阈值。即在分配新的可写数据块所对应的数据块服务器时,尽量避免其所分配的数据块服务器是元数据管理设备端中已经记录的,从而减少数据块服务器同时接受多个数据块的写入请求从而造成写入热点的情况。所述块服务器是指Chunksever,即数据管理模块本文亦称之为数据块服务器或块服务器,用于维护数据块副本的模块,提供数据块副本的访问的接口。所述块服务器重复阈值是指允许块服务器同时提供不同的数据块进行写入的数量,例如,所述块服务器重复阈值为3,即每个块服务器仅可对三个数据块提供服务。对数据块对应的块服务器的具体分配方式,以典型的三端模式的分布式存储系统GFS为例,在元数据管理设备端对Chunk位置的分配方面:记录当前可写Chunk所在的所有Chunkserver,这部分信息以缓存的形式存在,不需要持久化,宕机重启后可以根据上面记录的元数据信息恢复出来。分配新的Chunk的时候,根据块服务器重复阈值避免新分配的Chunkserver与上述步骤记录的Chunkserver重复。或者这一步操作采用尽量而为的策略,当集群可写的Chunkserver数量太少,无法满足不重复的要求的时候,也允许Chunk的分配动作成功。文件内部的数据分部信息可见,有效的避免多个Chunk分布在相同的Chunkserver上,消除热点,保证了写入吞吐量的实际效果。
图7示出根据本申请另一个优选实例的一种实现在分布式存储系统中执行文件写入的设备中数据块写入执行装置示意图。所述数据块写入执行装置113包括写入请求接受单元1131、数据块写入执行单元1132、数据块更新单元1133。
其中,写入请求接受单元1131接收关于所述目标文件的写入请求;数据块写入执行单元1132根据所述写入请求对所述多个可写数据块中当前第一个可写数据块对应的一个或多个数据块副本执行文件写入;数据块更新单元1133更新所述多个可写数据块中当前第一个可写数据块。
具体地,写入请求接受单元1131接收关于所述目标文件的写入请求。即用户设备端接受关于所述目标文件的写入请求,因为所述目标文件可写入的数据块数量大于所述可写块数量阈值,因此支持用户同时发起相应数量的写入请求。以典型的三端模式的分布式存储系统GFS为例,用户设备端Client在数据写入流程中支持用户同时发起M个写请求,M等于当前可写Chunk的数量。同时接受若干关于单个文件的写请求,使得单个文件的写入速率提升。
接着,数据块写入执行单元1132根据所述写入请求对所述多个可写数据块中当前第一个可写数据块对应的一个或多个数据块副本执行文件写入。即用户设备端在接受到所述目标文件对应的多个可写数据块后按照默认排序或依据一定的排序准则对所述可写数据块的数据块服务器进行寻找,并传达相应的写入请求,从而在数据块及其副本上进行写入。以典型的三端模式的分布式存储系统GFS为例,Client收到可写Chunk信息后按顺序缓存,同时将下次可写Chunk的序号I设置为第一个可写Chunk的序号,Client收到用户的写入请求,选取序号为I的Chunk,将数据写入请求发往这个Chunk的所有Chunkserver,同时将I序号修改为下一个可写Chunk的序号。
接着,数据块更新单元1133更新所述多个可写数据块中当前第一个可写数据块。即用户设备端按顺序对所有写入请求进行响应,即按顺序对所述数据块执行写入,当所述数据块排序所在的第一个可写数据块被执行写入后,将后续的所述可写数据块更新排序信息,例如上文举例,Client收到用户的写入请求,选取序号为I的Chunk,将数据写入请求发往这个Chunk的所有Chunkserver,同时将I序号修改为下一个可写Chunk的序号,即每当用户发起写请求的时候,根据序号I选择相应的Chunk,同时将I指向下一个Chunk,这样以轮询的方式访问所有的Chunk,避免某个Chunk成为写入的热点。
本领域技术人员应能理解上述对可写数据块进行轮询写入的方式仅为举例,其他现有的或今后可能出现的对可写数据块进行轮询写入的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述数据块写入执行装置113还包括:新写入请求接受单元1134(未示出),所述新写入请求接受单元1134当在所述一个或多个数据块副本均成功执行文件写入,回收所述当前第一个可写数据块以接收关于所述目标文件的新写入请求。是指在某个可写数据块及其副本进行写入后,当所有的块服务器均反馈写入成功后,用户设备端返回用户该数据块所对应的写入请求写入成功,进而因为当前所述可写数据块没有写满触发重新分配可写数据块的情况,因此可重新接受用户关于所述目标文件的写入请求。以典型的三端模式的分布式存储系统GFS为例,当某个Chunk的所有Chunkserver都返回Client成功的时候,Client返回用户成功,写流程返回接收用户新的请求的阶段,从而充分利用可写数据块同时使得单文件的写入保持在一定数量数据块的同时写入中,提升单文件写入速率。
优选地,所述数据块写入执行装置113包括:写入请求阻塞单元1135(未示出),所述写入请求阻塞单元1135当所述多个可写数据块中每个可写数据块都在执行文件写入时,阻塞关于所述目标文件的写入请求。即因为所述执行文件写入的可写数据块与所设置的可写块数量阈值相等,因此同时接受的所述目标文件的写入请求与可写块数量阈值相等,通过在所有可写数据块均执行写入后阻塞相关写入请求的方式使得可以通过可写块数量阈值对单文件同时写入进程数量进行控制,从而达到用户不需要自己管理文件多进程写入的木大,只要根据写入需求控制所述可写块数量阈值即可,从而减轻用户的管理负担。以典型的三端模式的分布式存储系统GFS为例,重复对可写Chunk按顺序进行写入请求响应执行,直到当前所有的可写Chunk都有数据正在写入,阻塞用户的写入请求。
图8示出根据本申请另一个方面的元数据管理设备端设备以及用户设备端设备配合实现的一种实现在分布式存储系统中执行文件写入的设备中实现修改可写块数量阈值功能的示意图。为实现所述修改可写块数量阈值功能,所述用户设备端设备包括可写块数量阈值设置请求发送装置115。所述元数据管理设备端设备包括可写块数量阈值设置请求接受装置124、可写块数量阈值更新装置125。
其中,可写块数量阈值设置请求发送装置115将用户提交的关于所述目标文件的可写块数量阈值设置请求发送至所述元数据管理设备,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值。可写块数量阈值设置请求接受装置124接收所述用户设备发送的关于所述目标文件的可写块数量阈值设置请求,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值;可写块数量阈值更新装置125根据所述新的可写块数量阈值更新所述可写块数量阈值。
具体地,可写块数量阈值设置请求发送装置115将用户提交的关于所述目标文件的可写块数量阈值设置请求发送至所述元数据管理设备,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值。接着,可写块数量阈值设置请求接受装置124接收所述用户设备发送的关于所述目标文件的可写块数量阈值设置请求,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值;是指所述可写块数量阈值是可以根据用户的写入需求进行调整,将调整的具体数据和请求通过用户设备端发送至元数据块管理设备端即可。具体执行中可比较当前可写的数据块数量与需要设置的所述可写块数量阈值是否相等,若相等则不进行修改,若不等,则将所述可写块数量阈值修改为所需的数值,但不限于此。以典型的三端模式的分布式存储系统GFS为例,用户根据写入吞吐的要求,决定将可写Chunk的数量设置为M;用户调用Client接口,获取当前可写Chunk的数量;Client向Master发起请求,获取当前可写Chunk的数量;Master收到Client请求后在内存中找到文件可写Chunk的数量N,将N返回Client,Cilent将当前可写Chunk数量N返回用户;用户根据N和M的值进行判断,如果N==M,则无需修改;如果N!=M,则调用Client接口,设置当前可写Chunk的数量为M;Client向Master发起请求,将可写Chunk数量设置为M。
接着,可写块数量阈值更新装置125根据所述新的可写块数量阈值更新所述可写块数量阈值。是指所述元数据块管理设备端接受请求根据所述请求中的新的可写块数量阈值对历史值进行更新或存储。具体地,以典型的三端模式的分布式存储系统GFS为例,Master收到请求后将可写Chunk数量设置为M,同时将这个改动持久化。优选地,可返回Client改动成功;Client返回用户改动成功。通过以上方法为分布式文件系统添加了一种新的数据写入方式,允许单个文件同时可以写多个Chunk,同时可写Chunk的个数支持动态调整,从而用户不需要自己管理多路写入的文件,只需要根据写入的需求调整可写数据块的数量,节约用户管理成本。
此外,本申请提供了一种用于在分布式存储系统中执行文件写入的元数据管理设备端设备,其中,该设备包括:
处理器;
以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取用户设备提交的关于目标文件的可写数据块的块信息请求;
根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块;
将所述多个可写数据块返回至所述用户设备。
此外,本申请提供了一种用于在分布式存储系统中执行文件写入的用户设备端设备,其中,该设备包括:
处理器;
以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
向元数据管理设备提交关于目标文件的可写数据块的块信息请求;
接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块;
根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (23)

1.一种在元数据管理设备端用于在分布式存储系统中执行文件写入的方法,其中,该方法包括:
获取用户设备提交的关于目标文件的可写数据块的块信息请求;
根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块;
将所述多个可写数据块返回至所述用户设备。
2.根据权利要求1所述的方法,其中,所述根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块包括:
确定所述目标文件对应的所有可写的数据块;
若所述所有可写的数据块的数量等于或大于所述目标文件对应的可写块数量阈值,则将所述所有可写的数据块作为所述目标文件对应的多个可写数据块;否则,
为所述目标文件分配其他可写的数据块,并将所述其他可写的数据块及所述所有可写的数据块作为所述目标文件对应的多个可写数据块,其中,所述多个可写数据块的数量等于可写块数量阈值。
3.根据权利要求2所述的方法,其中,所述为所述目标文件分配其他可写的数据块包括:
根据每个文件当前对应的在写数据块及每个在写数据块对应的块服务器,为所述目标文件分配其他可写的数据块,其中,每个其他可写的数据块对应的块服务器与每个在写数据块对应的块服务器小于或等于预定的块服务器重复阈值。
4.根据权利要求1所述的方法,其中,所述方法还包括:
接收所述用户设备发送的关于所述目标文件的可写块数量阈值设置请求,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值;
根据所述新的可写块数量阈值更新所述可写块数量阈值。
5.一种在用户设备端用于在分布式存储系统中执行文件写入的方法,其中,该方法包括:
向元数据管理设备提交关于目标文件的可写数据块的块信息请求;
接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块;
根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。
6.根据权利要求5所述的方法,其中,所述方法还包括:
当所述多个可写数据块中之一被写满时,向所述元数据管理设备重新提交关于所述目标文件的可写数据块的块信息请求。
7.根据权利要求5所述的方法,其中,所述根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入包括:
接收关于所述目标文件的写入请求;
根据所述写入请求对所述多个可写数据块中当前第一个可写数据块对应的一个或多个数据块副本执行文件写入;
更新所述多个可写数据块中当前第一个可写数据块。
8.根据权利要求7所述的方法,其中,所述根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入还包括:
当在所述一个或多个数据块副本均成功执行文件写入,回收所述当前第一个可写数据块以接收关于所述目标文件的新写入请求。
9.根据权利要求5所述的方法,其中,所述根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入包括:
当所述多个可写数据块中每个可写数据块都在执行文件写入时,阻塞关于所述目标文件的写入请求。
10.根据权利要求5所述的方法,其中,所述方法还包括:
将用户提交的关于所述目标文件的可写块数量阈值设置请求发送至所述元数据管理设备,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值。
11.一种用于在分布式存储系统中执行文件写入的元数据管理设备端设备,其中,该设备包括:
块信息请求获取装置,用于获取用户设备提交的关于目标文件的可写数据块的块信息请求;
可写数据块确定装置,用于根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块;
块信息反馈装置,用于将所述多个可写数据块返回至所述用户设备。
12.根据权利要求11所述的设备,其中,所述可写数据块确定装置包括:
候选数据块确定单元,用于确定所述目标文件对应的所有可写的数据块;
直接反馈单元,用于若所述所有可写的数据块的数量等于或大于所述目标文件对应的可写块数量阈值,则将所述所有可写的数据块作为所述目标文件对应的多个可写数据块;否则,
重分配反馈单元,用于为所述目标文件分配其他可写的数据块,并将所述其他可写的数据块及所述所有可写的数据块作为所述目标文件对应的多个可写数据块,其中,所述多个可写数据块的数量等于可写块数量阈值。
13.根据权利要求12所述的设备,其中,所述为所述目标文件分配其他可写的数据块包括:
根据每个文件当前对应的在写数据块及每个在写数据块对应的块服务器,为所述目标文件分配其他可写的数据块,其中,每个其他可写的数据块对应的块服务器与每个在写数据块对应的块服务器小于或等于预定的块服务器重复阈值。
14.根据权利要求11所述的设备,其中,所述设备还包括:
可写块数量阈值设置请求接受装置,用于接收所述用户设备发送的关于所述目标文件的可写块数量阈值设置请求,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值;
可写块数量阈值更新装置,用于根据所述新的可写块数量阈值更新所述可写块数量阈值。
15.一种用于在分布式存储系统中执行文件写入的用户设备端设备,其中,该设备包括:
块信息请求发送装置,用于向元数据管理设备提交关于目标文件的可写数据块的块信息请求;
块信息接受装置,用于接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块;
数据块写入执行装置,用于根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。
16.根据权利要求15所述的设备,其中,所述设备还包括:
数据块写满处理装置,用于当所述多个可写数据块中之一被写满时,向所述元数据管理设备重新提交关于所述目标文件的可写数据块的块信息请求。
17.根据权利要求15所述的设备,其中,所述数据块写入执行装置包括:
写入请求接受单元,用于接收关于所述目标文件的写入请求;
数据块写入执行单元,用于根据所述写入请求对所述多个可写数据块中当前第一个可写数据块对应的一个或多个数据块副本执行文件写入;
数据块更新单元,用于更新所述多个可写数据块中当前第一个可写数据块。
18.根据权利要求17所述的设备,其中,所述数据块写入执行装置还包括:
新写入请求接受单元,用于当在所述一个或多个数据块副本均成功执行文件写入,回收所述当前第一个可写数据块以接收关于所述目标文件的新写入请求。
19.根据权利要求15所述的设备,其中,所述数据块写入执行装置包括:
写入请求阻塞单元,用于当所述多个可写数据块中每个可写数据块都在执行文件写入时,阻塞关于所述目标文件的写入请求。
20.根据权利要求15所述的设备,其中,所述设备还包括:
可写块数量阈值设置请求发送装置,用于将用户提交的关于所述目标文件的可写块数量阈值设置请求发送至所述元数据管理设备,其中,所述可写块数量阈值设置请求包括关于所述目标文件的新的可写块数量阈值。
21.一种用于在分布式存储系统中执行文件写入的系统,其中,该系统包括如权利要求11至14中任一项所述的元数据管理设备端设备,以及如权利要求15至20中任一项所述的用户设备端设备。
22.一种用于在分布式存储系统中执行文件写入的元数据管理设备端设备,其中,该设备包括:
处理器;
以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取用户设备提交的关于目标文件的可写数据块的块信息请求;
根据所述目标文件对应的可写块数量阈值确定所述目标文件对应的多个可写数据块;
将所述多个可写数据块返回至所述用户设备。
23.一种用于在分布式存储系统中执行文件写入的用户设备端设备,其中,该设备包括:
处理器;
以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
向元数据管理设备提交关于目标文件的可写数据块的块信息请求;
接收所述元数据管理设备基于所述块信息请求返回的、所述目标文件对应的多个可写数据块;
根据关于所述目标文件的写入请求对所述多个可写数据块中之一执行文件写入。
CN201710118763.XA 2016-03-01 2017-03-01 一种用于在分布式存储系统中执行文件写入的方法与设备 Active CN107145303B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610115460 2016-03-01
CN2016101154608 2016-03-01

Publications (2)

Publication Number Publication Date
CN107145303A CN107145303A (zh) 2017-09-08
CN107145303B true CN107145303B (zh) 2020-06-19

Family

ID=59783776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710118763.XA Active CN107145303B (zh) 2016-03-01 2017-03-01 一种用于在分布式存储系统中执行文件写入的方法与设备

Country Status (1)

Country Link
CN (1) CN107145303B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111723056B (zh) * 2020-06-09 2024-04-30 北京青云科技股份有限公司 小文件的处理方法、装置、设备和存储介质
CN113515531B (zh) * 2021-05-08 2022-12-02 重庆紫光华山智安科技有限公司 数据访问方法、装置、客户端及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103116552A (zh) * 2013-03-18 2013-05-22 华为技术有限公司 用于在分布式存储系统中分配存储空间的方法和装置
US8650328B1 (en) * 2008-12-15 2014-02-11 American Megatrends, Inc. Bi-directional communication between redundant storage controllers
CN104965835A (zh) * 2014-07-30 2015-10-07 浙江大华技术股份有限公司 一种分布式文件系统的文件读写方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9323615B2 (en) * 2014-01-31 2016-04-26 Google Inc. Efficient data reads from distributed storage systems
US20150363118A1 (en) * 2014-06-17 2015-12-17 Netapp, Inc. Techniques for harmonic-resistant file striping

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8650328B1 (en) * 2008-12-15 2014-02-11 American Megatrends, Inc. Bi-directional communication between redundant storage controllers
CN103116552A (zh) * 2013-03-18 2013-05-22 华为技术有限公司 用于在分布式存储系统中分配存储空间的方法和装置
CN104965835A (zh) * 2014-07-30 2015-10-07 浙江大华技术股份有限公司 一种分布式文件系统的文件读写方法及装置

Also Published As

Publication number Publication date
CN107145303A (zh) 2017-09-08

Similar Documents

Publication Publication Date Title
US7418547B2 (en) System and method to protect data stored in a storage system
US11550819B2 (en) Synchronization cache seeding
US9684467B2 (en) Management of pinned storage in flash based on flash-to-disk capacity ratio
US20190140902A1 (en) Centralized configuration data in a distributed file system
CN111182067B (zh) 一种基于星际文件系统ipfs的数据写入方法及设备
CN104580439B (zh) 一种云存储系统中使数据均匀分布的方法
CN110198346B (zh) 数据读取方法、装置、电子设备及可读存储介质
US20220075757A1 (en) Data read method, data write method, and server
CN108540510B (zh) 一种云主机创建方法、装置及云服务系统
US20170153909A1 (en) Methods and Devices for Acquiring Data Using Virtual Machine and Host Machine
US8078798B2 (en) Managing first level storage in a multi-host environment
US20100161585A1 (en) Asymmetric cluster filesystem
US7660964B2 (en) Windowing external block translations
CN107145303B (zh) 一种用于在分布式存储系统中执行文件写入的方法与设备
US20190012083A1 (en) System and method for managing a non-volatile storage resource as a shared resource in a distributed system
CN113282564A (zh) 数据存储方法、系统、节点和存储介质
CN106599323B (zh) 在分布式文件系统中实现分布式管道的方法和装置
CN107181773B (zh) 分布式存储系统的数据存储及数据管理方法、设备
CN111291062A (zh) 数据同步写入方法、装置、计算机设备及存储介质
CN110018879B (zh) 应用于分布式系统的延迟加载方法及装置
CN109144403B (zh) 一种用于云盘模式切换的方法与设备
CN107145302B (zh) 一种用于在分布式存储系统中执行文件写入的方法与设备
CN109992447B (zh) 数据复制方法、装置及存储介质
CN111399753B (zh) 写入图片的方法和装置
CN114089912A (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