一种分布式文件系统磁盘写入的自动均衡方法及存储介质与流程

文档序号:23725646发布日期:2021-01-26 15:53阅读:56来源:国知局
一种分布式文件系统磁盘写入的自动均衡方法及存储介质与流程

[0001]
本发明涉及计算机数据存储技术领域,特别涉及一种分布式文件系统磁盘写入的自动均衡方法及存储介质。


背景技术:

[0002]
在分布式文件系统中,数据节点将数据块存储到本地文件系统目录中,具体的目录可以通过配置分布式文件系统-site.xml里面的dfs.datanode.data.dir参数。在典型的安装配置中,一般都会配置多个目录,并且把这些目录分别配置到不同的设备上,比如分别配置到不同的hdd(hdd的全称是hard disk drive)和ssd(全称solid state drives,固态硬盘)上。当我们往分布式文件系统上写入新的数据块,数据节点将会使用volume选择策略来为这个块选择存储的地方。
[0003]
目前hadoop支持两种volume选择策略:round-robin和available spac,我们可以通过dfs.datanode.fsdataset.volume.choosing.policy参数来设置。循环(round-robin)策略将新块均匀分布在可用磁盘上;而可用空间(available-space)策略优先将数据写入具有最大可用空间的磁盘。
[0004]
在现有的默认情况下,数据节点是使用基于round-robin策略来写入新的数据块。然而在一个长时间运行的集群中,由于分布式文件系统中的大规模文件删除或者通过往数据节点中添加新的磁盘仍然会导致同一个数据节点中的不同磁盘存储的数据很不均衡。即使你使用的是基于可用空间的策略,卷(volume)不平衡仍可导致较低效率的磁盘i/o。比如所有新增的数据块都会往新增的磁盘上写,在此期间,其他的磁盘会处于空闲状态,这样新的磁盘将会是整个系统的瓶颈。最近,分布式文件系统-1312还引入了一个在线磁盘均衡逻辑,旨在根据各种指标重新平衡正在运行数据节点上的磁盘数据。和现有的分布式文件系统均衡器类似,分布式文件系统磁盘均衡逻辑在数据节点中以线程的形式运行,并在相同存储类型的卷(volumes)之间移动数据。然后这个磁盘均衡逻辑目前只支持手动触发,需要手动地在分布式文件系统上面执行磁盘均衡逻辑的3个命令plan,execute和query来执行负载均衡。目前的磁盘均衡逻辑无法实现自动的均衡,现有的磁盘平衡器需要3个步骤(通过分布式文件系统的磁盘均衡逻辑命令):plan,execute和query进行磁盘均衡,这3个步骤分别需要手动地输入分布式文件系统diskbalancer-plan,分布式文件系统diskbalancer-execute,分布式文件系统diskbalancer-query命令,费时费力,依赖人力操作。
[0005]
由此,需要一种分布式文件系统自动的负载均衡策略,无需手动地执行命令,系统在每次磁盘写入后根据磁盘当前使用量情况自动地触发磁盘负载均衡。


技术实现要素:

[0006]
本发明的目的在于提供一种分布式文件系统磁盘写入的自动均衡方法,无需手动地执行命令,系统在每次磁盘写入后根据磁盘当前使用量情况自动地触发磁盘负载均衡,解决了现有技术中磁盘均衡逻辑无法实现自动均衡,依赖人力操作的问题。
[0007]
针对现有技术所存在的问题,第一方面,本发明提出一种分布式文件系统磁盘写入的自动均衡方法,所述方法包括:
[0008]
探测磁盘使用量,获取每次数据写入完成后的磁盘使用量;
[0009]
分析获得的所述磁盘使用量与预设的磁盘均衡规则;
[0010]
当所述磁盘使用量满足预设的磁盘均衡规则时,进行磁盘均衡操作;
[0011]
接收磁盘均衡完成信号。
[0012]
进一步地,所述方法还包括:
[0013]
当获得的所述磁盘使用量不满足预设的磁盘均衡规则时,不进行磁盘均衡操作,记录当前磁盘的磁盘使用量。
[0014]
进一步地,所述磁盘均衡操作的步骤,具体包括:
[0015]
根据磁盘均衡逻辑生成磁盘均衡的执行计划;
[0016]
根据所述执行计划移动数据,完成各个磁盘上的数据均衡;
[0017]
数据均衡后生成结束信号并反馈至分布式文件系统客户端。
[0018]
进一步地,所述方法还包括:
[0019]
在磁盘执行所述磁盘均衡的执行计划之前,检测其他磁盘内的存储情况,确定其他磁盘的磁盘使用量,根据确定其他磁盘的磁盘使用量制定磁盘均衡的执行计划,提取执行计划的磁盘自身内部数据,发送至其他磁盘。
[0020]
进一步地,所述预设的磁盘均衡规则为:
[0021]
统计输入数据磁盘的磁盘使用量是否超过预设的磁盘使用量,若输入数据磁盘的磁盘使用量超过预设的磁盘使用量,则认定所述输入数据磁盘的磁盘使用量满足预设的磁盘均衡规则;
[0022]
若输入数据磁盘的磁盘使用量未超过预设的磁盘使用量,则认定所述输入数据磁盘的磁盘使用量不满足预设的磁盘均衡规则。
[0023]
进一步地,所述方法还包括:数据被写入磁盘后,再进行探测磁盘使用量。
[0024]
第二方面,本申请提供了一种可读存储介质,所述可读存储介质中存储有计算机程序,当负载均衡装置的至少一个处理器执行所述计算机程序时,所述负载均衡装置执行上述方法的步骤。
[0025]
本发明实施例提供一种分布式文件系统磁盘写入的自动均衡方法,通过在原有的基础上面改造了分布式文件系统的客户端,在其中加入了磁盘使用量的探针,增加了用于触发磁盘均衡逻辑的规则引擎,改造了磁盘均衡逻辑,使其能够实时地接受规则引擎的触发消息并发送均衡计划完成磁盘均衡,使得磁盘平衡器在每次数据写入完成后能够实时地生成执行计划,执行数据均衡的计划。此技术方案省去了很多人工触发命令执行的时间,使得系统能够自动地去处理磁盘写入均衡。
附图说明
[0026]
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0027]
图1为本发明实施例的一种分布式文件系统磁盘写入的自动均衡方法的流程图;
[0028]
图2为本发明实施例的一种分布式文件系统磁盘写入的自动均衡方法的具体流程图;
[0029]
图3为本发明实施例的一种分布式文件系统自动的磁盘写入均衡器的整体架构图;
[0030]
图4为一种分布式文件系统磁盘写入的策略图。
具体实施方式
[0031]
本发明提出一种分布式文件系统磁盘写入的自动均衡方法,通过增加实时探测并触发均衡的方式来完成磁盘写入负载均衡,如图1所示,所述方法包括:
[0032]
步骤s110:实时地在每次数据写入完成后探测磁盘使用量;分布式文件系统客户端发送待写入数据和探测磁盘使用量的命令到磁盘,数据被写入到某个磁盘中后,探测磁盘使用量,获取每次数据写入完成后的磁盘使用量;
[0033]
步骤s120:触发磁盘均衡器生成均衡计划并执行完成磁盘均衡;发送磁盘使用量至规则模块判断是否触发;根据获得的所述磁盘使用量与预设的磁盘均衡规则判断是否触发均衡过程;提前配置好了一些触发磁盘均衡的规则:例如当某块磁盘的使用量超过80%时,就触发磁盘均衡器;
[0034]
步骤s130:当所述磁盘使用量满足预设的磁盘均衡规则时,进行磁盘均衡操作。
[0035]
进一步地,当获得的所述磁盘使用量不满足预设的磁盘均衡规则时,不进行磁盘均衡操作,记录当前磁盘的磁盘使用量。
[0036]
进一步地,所述磁盘均衡操作的过程为:
[0037]
生成磁盘均衡的执行计划;
[0038]
根据所述执行计划移动数据,完成各个磁盘上的数据均衡;
[0039]
数据均衡后生成结束信号并反馈至分布式文件系统客户端。
[0040]
磁盘均衡的过程就是磁盘数据移动的过程,如图3所示,数据从磁盘块占用较多的磁盘移动到磁盘块占用较少的磁盘。磁盘块1中有3块数据,磁盘块2和磁盘块3中没有数据,当发生磁盘负载均衡时,磁盘块1中的数据分别移动到磁盘块2和磁盘块3,使得磁盘的数据分布地更加均衡,磁盘负载均衡就此完成。
[0041]
进一步地,所述预设的磁盘均衡规则为:统计输入数据磁盘的磁盘使用量是否超过预设的磁盘使用量,若输入数据磁盘的磁盘使用量超过预设的磁盘使用量,则认定所述输入数据磁盘的磁盘使用量满足预设的磁盘均衡规则;若输入数据磁盘的磁盘使用量未超过预设的磁盘使用量,则认定所述输入数据磁盘的磁盘使用量不满足预设的磁盘均衡规则。
[0042]
进一步地,还包括在数据被写入到某个磁盘后,磁盘向分布式文件系统客户端发出信号,进而保证在数据被写入到某个磁盘后,再进行探测磁盘使用量。
[0043]
另一种实现方式为,当磁盘接收到写入数据的指令时,向磁盘均衡器与发送分布式文件系统客户端分别发送电信号,当数据写入完成后,不再向分布式文件系统客户端发送信号,则磁盘均衡器开始工作,检测写入数据后的磁盘使用量。
[0044]
根据一些实施例,上述分布式文件系统磁盘写入的自动均衡方法的具体实现方式如图2-3所示,可以把用于实现上述磁盘均衡规则功能的功能模块称为规则模块,把用于实
现上述磁盘均衡逻辑功能的功能模块成为磁盘均衡器;可以在分布式文件系统客户端内设有内置探针逻辑,在原有的分布式文件系统客户端中加入了1个磁盘探针逻辑,该探针逻辑在每次往磁盘写入数据后会再执行一次查询磁盘使用量的命令,执行后会获得实时的磁盘使用量数据,用以后续磁盘均衡器的触发判定;所述内置探针逻辑在数据被写入到某个磁盘后执行查询磁盘使用量的命令,获取实时的磁盘使用量数据,并将所述磁盘使用量数据发送至规则模块;所述规则模块内预设有磁盘均衡规则,并根据接收的所述磁盘使用量数据与预设的磁盘均衡规则判断是否触发均衡过程;若所述磁盘使用量数据满足预设的磁盘均衡规则时,则发送触发信号至磁盘均衡器,所述磁盘均衡器接收所述触发信号,进行磁盘均衡操作。所述磁盘均衡器增加了接口用于接收来自规则引擎的触发信号,增加了向远程机器上面发送负载均衡命令的功能,该组件是最终磁盘均衡的执行组件,完成了磁盘数据的均衡。
[0045]
进一步地,当所述磁盘使用量数据不满足预设的磁盘均衡规则时,则不发送触发信号至磁盘均衡器,所述磁盘均衡器未接收所述触发信号,不进行磁盘均衡操作。
[0046]
进一步地,所述磁盘均衡操作的过程为:
[0047]
磁盘均衡器根据实时的磁盘使用量数据生成磁盘均衡的执行计划;
[0048]
磁盘均衡器将所述执行计划发送至磁盘执行,完成各个磁盘上的数据均衡;
[0049]
磁盘均衡器在完成数据均衡后生成结束信号并反馈至分布式文件系统客户端,说明完成磁盘均衡过程。
[0050]
在一些示例中,上述自动均衡方法可以包括:
[0051]
分布式文件系统客户端发送待写入数据和探测磁盘使用量的命令到磁盘。
[0052]
数据被写入到某个磁盘中后,执行探测磁盘使用量的命令,获取到每次数据写入完成后的磁盘使用量。
[0053]
客户端将实时的磁盘使用量发送给规则模块(提前配置好了一些触发磁盘均衡的规则:例如当某块磁盘的使用量超过80%时,就触发磁盘均衡器),规则模块根据配置的规则来决定是否触发均衡器;
[0054]
如果上一步规则引擎中的规则没有触发,返回客户端本次无需磁盘均衡的响应。
[0055]
如果上一步规则引擎中的规则被触发了,规则引擎将触发均衡器的命令和磁盘的实际使用量发送给磁盘均衡器;
[0056]
磁盘均衡器根据实时的磁盘使用量,生成磁盘均衡的执行计划;
[0057]
磁盘均衡器将执行计划发送至磁盘执行,移动数据完成各个磁盘上面的数据均衡;
[0058]
磁盘均衡器响应规则引擎说明本次均衡完成;
[0059]
磁盘均衡器发送响应至新的分布式文件系统客户端,说明本次磁盘均衡已完成。
[0060]
根据一些实施例,本发明还提供一种可读存储介质,所述可读存储介质中存储有计算机程序,当负载均衡装置的至少一个处理器执行所述计算机程序时,所述负载均衡装置执行上述方法的步骤。
[0061]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、
功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0062]
又例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,再例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0063]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0064]
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0065]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0066]
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0067]
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1