1.本发明涉及数据处理技术领域,具体涉及数据分布方法、装置及电子设备。
背景技术:2.数据分布,也可以理解为分布式文件管理系统文件的资源映射到多个设备之间的物理存储上。数据分布常见有两种资源分配方法:资源动态分配以及资源静态分配。
3.资源动态分配,即在一个文件的每个数据块的第一次写操作时,由分布式文件系统的全局元数据管理器来指定这个数据块资源映射到哪一个或哪几个设备上,得到一个映射记录项;之后这个文件的这个数据块后续每次访问就依据这个映射记录来进行。资源静态分配,即当文件创建时,就由分布式文件系统的全局元数据管理器来直接指定所有的数据块的映射规则,也就是说这个文件内的数据分布在创建时就指定好了;后续的读写操作依据这些映射规则来访问指定的设备和设备上的地址。
4.资源动态分配需要保留非常多的存储空间来保存映射记录,而且访问每一个映射记录时也会有较大的查询开销。因此有一部分分布式文件系统尤其是为大文件优化性能的文件系统多数采用映射规则的方式来静态分配文件资源,典型的资源映射规则方式是条带化和复制等。其优点是映射规则占用资源极少,占用的存储空间开销小,文件访问时只需获取一次映射规则,开销小,速度快,对文件读写i/o性能影响小。然而,由于资源静态分配是整个文件修改映射规则,是难以支持文件的存储空间扩展,扩展时不得不重新建立文件的映射规则,必然导致文件内的数据重新分布,扩展的开销非常大。
技术实现要素: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.图1是未采用分区方式的数据分布示意图;
47.图2是根据本发明实施例的数据分布方法的流程图;
48.图3是根据本发明实施例的数据分布示意图;
49.图4是根据本发明实施例的数据分布方法的流程图;
50.图5是根据本发明实施例的数据分布示意图;
51.图6是根据本发明实施例的数据分布方法的流程图;
52.图7a
‑
图7b是根据本发明实施例的数据重分布示意图;
53.图8是根据本发明实施例的数据重分布装置的结构框图;
54.图9是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
55.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
56.图1示出了未采用分区方式的数据分布示意图,如图1所示,一个文件先划分为3个
条带块,每个条带块再以2个镜像块方式存储到不同的存储卷上。若这个文件的大小为300mb,每个条带块大小为1mb,那么文件地址[0
‑
1],[3
‑
4],[6
‑
7]mb等数据访问将访问条带1,文件地址[1
‑
2],[4
‑
5],[7
‑
8]mb等数据访问将访问条带2,文件地址[2
‑
3],[5
‑
6],[8
‑
9]mb等数据访问将访问条带3。当需要对该文件中的数据进行重分布处理时,就需要对整个文件的映射关系进行调整,即就需要对3个条带的映射关系进行调整,从而导致文件扩展的开销较大。
[0057]
基于此,本发明实施例提供了一种数据分布方法,将目标文件先划分为至少一个分区,每个分区创建时设置分区内的资源映射规则,支持按分区来改变分区内映射规则,避免了文件扩展要改变整个文件的数据映射的开销。
[0058]
根据本发明实施例,提供了一种数据分布方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0059]
在本实施例中提供了一种数据分布方法,可用于电子设备,如电脑、手机、平板电脑等,图2是根据本发明实施例的数据分布方法的流程图,如图2所示,该流程包括如下步骤:
[0060]
s11,获取目标文件的当前分区信息以及目标文件的数据写请求。
[0061]
其中,所述数据写请求中携带有访问地址,所述当前分区信息包括当前分区与物理存储的映射关系。
[0062]
当前分区信息包括目标文件当前所划分出的分区的个数、每个分区内的映射关系以及每个分区的起始地址和分区长度。所述的映射关系包括每个分区内条带深度、条带宽度、镜像数量、物理存储的数量等等,具体可以根据实际需求进行相应的设置,在此对其并不做任何限制。其中,所述的映射关系又可以理解为资源映射规则。
[0063]
在对目标文件进行分区时,可以记录每个分区的信息,例如,采用资源分配表记录每个分区的信息,就可以得到目标文件的当前分区信息。当需要对其中某一个分区的信息进行调整时,在调整之后对资源分配表中记录的信息进行调整,以及时更新相关的分区信息。
[0064]
所述的数据写请求可以是电子设备从第三方设备获取到的,也可以是用户通过电子设备发起的,不论数据写请求的来源,只需保证电子设备能够获取到的该数据写请求即可。
[0065]
图3示出了采用多分区的数据分布方式的例子。具体地,一个文件先分配一个[0,300]mb的分区,分区内再以条带和镜像方式分配资源。如这个文件大小被设置为300mb,分区1内每个条带块大小为1mb,那么文件地址[0
‑
1],[3
‑
4],[6
‑
7]mb等数据将访问分区1条带1,文件地址[1
‑
2],[4
‑
5],[7
‑
8]mb等数据将访问分区1内的条带2,文件地址[2
‑
3],[5
‑
6],[8
‑
9]mb等数据将访问分区1内的条带3。
[0066]
s12,基于当前分区信息以及访问地址,确定目标分区的信息。
[0067]
如上文所述,每个分区的信息包括分区的起始地址和长度,那么,利用所述的长度就可以确定各个分区的结束地址。在数据写请求中携带有访问地址,电子设备利用访问地址,查询各个分区,就可以确定访问地址对应的目标分区。
[0068]
其中,所确定出的目标分区有可能是当前分区中的一个分区,也可能是不属于当前分区的任意一个分区。当不属于当前分区的任意一个分区时,电子设备就需要再次对目标文件进行分区处理,新增一个分区,并确定该分区的信息,进而可以确定出目标分区的信息。
[0069]
相应地,不论电子设备所确定出目标分区是否属于当前分区,对于目标分区而言,其仅仅是目标文件的一个分区,而不是所有的分区。因此,所述的数据分布方法可以对目标文件中的分区进行单独的处理,而并不需要对整个目标文件进行处理。
[0070]
关于该步骤具体将在下文中进行详细描述。
[0071]
s13,利用目标分区的信息处理数据写请求。
[0072]
电子设备在确定出目标分区的信息之后,就可以向目标分区中写入相关数据。
[0073]
可选地,在写数据之前,还可以判断目标分区对应的物理存储的容量是否能够满足需求,如不满足需求就需要对目标分区进行单独的扩展,而不影响其他分区的正常使用。
[0074]
进一步地,还可以实时监测各个分区的资源情况,对于资源紧张的分区,可以单独进行扩展,等等。具体均可以根据业务需求进行相应的处理,在此对其并不做任何限定。
[0075]
关于该步骤具体将在下文中进行详细描述。
[0076]
本实施例提供的数据分布方法,通过对目标文件进行分区的方式对数据进行分布,可以实现仅对某个分区单独进行处理,避免了文件扩展要改变整个文件的数据映射的开销,降低了文件扩展的开销。
[0077]
在本实施例中提供了一种数据分布方法,可用于电子设备,如电脑、手机、平板电脑等,图4是根据本发明实施例的数据分布方法的流程图,如图4所示,该流程包括如下步骤:
[0078]
s21,获取目标文件的当前分区信息以及所述目标文件的数据写请求。
[0079]
其中,所述数据写请求中携带有访问地址,所述当前分区信息包括当前分区与物理存储的映射关系。
[0080]
详细请参见图2所示实施例的s11,在此不再赘述。
[0081]
s22,基于当前分区信息以及所述访问地址,确定目标分区的信息。
[0082]
具体地,上述s22可以包括:
[0083]
s221,判断访问地址是否在当前分区信息中。
[0084]
如上文所述,电子设备可以查询资源映射表,确定数据写请求中的访问地址是否在当前分区信息中。当访问地址不在所述当前分区信息中,执行s222;否则,执行s223。
[0085]
s222,创建目标分区并确定目标分区的信息。
[0086]
电子设备可以依据需求在目标文件中划分出目标分区,在目标分区内可以采用条带和镜像等方式分配资源,从而确定目标分区的信息。
[0087]
在本实施例的一些可选实施方式中,上述s222可以包括:
[0088]
(1)获取当前系统资源情况。
[0089]
当前系统资源情况可以是电子设备从各个物理存储上获取到,也可以是电子设备通过监测方式实时获取当前系统资源情况,在此对其并不做任何限定,可以根据实际需求进行相应的设置。
[0090]
(2)基于当前系统资源情况确定目标分区的分区信息,所述分区信息包括所述目
标分区与物理存储的映射关系。
[0091]
图5示出了动态增加一个分区的例子。当数据写请求中的访问地址为400mb时,电子设备需要为目标文件再分配第2个分区(即,所述的目标分区)。如这个文件大小被设置为1gb,第2个分区的大小将设置为[300mb,1g],第2个分区再以条带和镜像方式分配资源。每个分区内的数据分布基于动态分配分区内的资源时的系统配置情况来分配。例如,第1个分区采用了划分3个条带块的方式,而第2个分区采用了划分4个条带块的方式。分区1和分区2内每个条带块大小为1mb,那么文件地址[0
‑
1],[3
‑
4],[6
‑
7]mb等数据将访问分区1内条带1,文件地址[1
‑
2],[4
‑
5],[7
‑
8]mb等数据将访问分区1内的条带2,文件地址[2
‑
3],[5
‑
6],[8
‑
9]mb等数据将访问分区1的条带3;文件地址[300
‑
301],[304
‑
305],[308
‑
309]mb等数据将访问分区2内的条带1,文件地址[301
‑
302],[305
‑
306],[309
‑
310]mb等数据将访问分区2内的条带2,文件地址[302
‑
303],[306
‑
307],[310
‑
311]mb等数据将访问分区2的条带3,文件地址[303
‑
304],[307
‑
308],[311
‑
312]mb等数据将访问分区2的条带4。
[0092]
对于分区2而言,其划分出4个条带块,每个条带块通过镜像映射至相应的存储卷上。即,图5采用分区方式的数据分布,将原来的1个分区扩展为2个分区。
[0093]
具体地,当新的写请求到来后,如果访问地址没有在当前分区中,则先分配一个新的分区,对新的分区利用静态分配规则来分配资源;否则,先在当前分区内找到目标分区,在利用目标分区内的静态分配规则找到对应这个数据块资源映射到哪一个或哪几个设备上。
[0094]
基于当前系统资源情况确定目标分区的分区信息,提高了系统资源的利用率。
[0095]
s223,在当前分区信息中确定目标分区的信息。
[0096]
当电子设备确定出访问地址属于当前分区中的一个分区时,就可以将确定出的分区称之为目标分区,相应地,就可以确定出目标分区的信息。
[0097]
s23,利用目标分区的信息处理数据写请求。
[0098]
详细请参见图2所示实施例的s13的详细描述,在此不再赘述。
[0099]
本实施例提供的数据分布方法,当访问地址不在当前分区信息中时,针对目标文件创建新的分区,即实时创建目标分区,而避免文件创建时对目标文件进行划分,导致系统资源的浪费。
[0100]
在本实施例中提供了一种数据分布方法,可用于电子设备,如电脑、手机、平板电脑等,图6是根据本发明实施例的数据分布方法的流程图,如图6所示,该流程包括如下步骤:
[0101]
s31,获取目标文件的当前分区信息以及所述目标文件的数据写请求。
[0102]
其中,所述数据写请求中携带有访问地址,所述当前分区信息包括当前分区与物理存储的映射关系。
[0103]
详细请参见图4所示实施例的s21,在此不再赘述。
[0104]
s32,基于当前分区信息以及所述访问地址,确定目标分区的信息。
[0105]
详细请参见图4所示实施例的s22,在此不再赘述。
[0106]
s33,利用目标分区的信息处理数据写请求。
[0107]
具体地,上述s33可以包括:
[0108]
s331,获取目标分区的资源信息。
[0109]
电子设备可以实时监测目标分区的资源信息,确定目标分区的资源是否紧张或者目标分区的剩余空间,等等。具体对目标分区的哪些资源信息进行监测,可以根据实际情况进行相应的设置,在此对其并不做任何限定。
[0110]
s332,利用资源信息确定是否需要对目标分区进行数据重分布,以确定处理后的目标分区。
[0111]
电子设备利用获取到的资源信息,确定是否需要对目标分区进行数据重分布。其中,触发数据重分布的条件可以包括3种情况:第一,选择分区内的存储设备资源紧张的分区进行扩展;第二,文件对应的某个设备的资源剩余空间为0;第三,系统的资源使用情况发生改变,尤其是数据读写具有局部性访问特征。当然,还可以包括其他触发条件,具体可以根据实际需求进行相应的设置,在此对其并不做任何限制。
[0112]
在本实施例的一些可选实施方式中,上述s332可以包括:
[0113]
(1)判断资源信息是否满足重分布条件。
[0114]
当所述资源信息满足重分布条件时,执行步骤(2);否则,执行s333。
[0115]
(2)对目标分区进行数据重分布,以确定处理后的目标分区。
[0116]
电子设备对目标分区进行数据重分布时,可以先创建目标分区的源重分布对象以及目标重分布对象,再将源重分布对象中的数据同步拷贝到目标重分布对象中,从而得到处理后的目标分区。
[0117]
在本实施例的一些可选实施方式中,上述s332的步骤(2)可以包括:
[0118]
2.1)基于目标分区创建源重分布对象以及目标重分布对象。
[0119]
所述的源重分布对象与目标重分布对象可以是镜像关系。进一步地,源重分布对象与待扩展的分区内数据对应,目标重分布对象与重分布后的数据对应。其中,图7a与图7b示出了数据重分布的示意图。
[0120]
如图7a所示,当分区1内原有分布上的存储卷资源不足或者新的存储卷资源加入需要分散工作负载到更多的设备上时,需要在分区内触发数据重分布。分区1先创建2个镜像,镜像1是源重分布对象,镜像2是目标重分布对象。
[0121]
2.2)建立源重分布对象与目标分区内数据的映射关系。
[0122]
如图7a所示,电子设备在创建源重分布对象之后,即所述的镜像1;再将镜像1与原来的3个条带的数据对应。
[0123]
2.3)创建目标重分布对象与目标物理存储的映射关系。
[0124]
电子设备在创建目标分布对象之后,即所述的镜像2;再将镜像2与目标物理存储对应,得到目标重分布对象与目标物理存储的映射关系。具体地,目标重分布对象内所包括的条带深度、条带宽度以及物理存储的数量,或者,目标重分布对象的数量均可以根据使用要求进行调整,在此对其并不做任何限定。
[0125]
2.4)将源重分布对象对应的数据重分布至目标重分布对象对应的目标物理存储中。
[0126]
以图7a为例,电子设备将镜像1内的旧分布的存储卷上的数据拷贝到镜像2内的新分布的存储卷上,若源重分布对象对应有3个条带,每个条带对应有100mb地址空间,而目标重分布对象有4个条带,每个条带对应有100mb的地址空间,将镜像1内的旧分布的存储卷上的数据拷贝到镜像2内的新分布的存储卷上时,此时存储卷占用空间也由100mb减少到
75mb,还剩余25m的可写空间,这样不仅可以通过将数据分布更多的设备上,充分利用每个设备的性能,还可以当后续有新的数据写请求时,由于各个存储卷都有剩余存储空间,就可以保证数据写入的成功。即,通过增加条带的方式,使得每个存储卷的占用空间减少,以提高设备的性能。具体地,将镜像1的数据拷贝到镜像2过程:如读镜像1的地址[0,12m]上的数据(存储卷1,3,5每个读了4m),然后写入到镜像2的地址[0,12m](存储卷7,8,9,10,11,12,13,14每个写了3m)。
[0127]
如图7a所示,如果存储卷1
‑
6的存储空间只有100m,那么重分布前,分区1不能再写入新数据了,是资源不足情况。重分布前的存储卷1
‑
6占用了100m,重分布后的存储卷7
‑
14(可用空间是100m)占用了75m,将数据分布到更多的设备上,能充分利用每个设备的性能。
[0128]
或者,还有一种方式是重分布用可用空间更大的存储卷15
‑
21(如200mb)。可以理解的是,本实施方式中分区内重分布过程中,重新建立了新的映射规则,即将条带数量3增加为4,每个条带的地址空间保持不变,在实际应用场景中,可以根据使用要求,同时对条带的数量和地址空间进行修改,并且每个条带的地址空间大小也可以有大小,无需全部设置为同一数值,因此在分区内的重分布过程,可以灵活的重新建立更加合理的映射规则,充分利用每一个设备的性能。
[0129]
2.5)释放源重分布对象,以确定处理后的目标分区。
[0130]
如图7b所示,当同步完成之后,分区1只保留4个条带的新分布,旧的3个条带的数据分布和对应存储卷上的数据都将被删除。
[0131]
通过对目标分区内的数据进行重分布,可以将数据分布到更多的设备上,从而能够充分利用每个设备的性能。
[0132]
s333,基于处理后的目标分区,处理数据写请求。
[0133]
电子设备在对目标分区进行处理之后,再利用处理后的目标分区处理数据写请求。
[0134]
本实施例提供的数据分布方法,由于扩展一个分区所需时间比扩展整个文件短很多,因此,对每个分区单独扩展可以降低文件扩展的开销。需要说明的是,上文虽然是以目标分区为例进行数据重分布的描述的,但是本发明实施例的保护范围并不限于此,在其它分区满足重分布条件时,也可以对其进行数据重分布的处理。
[0135]
在本实施例的一些可选实施方式中,所述的数据分布方法,还可以包括:基于目标分区的信息,更新目标文件的当前分区信息。通过对当前分区信息的实时更新,以保证所存储的当前分区信息的可靠性,避免写数据的失败。
[0136]
作为本实施例的数据分布方法的一个具体应用示例,所述的数据分布方法可以包括:数据写请求到达时先查询数据写请求中的访问地址是否在已有的分区中,如果访问地址不在已有分区中,则分配一个新分区,同时根据当前系统资源配置情况分配新分区内部的数据分布规则,找到对应的存储卷。如果请求访问在已有的分区中,则查询已有分区内部的数据分布规则,依据条带和镜像等规则,找到对应的存储卷,则执行返回资源分配信息,并继续后续的文件操作请求。
[0137]
写请求完成时,如果发生写到相应存储卷的请求失败,返回写请求资源不足,则为这个分区建立源重分布对象和目标重分布对象,使得目标重分布对象有足够的存储卷资源,再重新发送这个写请求,将数据写到目标重分布对象的存储卷上。之后促发一个分区内
数据重分布的过程,将源重分布对象中的数据同步拷贝到目标重分布对象中,最后释放源重分布对象,使用目标重分布对象作为这个分区新的资源映射规则。
[0138]
通过实施本发明实施例中所述的数据分布方法,当数据写请求中的访问地址在当前分区中时,就可以直接利用当前分区处理数据写请求;当数据写请求中的访问地址不在当前分区中时,为目标文件再分配新分区。但这种情况只有在第一次写这个分区内的数据时才发生,因此对文件i/o性能影响比较小。和没有分区的数据分布方式相比,多分区数据分布方式增加了分区个数的倍数级别的存储空间和访问开销,但是扩展时每次只需重分布对应分区的数据,因此利用多分区的空间开销换取了扩展的性能提升。
[0139]
本发明实施例提供的数据分布方法,当扩展时,支持每个分区单独扩展,优先选择分区内的存储设备资源紧张的分区来扩展,新建源重分布对象和目标重分布对象,再将源重分布对象中的数据同步拷贝到目标重分布对象中,最后删除源重分布对象,建立目标重分布对象与目标分区内数据的映射关系。其中,扩展一个分区所需的时间比扩展整个文件短很多。
[0140]
当目标文件对应的某个设备的资源剩余空间为0时,这个文件写操作失败,则仅仅标记文件对应的分区不可写。其他的分区仍然是可读写状态,之后需要对这个文件的这个分区修改映射规则,对分区内的数据进行重分布,文件就能够恢复正常状态,文件不可写的时间大大缩短。
[0141]
当系统的资源使用情况变化后,可以对文件内而特定地址区间的数据重分布,尤其是数据读写具有局部性访问特征,只需改变这个文件的一部分读写访问频繁的分区的映射规则和迁移这部分地址空间内的数据,就可以完成数据重分布。
[0142]
在本实施例中还提供了一种数据分布装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较多地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构建的。
[0143]
本实施例提供一种数据分布装置,如图8所示,包括:
[0144]
获取模块41,用于获取目标文件的当前分区信息以及所述目标文件的数据写请求,所述数据写请求中携带有访问地址,所述当前分区信息包括当前分区与物理存储的映射关系;
[0145]
确定模块42,用于基于所述当前分区信息以及所述访问地址,确定目标分区的信息;
[0146]
处理模块43,用于利用所述目标分区的信息处理所述数据写请求。
[0147]
本实施例提供的数据分布装置,通过对目标文件进行分区的方式对数据进行分布,可以实现仅对某个分区单独进行处理,避免了文件扩展要改变整个文件的数据映射的开销,降低了文件扩展的开销。
[0148]
进一步地,关于上述的获取模块41、确定模块42以及处理模块43所具有的其他功能,对应请参见上文中的方法描述,在此不再赘述。
[0149]
本实施例中的数据分布装置是以功能单元的形式来呈现,这里的单元是指专用集成电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
[0150]
上述各个模块的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
[0151]
本发明实施例还提供一种电子设备,具有上述图8所示的数据分布装置。
[0152]
请参阅图9,图9是本发明可选实施例提供的一种电子设备的结构示意图,如图9所示,该电子设备可以包括:至少一个处理器51,例如cpu(central processing unit,中央处理器),至少一个通信接口53,存储器54,至少一个通信总线52。其中,通信总线52用于实现这些组件之间的连接通信。其中,通信接口53可以包括显示屏(display)、键盘(keyboard),可选通信接口53还可以包括标准的有线接口、无线接口。存储器54可以是高速ram存储器(random access memory,随机存取存储器),也可以是非易失性存储器(non
‑
volatile memory),例如至少一个磁盘存储器。存储器54可选的还可以是至少一个位于远离前述处理器51的存储装置。其中处理器51可以结合图8所描述的装置,存储器54中存储应用程序,且处理器51调用存储器54中存储的程序代码,以用于执行上述任一方法步骤。
[0153]
其中,通信总线52可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。通信总线52可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0154]
其中,存储器54可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random
‑
access memory,缩写:ram);存储器也可以包括非易失性存储器(英文:non
‑
volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:hdd)或固态硬盘(英文:solid
‑
state drive,缩写:ssd);存储器54还可以包括上述种类的存储器的组合。
[0155]
其中,处理器51可以是中央处理器(英文:central processing unit,缩写:cpu),网络处理器(英文:network processor,缩写:np)或者cpu和np的组合。
[0156]
其中,处理器51还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application
‑
specific integrated circuit,缩写:asic),可编程逻辑器件(英文:programmable logic device,缩写:pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:cpld),现场可编程逻辑门阵列(英文:field
‑
programmable gate array,缩写:fpga),通用阵列逻辑(英文:generic array logic,缩写:gal)或其任意组合。
[0157]
可选地,存储器54还用于存储程序指令。处理器51可以调用程序指令,实现如本技术图2、4以及6实施例中所示的数据分布方法。
[0158]
本发明实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的数据分布方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read
‑
only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid
‑
state drive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
[0159]
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。