一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种硬盘管理方法及装置与流程

2022-11-28 13:18:42 来源:中国专利 TAG:


1.本技术涉及电学技术领域,尤其涉及一种硬盘管理方法及装置。


背景技术:

2.在分布式存储集群系统中,由于双磁臂硬盘与单磁臂硬盘的存储介质相同,在双磁臂硬盘接入数据节点后,数据节点会按照单磁臂硬盘的管理逻辑,将双磁臂硬盘识别成两个存储单元,但这两个存储单元位于数据节点内的同一个槽位内,对应同一槽位号,因而会被数据节点识别为同一个存储单元,只能使用该双磁臂硬盘一半的硬盘容量,会造成双磁臂硬盘容量浪费。
3.同时,现有技术无法支持数据节点同时利用双磁臂硬盘的两个存储单元进行数据读写,无法提升数据节点读写数据的效率。


技术实现要素:

4.本技术实施例提供了一种硬盘管理方法及装置,用以数据节点对识别出的双磁臂硬盘中的两个存储单元分配不同的挂载点,实现数据节点可以同时利用双磁臂硬盘的两个存储单元进行数据读写,提升数据节点读写数据性能。
5.本技术实施例提供的一种硬盘管理方法,包括:
6.获取当前接入数据节点的硬盘的盘符与物理槽位号的对应关系;其中,若当前接入数据节点的硬盘为单磁臂硬盘,所述对应关系包括一个存储单元的盘符与一个物理槽位号的对应关系;若当前接入数据节点的硬盘为双磁臂硬盘,所述对应关系包括两个存储单元的盘符与一个物理槽位号的对应关系;
7.根据所述对应关系,确定当前接入数据节点的硬盘为单磁臂硬盘或双磁臂硬盘;
8.对于双磁臂硬盘中的两个存储单元,分配不同的挂载点。
9.通过该方法,获取当前接入数据节点的硬盘的盘符与物理槽位号的对应关系;其中,若当前接入数据节点的硬盘为单磁臂硬盘,所述对应关系包括一个存储单元的盘符与一个物理槽位号的对应关系;若当前接入数据节点的硬盘为双磁臂硬盘,所述对应关系包括两个存储单元的盘符与一个物理槽位号的对应关系;根据所述对应关系,确定当前接入数据节点的硬盘为单磁臂硬盘或双磁臂硬盘;对于双磁臂硬盘中的两个存储单元,分配不同的挂载点,从而实现数据节点可以同时利用双磁臂硬盘的两个存储单元进行数据读写,提升数据节点读写数据性能。
10.在一些实施例中,所述方法还包括:
11.当存在写数据任务时,确定所述写数据任务对应的目标硬盘;
12.当所述目标硬盘为目标双磁臂硬盘时,将需要写入所述目标双磁臂硬盘的数据块进行切分,得到两个数据块切片;
13.按照所述目标双磁臂硬盘中的两个存储单元各自的挂载点,向所述目标双磁臂硬盘中的两个存储单元分别写入不同的数据块切片。
14.通过该方法,实现将需要写入双磁臂硬盘的数据块切分成两个数据块切片,并分别写入到双磁臂硬盘中的两个存储单元,提升了写数据效率。
15.在一些实施例中,当存在写数据任务时,确定所述写数据任务对应的目标硬盘,包括:
16.确定当前可用硬盘,并且,针对当前可用硬盘,以存储单元为粒度,确定当前可用硬盘中每一存储单元的可用容量;
17.选择可用容量较大的存储单元所在的硬盘为目标硬盘。
18.通过该方法,实现管理硬盘的负载均衡,有效避免硬盘的存储单元写数据压力过大。
19.在一些实施例中,将需要写入所述目标双磁臂硬盘的数据块进行切分,包括:
20.根据需要写入所述目标双磁臂硬盘的数据块的大小,将所述数据块平均分成两个大小一致的数据块切片;
21.或者,按照预设数据块大小,将需要写入所述目标双磁臂硬盘的数据块分成两个数据块切片,其中一个数据块切片的大小为所述预设数据块大小的一半。
22.通过该方法,实现将需要写入双磁臂硬盘的数据块切分成两个数据块切片。
23.在一些实施例中,所述方法还包括:
24.存储对所述数据块的切分记录,并且,在将所述数据块的两个所述数据块切片分别成功写入所述目标双磁臂硬盘中的不同存储单元后,将对所述数据块的切分记录发送给所述目标双磁臂硬盘进行记录。
25.通过该方法,建立起数据块与数据块切片的对应关系,方便后续通过查找该对应关系,快速找到数据块对应的数据块切片所在的存储单元。
26.在一些实施例中,所述方法还包括:
27.根据所述切分记录更新所述数据节点维护的数据块关系表,其中,所述数据块关系表中包含数据块文件名称、数据块切片名称、硬盘中的存储单元的标识之间的对应关系,其中双磁臂硬盘中的两个存储单元的标识不同;
28.当对所述数据节点初始化完成时,从接入所述数据节点的双磁臂硬盘中获取切分记录,并根据获取的切分记录重新建立数据块关系表。
29.通过该方法,实现根据切分记录维护数据块关系表。
30.在一些实施例中,所述方法还包括:
31.当收到读数据请求时,根据请求读取的数据块文件名称以及维护的数据块关系表,确定请求读取的数据块所在的硬盘;其中,所述数据块关系表中包含数据块文件名称、数据块切片名称、硬盘中的存储单元的标识之间的对应关系,其中双磁臂硬盘中的两个存储单元的标识不同;
32.若请求读取的数据块所在的硬盘为单磁臂硬盘,则从该单磁臂硬盘读取所述文件名称对应的数据块;
33.若请求读取的数据块所在的硬盘为双磁臂硬盘,则按照所述数据块关系表中数据块切片名称与硬盘中的存储单元的标识之间的对应关系,从该双磁臂硬盘中的两个存储单元中,分别读取数据块切片名称对应的数据块切片。
34.通过该方法,实现利用单磁臂硬盘和双磁臂硬盘进行读数据业务,提升了读数据
效率。
35.在一些实施例中,所述方法还包括:
36.当数据块切片损坏,和/或数据块切片的存储位置发生变化时,更新所述数据块关系表。
37.通过该方法,实现异步更新数据块关系表。
38.在一些实施例中,所述方法还包括:
39.当收到删除数据请求时,根据请求删除的数据块文件名称以及维护的数据块关系表,确定请求删除的数据块所在的硬盘;
40.若请求删除的数据块所在的硬盘为单磁臂硬盘,则从该单磁臂硬盘删除所述文件名称对应的数据块;
41.若请求删除的数据块所在的硬盘为双磁臂硬盘,则按照所述数据块关系表中数据块切片名称与双磁臂硬盘中的存储单元的标识之间的对应关系,从该双磁臂硬盘中的两个存储单元中,分别删除数据块切片名称对应的数据块切片。
42.通过该方法,实现按照用户终端发起的用户文件删除指令,将硬盘中的数据删除。
43.在一些实施例中,所述方法还包括:
44.当收到硬盘格式化请求时,确定请求格式化的硬盘的类型;
45.若请求格式化的硬盘为单磁臂硬盘,则直接对该单磁臂硬盘进行格式化;
46.若请求格式化的硬盘为双磁臂硬盘,则分别对该双磁臂硬盘中的两个存储单元进行格式化。
47.通过该方法,实现根据存储单元对硬盘进行格式化,即单磁臂硬盘只需格式化一次,双磁臂硬盘需要格式化二次。
48.本技术另一实施例提供了一种硬盘管理装置,其包括存储器和处理器,其中,所述存储器用于存储程序指令,所述处理器用于调用所述存储器中存储的程序指令,按照获得的程序执行上述任一种方法。
49.此外,根据实施例,例如提供了一种用于计算机的计算机程序产品,其包括软件代码部分,当所述产品在计算机上运行时,这些软件代码部分用于执行上述所定义的方法的步骤。该计算机程序产品可以包括在其上存储有软件代码部分的计算机可读介质。此外,该计算机程序产品可以通过上传过程、下载过程和推送过程中的至少一个经由网络直接加载到计算机的内部存储器中和/或发送。
50.本技术另一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述任一种方法。
附图说明
51.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
52.图1为本技术实施例提供的一种分布式存储集群结构示意图;
53.图2为本技术实施例提供的一种元数据服务器的结构示意图;
54.图3为本技术实施例提供的一种dn的结构示意图;
55.图4为本技术实施例提供的一种硬盘管理方法的流程示意图;
56.图5为本技术实施例提供的一种硬盘接入数据节点示意图;
57.图6为本技术实施例提供的一种数据块切分表;
58.图7为本技术实施例提供的一种dn初始化流程示意图;
59.图8为本技术实施例提供的一种dn写业务流程示意图;
60.图9为本技术实施例提供的一种dn读业务流程示意图;
61.图10为本技术实施例提供的一种dn使用双磁臂硬盘进行写业务的流程示意图;
62.图11为本技术实施例提供的一种dn使用双磁臂硬盘进行读业务流程示意图;
63.图12为本技术实施例提供的硬盘管理装置结构示意图。
具体实施方式
64.下面结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,并不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
65.本技术实施例提供了一种硬盘管理方法及装置,用以数据节点对识别出的双磁臂硬盘分配不同的挂载点,实现数据节点可以同时利用双磁臂硬盘中的两个存储单元进行数据读写,从而提升了数据节点读写数据的效率。
66.其中,方法和装置是基于同一申请构思的,由于方法和装置解决问题的原理相似,因此装置和方法的实施可以相互参见,重复之处不再赘述。
67.本技术实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
68.以下示例和实施例将只被理解为是说明性的示例。虽然本说明书可能在若干处提及“一”、“一个”或“一些”示例或实施例,但这并非意味着每个这种提及都与相同的示例或实施例有关,也并非意味着该特征仅适用于单个示例或实施例。不同实施例的单个特征也可以被组合以提供其他实施例。此外,如“包括”和“包含”的术语应被理解为并不将所描述的实施例限制为仅由已提及的那些特征组成;这种示例和实施例还可以包含并未具体提及的特征、结构、单元、模块等。
69.下面结合说明书附图对本技术各个实施例进行详细描述。需要说明的是,本技术实施例的展示顺序仅代表实施例的先后顺序,并不代表实施例所提供的技术方案的优劣。
70.需要说明的是,本技术实施例提供的技术方案,以对分布式存储集群的双磁臂硬盘和单磁臂硬盘统一管理为例进行说明,但并不限于此。
71.下面对文中出现的一些名词进行解释:
72.1、本技术实施例中术语“单磁臂硬盘”,是采用传统磁记录方式进行数据管理的机械硬盘,全盘只有一个固件和读写驱动器,负责管理所有硬盘内的存储空间,属于当前主流的存储介质。单磁臂硬盘的容量相对较小,并且只有一个读写驱动器负责数据读写业务,同一时刻只能执行一条io请求,其他请求则需要保存在硬盘队列中,因而其读写存在性能瓶颈。
73.2、本技术实施例中术语“双磁臂硬盘”,是近几年出现的大容量、高性能机械硬盘,通过在硬盘内增加一个读写驱动器的方式提供并发读写能力,从而提升硬盘的并发读写性能。双磁臂硬盘内有两个读写驱动器,能够独立管理硬盘的两个存储单元,通过独立的io队列支持对每个存储单元的读写和删除。与单磁臂硬盘相比,相同容量的双磁臂硬盘具备成本优势,并且节省了一个服务器槽位占用。通过业务层面的适配,可以将服务器的存储容量、读写性能和数据恢复能力提升接近一倍。
74.3、本技术实施例中术语“分布式存储集群”,参见图1,例如包括元数据服务器、数据节点和硬盘;
75.其中,元数据服务器(metadata manage server,简称mds),参见图2,例如包括通信模块和负载均衡模块;通信模块负责mds与所有dn之间的通信,还负责主mds与备用mds(一般分布式存储集群包括两台mds,即主mds和备用mds,主mds提供服务,备用mds在主mds故障时提供服务)之间的通信,确保两台mds保存的数据一致;负载均衡模块负责接收所有dn的读写数据压力和可用容量,为数据块选择合适的dn。
76.mds负责维护用户数据的分布关系,管理分布存储集群中的数据节点之间的负载均衡,为保证用户数据的安全性,本技术实施例中的元数据服务器会将用户文件切分成多份数据块存储信息(简称数据块),保存到数据节点内;其中,元数据服务器对用户文件切分所使用的规则,例如纠删码的数据冗余规则。
77.数据节点(datanode server,简称dn),负责管理大容量的机械硬盘(在本技术中特指单磁臂硬盘和双磁臂硬盘),并将数据块写入硬盘的指定位置。参见图3,dn例如包括识别模块、负载均衡模块、通信模块和硬盘数据管理模块;识别模块负责感知硬盘的上下线、挂载,并完成硬盘内数据块、数据块切分表以及数据块关系表的扫描;负载均衡模块负责收集硬盘容量和读写数据压力,并为dn提供可用硬盘,确保硬盘的负载均衡;通信模块负责接收mds下发的需要写入硬盘的数据块,并定期将dn内写入成功的数据块、dn的可用容量和读写数据压力反馈给mds,dn与dn之间的数据交互,以及将其他待恢复的数据块发送给相应的节点;硬盘数据管理模块负责将数据块写入硬盘,并定期校验数据块的内容是否正确。以上识别模块、负载均衡模块、通信模块和硬盘数据管理模块,仅是一种模块划分示例,这些模块可以视为部署在dn上的服务模块。
78.4、本技术实施例中术语“数据块”全称是“数据块存储信息”,是mds将用户的数据文件切分后,保存在与dn相连的硬盘内的用户数据块。业务层读写数据文件时,mds将用户文件切分成大小相同的数据块后,再存储到相应与dn相连的硬盘中;或者从与dn相连的硬盘中,读取数据块后,还原出用户文件。
79.5、本技术实施例中术语“用户文件的生命周期”,是在安防视频监控领域,为了快速、便捷的使用分布式存储集群,在分布式存储集群接入前端视频/图片业务数据时,会为每个数据文件设置一段生命周期,即该数据文件能够在分布式存储集群中保存的小时数。
一旦数据文件的保存时间超过了用户设置的生命周期,分布式存储集群就会发生容量不足,主动删除这些数据文件,以实现对存储空间的重复利用。
80.以视频监控为例,由前端的图像采集设备产生的实时业务数据流,需要被及时接入分布式存储集群,具体方法包括:
81.首先,mds将用户文件(即图像采集设备产生的实时业务数据流)切分成若干个大小相同的数据块;然后,mds的负载均衡模块选择与文件切分后的数据块数量一致的数据节点(可确保数据块分发给不同dn,当某台dn发生异常时,可从其他dn内恢复出数据块内容),来保存业务数据流被切分的数据块;最后,数据节点在收到业务数据块后,负载均衡模块选择与该数据节点相连的硬盘中的一块硬盘用于保存该数据块。
82.在分布式存储集群中,mds负责维护“用户文件名、被切分后的各数据块名,以及这些数据块所在的数据节点id(identity document,身份标识号)”;dn负责维护“数据块以及该数据块所在的硬盘id”,并进行硬盘空间的管理。
83.其中:
84.为了便于管理用户文件和切分后的数据块,分布式存储集群会要求每个落到dn中的数据块不能太大(例如预设长度256mb)。超过该长度后,mds会关闭当前数据块,将当前数据块未写入部分组成一个新的数据块,并分配新的数据节点写入该新数据块。
85.mds将用户文件切分成多份数据块后,根据dn的可用容量,将同一份用户文件对应的数据块投递到不同的数据节点内,可以确保在一台dn离线时,能够利用其他dn中该用户文件对应的数据块,恢复出离线的dn中的该用户文件中的数据块;
86.数据节点则会优先将数据块投递到剩余容量最多的硬盘,并确保同一份用户文件对应的数据块落在不同的硬盘内,可以确保一块硬盘离线时,能够利用其他硬盘中该文件对应的数据块,恢复出用户数据。
87.数据节点支持接入不同介质的单磁臂硬盘和双磁臂硬盘,并将硬盘类型上报给mds,由mds根据分布式存储集群的负载和容量使用情况,将用户文件落入合适的硬盘介质内,但仍存在如下问题:
88.双磁臂硬盘与单磁臂硬盘的存储介质相同,在数据节点内接入双磁臂硬盘后,会按照单磁臂硬盘的管理逻辑,被识别成两个存储单元,但这两个存储单元属于同一块双磁臂硬盘,位于数据节点内的同一个槽位内,对应同一槽位号,因而会被数据节点识别为同一个存储单元,只能使用该双磁臂硬盘一半的硬盘容量,会造成双磁臂硬盘容量浪费。
89.与数据节点相连的硬盘内,保存了被切分后的用户文件数据块,但存在以下性能问题:
90.a、dn在执行用户文件写入任务时,负责业务相关工作的业务层需要等待数据节点内该用户文件的所有数据块写入成功后,才会认为该用户文件写入成功,才能继续写入下一个用户文件;
91.b、dn在执行用户文件读取任务时,业务层同样要等待数据节点内该用户文件的所有数据块读取成功后,才会认为将该用户文件还原成功;
92.c、由a和b可知,业务层读写用户文件的性能,取决于最后一份数据块从硬盘上被成功读写的时间。
93.为了解决上述问题,本技术提供了一种硬盘管理方法及装置,在数据节点内混合
接入单磁臂硬盘和双磁臂硬盘后,实现分布式存储集群层面的硬盘管理、负载均衡和数据读写,提升了数据节点的并发读写性能,降低了分布式存储集群部署和维护难度。
94.参见图4,本技术实施例提供的一种硬盘管理方法,包括:
95.步骤s11、获取当前接入数据节点的硬盘的盘符与物理槽位号的对应关系;其中,若当前接入数据节点的硬盘为单磁臂硬盘,所述对应关系包括一个存储单元的盘符与一个物理槽位号的对应关系;若当前接入数据节点的硬盘为双磁臂硬盘,所述对应关系包括两个存储单元的盘符与一个物理槽位号的对应关系;
96.其中,所述硬盘,例如单磁臂硬盘、双磁臂硬盘;所述盘符为运行dn的系统为磁盘存储设备即存储单元分配的标识符,双磁臂硬盘具有两个存储单元,也就是双磁臂硬盘的每一存储单元都有一个盘符,而双磁臂硬盘共享一个槽位号,因此若两个存储单元的盘符对应一个槽位号,可以确定该两个存储单元对应的硬盘是双磁臂硬盘;
97.步骤s12、根据所述对应关系,确定当前接入数据节点的硬盘为单磁臂硬盘或双磁臂硬盘;
98.步骤s13、对于双磁臂硬盘中的两个存储单元,分配不同的挂载点;
99.其中,所述不同的挂载点,是指为双磁臂硬盘的两个存储单元分配两个挂载点,即一个存储单元分配一个挂载点,两个挂载点都包含同一个槽位号;
100.其中,所述挂载点就是存储单元挂载在dn中的一个目录;
101.通过步骤s13,数据节点可以同时利用双磁臂硬盘的两个存储单元进行数据读写,提升了读写性能。
102.为提升写数据效率,在一些实施例中,所述方法还包括:
103.当存在写数据任务时,确定所述写数据任务对应的目标硬盘;
104.当所述目标硬盘为目标双磁臂硬盘时,将需要写入所述目标双磁臂硬盘的数据块进行切分,得到两个数据块切片;
105.按照所述目标双磁臂硬盘中的两个存储单元各自的挂载点,向所述目标双磁臂硬盘中的两个存储单元分别写入不同的数据块切片。
106.为实现管理硬盘的负载均衡,在一些实施例中,当存在写数据任务时,确定所述写数据任务对应的目标硬盘,包括:
107.确定当前可用硬盘,并且,针对当前可用硬盘,以存储单元为粒度,确定当前可用硬盘中每一存储单元的可用容量;
108.选择可用容量较大的存储单元所在的硬盘为目标硬盘。
109.在一些实施例中,将需要写入所述目标双磁臂硬盘的数据块进行切分,包括:
110.根据需要写入所述目标双磁臂硬盘的数据块的大小,将所述数据块平均分成两个大小一致的数据块切片;
111.或者,按照预设数据块大小,将需要写入所述目标双磁臂硬盘的数据块分成两个数据块切片,其中一个数据块切片的大小为所述预设数据块大小的一半。
112.为方便后续通过查找数据块与数据块切片对应关系,确定数据块对应的数据块切片所在的存储单元,在一些实施例中,所述方法还包括:
113.存储对所述数据块的切分记录,并且,在将所述数据块的两个所述数据块切片分别成功写入所述目标双磁臂硬盘中的不同存储单元后,将对所述数据块的切分记录发送给
所述目标双磁臂硬盘进行记录。
114.为实现根据切分记录维护数据块关系表,在一些实施例中,所述方法还包括:
115.根据所述切分记录更新所述数据节点维护的数据块关系表,其中,所述数据块关系表中包含数据块文件名称、数据块切片名称、硬盘中的存储单元的标识之间的对应关系,其中双磁臂硬盘中的两个存储单元的标识不同;
116.当对所述数据节点初始化完成时,从接入所述数据节点的双磁臂硬盘中获取切分记录,并根据获取的切分记录重新建立数据块关系表。
117.为提升读数据效率,在一些实施例中,所述方法还包括:
118.当收到读数据请求时,根据请求读取的数据块文件名称以及维护的数据块关系表,确定请求读取的数据块所在的硬盘;其中,所述数据块关系表中包含数据块文件名称、数据块切片名称、硬盘中的存储单元的标识之间的对应关系,其中双磁臂硬盘中的两个存储单元的标识不同;
119.若请求读取的数据块所在的硬盘为单磁臂硬盘,则从该单磁臂硬盘读取所述文件名称对应的数据块;
120.若请求读取的数据块所在的硬盘为双磁臂硬盘,则按照所述数据块关系表中数据块切片名称与硬盘中的存储单元的标识之间的对应关系,从该双磁臂硬盘中的两个存储单元中,分别读取数据块切片名称对应的数据块切片。
121.在一些实施例中,所述方法还包括:
122.当数据块切片损坏,和/或数据块切片的存储位置发生变化时,更新所述数据块关系表。
123.为实现按照用户终端发起的用户文件删除指令,将硬盘中的数据删除,在一些实施例中,所述方法还包括:
124.当收到删除数据请求时,根据请求删除的数据块文件名称以及维护的数据块关系表,确定请求删除的数据块所在的硬盘;
125.若请求删除的数据块所在的硬盘为单磁臂硬盘,则从该单磁臂硬盘删除所述文件名称对应的数据块;
126.若请求删除的数据块所在的硬盘为双磁臂硬盘,则按照所述数据块关系表中数据块切片名称与双磁臂硬盘中的存储单元的标识之间的对应关系,从该双磁臂硬盘中的两个存储单元中,分别删除数据块切片名称对应的数据块切片。
127.为实现根据存储单元将硬盘格式化成通用文件系统,在一些实施例中,所述方法还包括:
128.当收到硬盘格式化请求时,确定请求格式化的硬盘的类型;
129.若请求格式化的硬盘为单磁臂硬盘,则直接对该单磁臂硬盘进行格式化;
130.若请求格式化的硬盘为双磁臂硬盘,则分别对该双磁臂硬盘中的两个存储单元进行格式化。
131.本技术实施例提供的分布式存储集群系统,例如包括:元数据服务器、数据节点和硬盘,具体地:
132.用户文件写入所述分布式存储集群时,用户终端先向所述元数据服务器请求存储资源;
133.所述元数据服务器将用户文件切分成大小相同的数据块,并将数据块下发给数据节点以完成写入;
134.所述元数据服务器负责记录“用户文件名、切分后的数据块名、每个数据块所在的数据节点id”,建立用户文件关系表,从而实现分布式存储集群对用户文件的读写。
135.其中,所述数据节点预先向所述元数据服务器进行注册,注册并上线成功的数据节点被mds分配一个唯一的身份标识(例如dnid),该标识信息在所述分布式存储集群内部唯一,即在分布式存储集群内部,不同的数据节点,对应不同的身份标识;
136.在硬盘接入数据节点成功后,数据节点为每块硬盘分配一个唯一的身份标识(例如fsid),该标识信息在数据节点内部唯一,即在数据节点内部,不同的硬盘对应不同的身份标识;
137.dn在使用硬盘写入数据时,建立“数据块名与硬盘fsid(即硬盘id)的对应关系”的数据块关系表。
138.本技术实施例中,提供了一种数据节点对双磁臂硬盘和单磁臂硬盘混合部署,独立管理双磁臂硬盘的两个存储单元的方法,包括:
139.单磁臂硬盘接入数据节点后,只能在分布式存储集群系统内看到一个存储单元(即一块硬盘)上线。dn将这块硬盘格式化成通用文件系统(例如ext3、ext4、xfs、fat32),并根据硬盘的物理槽位号(例如x)创建这块硬盘的数据挂载点(例如$datax)后,将硬盘挂载上来,也就是说,挂载点包含了该硬盘的物理槽位号;
140.需要说明的是,只有硬盘被挂载在dn中的某个目录之后,dn才能使用该硬盘进行数据存储,其中所述目录就是挂载点。
141.双磁臂硬盘接入数据节点后,能够在分布式存储集群系统内看到两个存储单元(即两块硬盘)上线,并且位于同一个物理槽位(即上述的两个盘符对应一个物理槽位号)。dn分别将这两块硬盘格式化成通用文件系统,并根据硬盘的物理槽位号(例如x,以-1和-2区分双磁臂硬盘的两个存储单元)分别创建这两块硬盘的数据挂载点(例如$datax-1和$datax-2)后,将这两块硬盘分别挂载上来;
142.dn完成硬盘挂载后,将数据块以文件的形式保存在硬盘目录下,并能够采集硬盘的可用容量和负载信息,对硬盘进行管理;
143.在数据节点内部,将位于同一个槽位的两个存储单元识别为双磁臂硬盘,实现对双磁臂硬盘内两个存储单元的独立管理;
144.dn将单磁臂硬盘内一个存储单元的硬盘fsid设置为例如fsidx,双磁臂硬盘内两个存储单元的硬盘fsid设置为例如“fsid-1”和“fsid-2”,单磁臂硬盘的fsidx是一个独立的字符串,而双磁臂硬盘共用一个fsid,仅通过后面的
“‑
1”和
“‑
2”进行区分,从而实现对单磁臂硬盘和双磁臂硬盘的统一管理。
145.参见图5,本技术实施例提供的一种硬盘管理方法中硬盘接入数据节点的流程示意图,在硬盘上线过程中,数据节点需要识别硬盘类型、容量、是否需要格式化、为硬盘分配挂载点和fsid,并将其挂载起来,具体包括:
146.步骤s101、将单磁臂硬盘和双磁臂硬盘接入数据节点;
147.步骤s102、dn主动获取每块硬盘的槽位号,根据槽位号的占用情况判断是单磁臂硬盘还是双磁盘硬盘;其中,独占一个槽位号的存储单元被识别为单磁臂硬盘,也就是一个
盘符对应一个物理槽位号;共享同一槽位号的两个存储单元被识别为双磁臂硬盘,也就是两个盘符对应一个物理槽位号;
148.步骤s103、dn为每一存储单元分配挂载点和fsid;其中,dn为单磁臂硬盘分配一个挂载点和一个fsid,例如“$datax”和“fsidx”;为双磁臂硬盘分配两个挂载点和两个fsid,例如“$datax-1、$datax-2”和“fsid-1、fsid-2”,即双磁臂硬盘中的每个存储单元占用一个挂载点和fsid;
149.步骤s104、dn以存储单元为粒度,完成硬盘挂载,并记录新接入硬盘的挂载点和fsid。
150.通过上述方法完成单磁臂硬盘和双磁臂硬盘上线后,dn就可以使用所述单磁臂硬盘和双磁臂硬盘进行读写业务了。
151.上述dn使用所述双磁臂硬盘进行数据块写入的实现逻辑,包括:
152.用户文件被mds切分成数据块后,会首先经mds下发到dn;
153.如果dn能够获取下发到本dn的数据块的总长度,则按照预设文件长度的一半将该数据块文件切分成两个文件,选择不同的存储单元(后称“硬盘挂载点”)完成文件写入;
154.如果dn暂时无法获取下发到本dn内的数据块的总长度,则先选择一个硬盘挂载点(对应双磁臂硬盘中的一个存储单元)执行写入动作。当写入达到数据块预设长度(例如256mb)的一半时,执行数据块切分动作,选择一个新的硬盘挂载点(对应双磁臂硬盘中的另一个存储单元)执行后续的写入;
155.dn记录每个数据块的切分方法,并建立每一数据块对应的数据块切分表(即对数据块的切分记录),并将数据块切分表存储到对应的硬盘中。数据块切分表,列表字段例如包括:数据块名、数据块切片名、其所在硬盘中存储单元的fsid;其中,数据块切片是切分后的数据块;参见图6,在一些实施例中,例如一名称为blk_xxx_xxx的数据块,被切分成两个数据块切片(即图示出的blk_xxx_xxx_1和blk_xxx_xxx_1),两个数据块切片所在存储单元的fsid(即图示出的fsid-1和fsid-2)。
156.dn将每一硬盘内的各个数据块切分表合并得到数据块关系表(列表字段与数据块切分表相同)内,并存储到dn的系统盘(例如c盘)中,确保dn系统重启或硬盘拔插后,仍能根据数据块关系表,从系统盘内恢复出数据块切分表。参见图7,所述dn系统重启后,dn扫描连接的所有硬盘,获取硬盘内的数据块切分表,并在dn内,根据从各个硬盘获取的数据块切分表,重建dn内的数据块关系表,完成dn初始化;
157.需要说明的是,上述数据块切分动作只发生在双磁臂硬盘中,在单磁臂硬盘的数据块关系表中,数据块切片名的字段值为空。
158.参见图8,本技术实施例提供的一种硬盘管理方法中dn使用单磁臂硬盘和双磁臂硬盘进行数据块写入的流程示意图,包括:
159.步骤s201、当有用户文件需要写入时,用户文件被mds切分成数据块后并下发给dn;
160.步骤s202、dn收到mds下发的数据块文件;
161.步骤s203、dn根据硬盘的可用容量,选择可用容量较大的一块硬盘;
162.步骤s204、判断所选取的硬盘是否为双磁臂硬盘,若是双磁臂硬盘,进行步骤s205;若是单磁臂硬盘,生成该单磁臂硬盘对应的数据块切分表(即对数据块的切分记录),
但表中数据块切片名的字段值为空,进行步骤s207;
163.步骤s205、dn能否获取数据块文件的总长度,若能够获取,将数据块文件平均切分成两块,并行写入双磁臂硬盘的两个硬盘挂载点,进行步骤s206;若暂时无法获取数据块文件的总长度,先向双磁臂硬盘的一个硬盘挂载点内写入该数据块文件的预设长度的数据块,将剩余的数据块写入另一个硬盘挂载点,也就是说,按照预设长度将数据块文件分成两块,其中一块的长度为预设长度,另一块为该数据块文件总长度减去所述预设长度的剩余长度。然后进行步骤s206;
164.步骤s206、dn生成该双磁臂硬盘的数据块切分表(即对数据块的切分记录),并存储到该双磁臂硬盘中,从而当dn初始化时,dn可以通过扫描当前接入的硬盘,获取当前接入的硬盘内的数据块切分表,并根据数据块切分表重建dn内的数据块关系表;
165.步骤s207、dn合并各数据块切分表,得到数据块关系表,并存储该数据块关系表,以及,将该数据块关系表备份到运行dn的操作系统盘中,确保dn系统重启或硬盘拔插后,仍能从系统盘中恢复出数据块切分表。
166.上述dn使用所述双磁臂硬盘进行数据读操作的实现逻辑,包括:
167.mds根据用户文件名和用户文件关系表,查找该用户文件被切分为多少个数据块,以及每个数据块位于哪台dn上,并向dn请求读取相应的数据块内容;
168.dn在收到读数据块请求时,会根据数据块名,查找数据块关系表,找到用户文件被切分的所有数据块所在的硬盘(包括单磁臂硬盘的一个存储单元和双磁臂硬盘的两个存储单元);
169.因数据恢复、硬盘离线或数据损坏导致数据块位置发生变化时,dn主动更新数据块切分表并同步到数据块关系表中;
170.dn根据数据块关系表,获取数据块内容,返回给mds,从而完成用户文件读取;
171.对于双磁臂硬盘,由于可以同时读取一个数据块的两个切分后的文件,从而可以提高双磁臂硬盘的数据读取效率(现有技术是先读取其中的一个数据块切片,再读取另一个数据块切片)。
172.参见图9,本技术实施例提供的一种硬盘管理方法中dn使用单磁臂硬盘和双磁臂硬盘进行读业务的流程示意图,包括:
173.步骤s301、dn收到mds下发的数据块读请求,其中包括请求读取的数据块的数据块名;
174.步骤s302、dn根据数据块名,从数据块关系表中查找该数据块所在的硬盘;其中,对于双磁臂硬盘,当硬盘离线导致数据块切片(即切分后的数据块)损坏或数据恢复导致数据块切片存储在的硬盘发生变化时,dn采用异步方式更新该硬盘对应的数据块切分表,并同步到数据块关系表中;其中,所述异步是指计算机多线程的异步处理,具体指让cpu暂时搁置当前请求的响应,处理下一个请求,当通过轮询或其他方式得到回调通知后,开始运行;
175.步骤s303、判断是否存在多份数据块切片,若存在(说明存储于双磁臂硬盘),则进行步骤s304;若不存在(说明存储于单磁臂硬盘),则进行步骤s305;
176.步骤s304、同时读取两份数据块切片,dn完成读数据块业务;
177.步骤s305、读取数据块,dn完成读数据块业务。
178.在一些实施例中,当用户终端发起进行删除用户文件的请求时,元数据服务器根据该请求查找用户文件关系表,先找到需要删除的用户文件所在的dn,再由dn根据数据块切分表找到被切分后的数据块所在的硬盘,将此数据块切片从硬盘内删除。
179.在一些实施例中,数据节点对硬盘进行格式化管理时,对单磁臂硬盘直接进行整盘格式化,只需要格式化一次;而对双磁臂硬盘,需要对两个存储单元进行格式化,需要格式化两次。
180.为优化数据节点的负载均衡策略,在一些实施例中,数据节点以硬盘挂载点为粒度执行负载均衡策略,实现dn在接入单磁臂硬盘和双磁臂硬盘后的负载均衡。所述负载均衡策略,例如具体包括:
181.双磁臂硬盘的两个存储单元具备独立的文件读写、删除能力,因此可以进行独立的负载均衡管理;
182.数据节点将单磁臂硬盘挂载为一个硬盘挂载点、双磁臂硬盘挂载为两个硬盘挂载点后,支持对每个硬盘挂载点执行独立的可用容量管理和负载信息采集;
183.在写入新数据块文件之前,以及在执行数据块文件切分动作后写入数据块切片之前,都要查询当前可用的硬盘,用于新文件的写入;
184.优先选择可用容量较大、并且读写数据压力较低的存储单元执行写入动作,保证硬盘容量和读写压力在dn内均衡分布,避免单个硬盘容量和负载过高,从而提升了分布式存储集群的整体性能。
185.参见图10,本技术实施例提供的dn使用双磁臂硬盘进行写业务的示意图,在视频监控中,视频采集设备产生了1gb大小的视频流文件,需接入分布式存储集群,存入硬盘中(预设数据块长度为256m),具体步骤包括:
186.步骤s401、mds将1gb大小的视频流文件切分成4个相同大小的数据块,即每个数据块大小为256m;
187.步骤s402、mds将上述4个数据块下发给4台dn,并建立用户文件关系表;
188.步骤s403、每一台dn接收mds下发的256m的数据块文件;
189.步骤s404、dn选择一块硬盘,并识别该硬盘为双磁臂硬盘;
190.步骤s405、若dn无法获取到数据块文件的总长度,则先向双磁臂硬盘的一个硬盘挂载点写入128m(预设数据块长度256m的一半,也可以视为预设长度128m)后,将剩余数据切分出来,写入到另一个硬盘挂载点;此实施例中,预设长度恰好是256m的一半。
191.步骤s406、dn记录上述数据块文件的切分方法,生成数据块切分表(即对数据块的切分记录),并存储到双磁臂硬盘中;
192.步骤s407、dn将上述数据块切分表合并得到数据块关系表,并存储,完成视频流文件写入。
193.参见图11,本技术实施例提供的dn使用双磁臂硬盘进行读业务的示意图,从双磁臂硬盘中读取一个1gb大小的视频流文件(假设被切分成了4个数据块),具体步骤包括:
194.步骤s501、mds根据视频流文件名和用户文件关系表,查找该视频流文件被切分成了4个数据块,并位于4台dn内;
195.步骤s502、mds向上述4台dn请求读取相应的数据块内容;
196.步骤s503、dn收到mds下发的读数据块请求;
197.步骤s504、dn根据数据块名,从数据块关系表中查找该数据块所在的硬盘;
198.步骤s505、dn判断每一数据块存在两份数据块切片,同时读取这两份数据块切片,完成读数据业务。
199.参见图12,本技术实施例提供的一种硬盘管理装置,包括:
200.处理器600,用于读取存储器620中的程序,执行下列过程:
201.获取当前接入数据节点的硬盘的盘符与物理槽位号的对应关系;其中,若当前接入数据节点的硬盘为单磁臂硬盘,所述对应关系包括一个存储单元的盘符与一个物理槽位号的对应关系;若当前接入数据节点的硬盘为双磁臂硬盘,所述对应关系包括两个存储单元的盘符与一个物理槽位号的对应关系;
202.根据所述对应关系,确定当前接入数据节点的硬盘为单磁臂硬盘或双磁臂硬盘;
203.对于双磁臂硬盘中的两个存储单元,分配不同的挂载点。
204.在一些实施例中,所述处理器600还用于读取存储器620中的程序,执行下列过程:
205.当存在写数据任务时,确定所述写数据任务对应的目标硬盘;
206.当所述目标硬盘为目标双磁臂硬盘时,将需要写入所述目标双磁臂硬盘的数据块进行切分,得到两个数据块切片;
207.按照所述目标双磁臂硬盘中的两个存储单元各自的挂载点,向所述目标双磁臂硬盘中的两个存储单元分别写入不同的数据块切片。
208.在一些实施例中,当存在写数据任务时,确定所述写数据任务对应的目标硬盘,包括:
209.确定当前可用硬盘,并且,针对当前可用硬盘,以存储单元为粒度,确定当前可用硬盘中每一存储单元的可用容量;
210.选择可用容量较大的存储单元所在的硬盘为目标硬盘。
211.在一些实施例中,将需要写入所述目标双磁臂硬盘的数据块进行切分,包括:
212.根据需要写入所述目标双磁臂硬盘的数据块的大小,将所述数据块平均分成两个大小一致的数据块切片;
213.或者,按照预设数据块大小,将需要写入所述目标双磁臂硬盘的数据块分成两个数据块切片,其中一个数据块切片的大小为所述预设数据块大小的一半。
214.在一些实施例中,所述方法还包括:
215.存储对所述数据块的切分记录,并且,在将所述数据块的两个所述数据块切片分别成功写入所述目标双磁臂硬盘中的不同存储单元后,将对所述数据块的切分记录发送给所述目标双磁臂硬盘进行记录。
216.在一些实施例中,所述方法还包括:
217.根据所述切分记录更新所述数据节点维护的数据块关系表,其中,所述数据块关系表中包含数据块文件名称、数据块切片名称、硬盘中的存储单元的标识之间的对应关系,其中双磁臂硬盘中的两个存储单元的标识不同;
218.当对所述数据节点初始化完成时,从接入所述数据节点的双磁臂硬盘中获取切分记录,并根据获取的切分记录重新建立数据块关系表。
219.在一些实施例中,所述处理器600还用于读取存储器620中的程序,执行下列过程:
220.当收到读数据请求时,根据请求读取的数据块文件名称以及维护的数据块关系
array,现场可编程门阵列)或cpld(complex programmable logic device,复杂可编程逻辑器件)。
238.本技术实施例提供了一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(personal digital assistant,pda)等。该计算设备可以包括中央处理器(center processing unit,cpu)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(liquid crystal display,lcd)、阴极射线管(cathode ray tube,crt)等。
239.存储器可以包括只读存储器(rom)和随机存取存储器(ram),并向处理器提供存储器中存储的程序指令和数据。在本技术实施例中,存储器可以用于存储本技术实施例提供的任一所述方法的程序。
240.处理器通过调用存储器存储的程序指令,处理器用于按照获得的程序指令执行本技术实施例提供的任一所述方法。
241.本技术实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中的任一所述方法。所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
242.本技术实施例提供了一种计算机可读存储介质,用于储存为上述本技术实施例提供的装置所用的计算机程序指令,其包含用于执行上述本技术实施例提供的任一方法的程序。所述计算机可读存储介质,可以是非暂时性计算机可读介质。
243.所述计算机可读存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nand flash)、固态硬盘(ssd))等。
244.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
245.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流
程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
246.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
247.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
248.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献