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

一种数据存储方法、装置、设备及介质与流程

2021-11-29 13:59:00 来源:中国专利 TAG:


1.本公开涉及数据存储技术领域,尤其涉及一种数据存储方法、装置、设备及介质。


背景技术:

2.在当前比较常见的分布式存储系统中,用于存储数据的存储节点通常会有很多,比如,分布式文件存储系统(hadoop distributed file system,hdfs)中可以有多个集群,任一集群可以包含有数百,甚至数千台用于存储数据的存储节点,使得在确定用于存储某一数据的存储节点时,可供选择的存储节点有很多。对于集群来讲,数据分布以及数据如何存储到各个存储节点至关重要,如果数据存储分布不均匀,这将不利于对数据的管理。因此,如何将数据均匀分配到各个存储节点进行存储,以便于数据管理是近几年来人们日益关注的问题。


技术实现要素:

3.本公开提供了一种数据存储方法、装置、设备及介质,用以解决现有存储目标数据的效率低的技术问题。
4.本公开提供了一种数据存储方法,所述方法包括:
5.响应于目标数据的数据存储指令,根据每个存储层级分别对应的利用率以及所允许的预设存储范围,确定用于存储所述目标数据的目标存储层级;其中,任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定,所述叶子存储层级之下不包含有除所述叶子存储层级之外的其它的存储层级;
6.根据所述目标存储层级所包含的各存储节点的存储空间的利用率,确定用于存储所述目标数据的目标存储节点;
7.将所述目标数据存储至所述目标存储节点。
8.在某些可能的实施方式中,所述根据每个存储层级分别对应的利用率以及所允许的预设存储范围,确定用于存储所述目标数据的目标存储层级,包括:
9.a、根据参考存储层级对应的利用率及预设存储范围,确定所述参考存储层级的空闲率;其中,所述参考存储层级为预先配置的根存储层级,或,所述每个存储层级中除所述根存储层级之外的至少一个存储层级;所述根存储层级不从属于除所述根存储层级之外的其它的存储层级;
10.b、确定所述参考存储层级的数量是否大于1;
11.c、若确定所述数量不大于1,则判断所述参考存储层级之下是否包含有除所述参考存储层级之外的其它的存储层级,若包含,执行f,若不包含,执行h;
12.d、若确定所述数量大于1,则确定每个所述参考存储层级分别对应的空闲率中的最大值,获取所述最大值对应的参考存储层级,判断该参考存储层级是否包含有除该参考存储层级之外的其它的存储层级,若包含,执行e,若不包含,执行g;
13.e、根据该参考存储层级之下包含的除该参考存储层级之外的其它的存储层级,对
每个所述参考存储层级进行更新,执行步骤a;
14.f、根据所述参考存储层级之下包含的除所述参考存储层级之外的其它的存储层级,对所述参考存储层级进行更新,执行步骤a;
15.g、将该参考存储层级确定为所述目标存储层级;
16.h、将所述参考存储层级确定为所述目标存储层级。
17.在某些可能的实施方式中,所述方法还包括:
18.若确定所述参考存储层级的空闲率不大于预设的第一阈值,则按照预设的通知方式,将新增存储节点的提醒消息发送至预设管理设备。
19.在某些可能的实施方式中,确定所述叶子存储层级所包含的各存储节点,包括:
20.获取每个所述存储节点的存储空间分别对应的预设最大存储率;
21.将预设最大存储率在所述叶子存储层级对应的预设存储范围内的存储节点,确定为所述叶子存储层级所包含的各存储节点。
22.在某些可能的实施方式中,所述方法还包括:
23.接收所述存储节点在启动读写业务时发送的同步信息;
24.根据所述同步信息中携带的预设最大存储率,对所述存储节点对应的预设最大存储率进行更新。
25.在某些可能的实施方式中,所述存储节点对应的预设最大存储率是根据所述存储节点的读写速率确定的,读写速率越快的存储节点所对应的预设最大存储率越大。
26.在某些可能的实施方式中,所述存储节点包括固态硬盘ssd、混合硬盘hhd以及机械硬盘hdd中的至少一种。
27.在某些可能的实施方式中,所述ssd对应的预设最大存储率高于所述hhd对应的预设最大存储率;
28.所述hhd对应的预设最大存储率高于所述hdd对应的预设最大存储率。
29.在某些可能的实施方式中,所述根据所述目标存储层级所包含的各存储节点的存储空间的利用率,确定用于存储所述目标数据的目标存储节点,包括:
30.根据所述各存储节点分别对应的利用率和预设最大存储率,确定所述各存储节点分别对应的空闲率;
31.将所述各存储节点中,所述空闲率满足预设的存储条件的存储节点确定为所述目标存储节点。
32.在某些可能的实施方式中,确定所述空闲率满足预设的存储条件包括:
33.确定每个所述空闲率中的最大值满足预设的存储条件;和/或
34.确定每个所述空闲率中的任一目标空闲率满足预设的存储条件;其中,所述目标空闲率大于预设的第二阈值。
35.在某些可能的实施方式中,所述方法还包括:
36.若确定所述目标存储节点存在故障,则将所述目标存储节点在预设时间段内标记为不可用,并重新确定用于存储所述目标数据的目标存储节点。
37.本公开提供了一种数据处理装置,所述装置包括:
38.接收单元,用于接收目标数据的数据存储指令;
39.处理单元,用于响应于所述数据存储指令,根据每个存储层级分别对应的利用率
以及所允许的预设存储范围,确定用于存储所述目标数据的目标存储层级;其中,任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定,所述叶子存储层级之下不包含有除所述叶子存储层级之外的其它的存储层级;根据所述目标存储层级所包含的各存储节点的存储空间的利用率,确定用于存储所述目标数据的目标存储节点;
40.存储单元,用于将所述目标数据存储至所述目标存储节点。
41.在某些可能的实施方式中,所述处理单元,具体用于以下步骤:
42.a、根据参考存储层级对应的利用率及预设存储范围,确定所述参考存储层级的空闲率;其中,所述参考存储层级为预先配置的根存储层级,或,所述每个存储层级中除所述根存储层级之外的至少一个存储层级;所述根存储层级不从属于除所述根存储层级之外的其它的存储层级;
43.b、确定所述参考存储层级的数量是否大于1;
44.c、若确定所述数量不大于1,则判断所述参考存储层级之下是否包含有除所述参考存储层级之外的其它的存储层级,若包含,执行f,若不包含,执行h;
45.d、若确定所述数量大于1,则确定每个所述参考存储层级分别对应的空闲率中的最大值,获取所述最大值对应的参考存储层级,判断该参考存储层级是否包含有除该参考存储层级之外的其它的存储层级,若包含,执行e,若不包含,执行g;
46.e、根据该参考存储层级之下包含的除该参考存储层级之外的其它的存储层级,对每个所述参考存储层级进行更新,执行步骤a;
47.f、根据所述参考存储层级之下包含的除所述参考存储层级之外的其它的存储层级,对所述参考存储层级进行更新,执行步骤a;
48.g、将该参考存储层级确定为所述目标存储层级;
49.h、将所述参考存储层级确定为所述目标存储层级。
50.在某些可能的实施方式中,所述装置还包括:提醒单元;
51.所述提醒单元,用于若确定所述参考存储层级的空闲率不大于预设的第一阈值,则按照预设的通知方式,将新增存储节点的提醒消息发送至预设管理设备。
52.在某些可能的实施方式中,所述装置还包括:预处理单元;
53.所述预处理单元,用于获取每个所述存储节点的存储空间分别对应的预设最大存储率;将预设最大存储率在所述叶子存储层级对应的预设存储范围内的存储节点,确定为所述叶子存储层级所包含的各存储节点。
54.在某些可能的实施方式中,所述接收单元,还用于接收所述存储节点在启动读写业务时发送的同步信息;
55.所述装置还包括:更新单元;
56.所述更新单元,用于根据所述同步信息中携带的预设最大存储率,对所述存储节点对应的预设最大存储率进行更新。
57.在某些可能的实施方式中,所述处理单元,具体用于根据所述各存储节点分别对应的利用率和预设最大存储率,确定所述各存储节点分别对应的空闲率;将所述各存储节点中,所述空闲率满足预设的存储条件的存储节点确定为所述目标存储节点。
58.在某些可能的实施方式中,所述处理单元,具体用于通过如下方式确定所述空闲
率满足预设的存储条件:
59.确定每个所述空闲率中的最大值满足预设的存储条件;和/或
60.确定每个所述空闲率中的任一目标空闲率满足预设的存储条件;其中,所述目标空闲率大于预设的第二阈值。
61.在某些可能的实施方式中,所述处理单元,还用于若确定所述目标存储节点存在故障,则将所述目标存储节点在预设时间段内标记为不可用,并重新确定用于存储所述目标数据的目标存储节点。
62.本公开提供了一种电子设备,所述电子设备至少包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序时实现如上述中任一所述数据存储方法的步骤。
63.本公开提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上述中任一所述数据存储方法的步骤。
64.在数据存储过程中,接收到目标数据的数据存储指令后,可以根据每个存储层级分别对应的利用率以及所允许的预设存储范围,确定适合于保存目标数据的目标存储层级。然后根据位于目标存储层级的各存储节点的存储空间的利用率,确定用于存储目标数据的目标存储节点。由于任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定的,根据存储层级对应的利用率,不仅可以监控从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的使用情况,方便对各叶子存储层级下所包含的存储节点的存储空间进行管控,还有利于在数据存储过程中,根据每个存储层级分别对应的利用率以及所允许的预设存储范围,快速且准确地确定出适合保存目标存储层级。基于所确定的目标存储层级以及其中的各个存储节点,能够实现先从所有存储节点中快速确定比较适合存储目标数据的部分存储节点,然后再从位于目标存储层级下的多个存储节点中确定目标存储节点,从而无需从所有存储节点中确定目标存储节点,大大减少了确定目标存储节点所需的工作量,有利于快速找到适合保存目标数据的存储节点,而提高目标数据存储的效率。
附图说明
65.此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
66.图1为本公开实施例提供的一种数据存储过程示意图;
67.图2为本公开实施例提供的一种多叉树的结构示意图;
68.图3为本公开实施例提供的一种网格图的结构示意图;
69.图4为本公开实施例提供的具体的数据存储流程的示意图;
70.图5为本公开实施例提供的一种数据存储装置的结构示意图;
71.图6为本公开实施例提供的一种电子设备结构示意图。
具体实施方式
72.下面将结合附图对本公开作进一步地详细描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
73.本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
74.在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
75.为了方便理解,下面对本公开实施例中涉及的部分概念进行解释:
76.主机名称(hostname),也可称为节点名称:用于标识某一台确定存在的机器,一个机器也可以理解为是一个节点。
77.主机ip(host ip):根据该host ip,可以访问到该host ip所对应的机器。
78.主节点(master):具有管理能力的存储节点,能够对其他存储节点进行管理,主节点会管理数据分配的哪个存储节点上,也会管理存储节点的健康周期等。每个存储节点代表一台机器或一个数据节点(比如,hostname或host ip)。
79.固态硬盘(solid state disk或solid state drive,ssd),又称固态驱动器:是用固态电子存储芯片阵列制成的硬盘。
80.混合硬盘(hybrid hard disk,hhd):是混合硬盘磁性硬盘和闪存集成到一起的一种硬盘。
81.机械硬盘(hard disk drive,hdd):就是传统普通硬盘,主要由盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
82.节点域:在分布式系统中,同一节点域中包含具有相同硬件特点的多个节点。比如,具有相同内核数量的存储节点、具有相同内存大小的存储节点、具有相同的硬盘类型(例如固态硬盘ssd)的存储节点。
83.索引:用于快速查找所需数据的目录,可以根据目录的指示,快速找到所需要的数据。
84.随着数字化的发展,为了满足大量数据的存储,通常采用的方式是将数据保存在用于存储数据的存储节点中。然而,对于数据存储的分布状况以及如何将数据存储到各个存储节点,具有十分重要的意义。如果数据存储分布不均匀,这将不利于对数据的管理。因此,如何将数据均匀分配到各个存储节点进行存储,以便于数据管理是近几年来人们日益关注的问题。
85.相关技术中,当接收到目标数据的数据存储指令之后,一般是先确定所有存储节点的存储空间分别对应的空闲存储容量,即所有存储节点的存储空间中还可以存储数据的存储空间的容量。根据所有存储节点的存储空间分别对应的空闲存储容量,从所述存储节点中,确定空闲存储容量大于预设存储阈值的候选存储节点。然后将空闲存储容量最大的候选存储节点确定为目标存储节点,以通过该目标存储节点保存目标数据。对于该种方法,由于所有存储节点的数量非常的多,在确定所有存储节点的存储空间分别对应的空闲存储容量之后,需要将所有存储节点的存储节点分别对应的空闲存储容量均与预设存储阈值进行比较,确定空闲存储容量大于预设存储阈值的候选存储节点,该过程非常的繁琐,耗费大量的时间和资源,降低确定目标存储节点的效率,进而降低目标数据存储的效率。
86.因此,为了解决现有存储目标数据的效率低的技术问题,本公开提供了一种数据存储方法、装置、设备及介质。在数据存储过程中,接收到目标数据的数据存储指令后,可以
根据每个存储层级分别对应的利用率以及所允许的预设存储范围,确定适合于保存目标数据的目标存储层级。然后根据位于目标存储层级的各存储节点的存储空间的利用率,确定用于存储目标数据的目标存储节点。由于任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定的,根据存储层级对应的利用率,不仅可以监控从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的使用情况,方便对各叶子存储层级下所包含的存储节点的存储空间进行管控,还有利于在数据存储过程中,根据每个存储层级分别对应的利用率以及所允许的预设存储范围,快速且准确地确定出适合保存目标存储层级。基于所确定的目标存储层级以及其中的各个存储节点,能够实现先从所有存储节点中快速确定比较适合存储目标数据的部分存储节点,然后再从位于目标存储层级下的多个存储节点中确定目标存储节点,从而无需从所有存储节点中确定目标存储节点,大大减少了确定目标存储节点所需的工作量,有利于快速找到适合保存目标数据的存储节点,而提高目标数据存储的效率。
87.图1为本公开实施例提供的一种数据存储过程示意图,该过程包括:
88.s101:响应于目标数据的数据存储指令,根据每个存储层级分别对应的利用率以及所允许的预设存储范围,确定用于存储所述目标数据的目标存储层级;其中,任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定,所述叶子存储层级之下不包含有除所述叶子存储层级之外的其它的存储层级。
89.本公开提供的数据存储方法可应用于电子设备,该电子设备可以是服务器,也可以是智能设备,比如,手机、电脑、监控设备等。具体实施过程中,可以根据实际需求进行灵活设置,在此不做具体限定。
90.在一种可能的应用场景中,当某一客户端设备获取到目标数据并且需要存储该目标数据时,可以根据该目标数据,生成数据存储指令并发送至用于数据存储的电子设备。用于数据存储的电子设备接收到该目标数据的数据存储指令后,可以对该数据存储指令进行响应,以确定用于存储目标数据的目标存储节点。
91.为了方便且准确地确定用于存储目标数据的目标存储节点,在本公开中,预先配置多个存储层级分别对应的所允许的预设存储范围,每个预设存储范围是不同的。针对每个存储层级,可以从多个存储层级分别对应的预设存储范围中,确定与该存储层级对应的预设存储范围存在包含关系的预设存储范围,即从所有预设存储范围中,确定包含该存储层级对应的预设存储范围的预设存储范围,和/或,从所有预设存储范围中,确定被该存储层级对应的预设存储范围包含的预设存储范围,将该存在包含关系的预设存储范围所对应的存储层级,确定为与该存储层级存在从属关系的关联存储层级。针对至少一个关联存储层级,若该关联存储层级之下不包含有除该关联存储层级之外的其它的存储层级,则可以将该关联存储层级确定为从属于该存储层级的叶子存储层级;若该关联存储层级不从属于除该关联存储层级之外的其它的存储层级,则可以将该关联存储层级确定为根存储层级。
92.其中,任一存储层级对应的预设存储范围,用于指示从属于该存储层级的叶子存储层级所能包含的各个存储节点的存储空间分别对应的预设最大存储率,任一存储节点的存储空间对应的预设最大存储率是由该存储节点的存储空间的最大存储容量、与该存储节点的存储空间的总容量的比值确定的。该预设存储范围可以由百分比数值表示,也可以由
小数表示。比如,以预设存储范围由百分比数值表示,存储层级x对应的预设存储范围是[60,90),从属于该存储层级x的叶子存储层级只包括存储层级y为例,该预设存储范围[60,90)中的60,用于指示存储层级y所包含的各存储节点的存储空间分别对应的预设最大存储率中,最小的预设最大存储率不小于60,该预设存储范围[60,90)中的90,用于指示存储层级y所包含的各存储节点的存储空间分别对应的预设最大存储率中,最大的预设最大存储率小于90。
[0093]
需要说明的是,该存储层级本身是与该存储层级存在特殊从属关系的存储层级,该存储层级本身从属于该存储层级,该存储层级之下也包含有该存储层级。
[0094]
在一种可能的实施方式中,为了快速且准确地确定与该存储层级存在从属关系的关联存储层级,在本公开中,可以根据每个存储层级分别对应的预设存储范围,利用预设的多叉树算法(比如,二叉树算法),生成该多个预设存储范围对应的多叉树图。对于该多叉树图中的每个预设存储范围分别对应的节点,根据该预设存储范围对应的节点在多叉树图中的位置、以及该预设存储范围对应的节点在该多叉树图中与其它预设存储范围对应的节点之间的连接关系,可以快速且准确地确定多个预设存储范围之间的包含关系,进而根据多个预设存储范围之间的包含关系以及多个预设存储范围分别对应的存储层级,快速且准确地确定多个存储层级之间的从属关系,确定每个存储层级分别对应的关联存储层级。其中,该多叉树图可以理解为是用于快速确定目标存储层级和/或目标存储节点的索引。
[0095]
例如,图2为本公开实施例提供的一种多叉树的结构示意图。图2所示,预设存储范围[10,90)对应存储层级a,预设存储范围[10,45)对应存储层级b,预设存储范围[45,90)对应存储层级c,预设存储范围[10,30)对应存储层级d,预设存储范围[45,60)对应存储层级e,预设存储范围[60,90)对应存储层级f。根据每个预设存储范围,利用二叉树算法,生成图2所示的多叉树。以根据多叉树图,确定存储层级a对应的关联存储层级为例,根据该生成的多叉树,可以看出预设存储范围[10,45)对应的节点以及[45,90)对应的节点,均与预设存储范围[10,90)对应的节点连接。由于预设存储范围[10,45)以及[45,90)均被该预设存储范围[10,90)包含,则预设存储范围[10,45)以及[45,90)分别对应的存储层级b和c,均从属于该预设存储范围[10,90)对应的存储层级a,即存储层级a、b、c均为与存储层级a存在从属关系的关联存储层级。
[0096]
以根据多叉树图,确定存储层级b对应的关联存储层级为例,根据该生成的多叉树,确定预设存储范围[10,90)对应的节点以及[10,30)对应的节点均与该预设存储范围[10,45)对应的节点连接。由于该预设存储范围[10,45)被预设存储范围[10,90)包含,则该预设存储范围[10,45)对应的存储层级b从属于该预设存储范围[10,90)对应的存储层级a。由于该预设存储范围[10,45)包含该预设存储范围[10,30),则该预设存储范围[10,30)对应的存储层级d从属于该预设存储范围[10,45)对应的存储层级b。因此,存储层级a、b和d均为与存储层级b存在从属关系的关联存储层级。
[0097]
以根据多叉树图,确定存储层级e对应的关联存储层级为例,根据该生成的多叉树,确定预设存储范围[45,90)对应的节点与该预设存储范围[45,60)对应的节点连接。由于该预设存储范围[45,90)包含该预设存储范围[45,60),则该预设存储范围[45,60)对应的存储层级e,从属于该预设存储范围[45,90)对应的存储层级c。因此,存储层级c和e均为与存储层级e存在从属关系的关联存储层级。
[0098]
仍以上述为例,根据图2所示的多叉树,确定并不存在除该预设存储范围[10,90)之外的,包含该预设存储范围[10,90)的其它预设存储范围,即该预设存储范围[10,90)不从属于除该预设存储范围[10,90)之外的其它预设存储范围,则可以将该预设存储范围[10,90)对应的存储层级a确定为根存储层级;根据图2所示的多叉树,确定预设存储范围[10,30)之下不包含除该预设存储范围[10,30)之外的其它预设存储范围,则可以将该预设存储范围[10,30)对应的存储层级d确定为叶子存储层级;根据图2所示的多叉树,确定预设存储范围[45,60)之下不包含除该预设存储范围[45,60)之外的其它预设存储范围,则可以将该预设存储范围[45,60)对应的存储层级e确定为叶子存储层级;根据图2所示的多叉树,确定预设存储范围[60,90)之下不包含除该预设存储范围[60,90)之外的其它预设存储范围,则可以将该预设存储范围[60,90)对应的存储层级f确定为叶子存储层级。
[0099]
需要说明的是,为了方便对所有存储节点进行管理,在多个存储层级中,只有叶子存储层级之下才会包含有存储节点。
[0100]
在一种可能的实施方式中,所述存储节点包括固态硬盘ssd、混合硬盘hhd以及机械硬盘hdd中的至少一种。
[0101]
需要说明的是,对于任一存储层级,该存储层级在多个存储层级中,可以从属于除该存储层级之外的其它的存储层级,也可以包含除该存储层级之外的其它的存储层级,还可以从属于除该存储层级之外的其它的存储层级,并包含除该存储层级之外的其它的存储层级。
[0102]
由于可以根据每个存储层级分别对应的预设存储范围,利用预设的多叉树算法(比如,二叉树算法),生成该多个预设存储范围对应的多叉树图。根据该生成的多叉树图,可以快速且准确地确定每个存储层级之间的从属关系,并准确地确定从属于不同存储层级的叶子存储层级。然后根据每个叶子存储层级下所包含的各存储节点的存储空间的利用率以及每个存储层级之间的从属关系,准确地确定每个存储层级分别对应的利用率,进而方便监控每个叶子存储层级下所包含的各存储节点的存储空间的使用情况,并对各存储节点的存储空间进行管理,且有利于后续在数据存储过程中,根据每个存储层级分别对应的利用率以及所允许的预设存储范围,快速且准确地确定适合于保存目标数据的目标存储层级。
[0103]
在一种可能的实施方式中,可以先获取各个存储层级分别对应的预设存储范围。然后针对各存储层级,确定该存储层级所对应的预设存储范围与其他存储层级所对应的预设存储范围之间的包含关系;根据该存储层级所对应的预设存储范围与其他存储层级所对应的预设存储范围之间的包含关系,确定该存储层级所对应的等级。其中,对于任一存储层级而言,如果该存储层级对应的预设存储范围能够被m个除该存储层级之外的其它存储层级的预设存储范围所包含,则m越大说明该存储层级的等级越低,m越小说明该存储层级的等级越高。该m为大于等于0的整数。如果至少两个存储层级分别对应的m相同,即存在至少两个存储层级分别对应的预设存储范围,被相同数量的其它存储层级的预设存储范围所包含,则该至少两个存储层级分别对应的等级是相同的。其中,同一等级的各存储层级分别对应的预设存储范围是互不重叠的。
[0104]
例如,仍以图2为例,预设存储范围[10,90)对应存储层级a,预设存储范围[10,45)对应存储层级b,预设存储范围[45,90)对应存储层级c,预设存储范围[10,30)对应存储层
级d,预设存储范围[45,60)对应存储层级e,预设存储范围[60,90)对应存储层级f。确定只有预设存储范围[10,90)包含该存储层级a对应的预设存储范围[10,90),存储层级a对应的m为0。确定预设存储范围[10,90)以及预设存储范围[10,45)均包含该存储层级b对应的预设存储范围[10,45),该存储层级b对应的m为1。确定预设存储范围[10,90)以及预设存储范围[45,90)均包含该存储层级c对应的预设存储范围[45,90),该存储层级c对应的m为1。确定预设存储范围[10,90)、预设存储范围[10,45)以及预设存储范围[10,30),均包含该存储层级d对应的预设存储范围[10,30),该存储层级d对应的m为2。确定预设存储范围[10,90)、预设存储范围[45,90)以及预设存储范围[45,60),均包含该存储层级e对应的预设存储范围[45,60),该存储层级e对应的m为2。确定预设存储范围[10,90)、预设存储范围[45,90)以及预设存储范围[60,90),均包含该存储层级f对应的预设存储范围[60,90),该存储层级f对应的m为2。根据每个存储层级分别对应的m,确定存储层级a的等级最高,该等级为1;存储层级b和存储层级c的等级均为2,低于存储层级a的等级,且存储层级b对应的预设存储范围[10,45)和存储层级c对应的预设存储范围[45,90)是互不重叠的;存储层级d、存储层级e和存储层级f的等级均为3,低于存储层级b和存储层级c的等级,且存储层级d对应的预设存储范围[10,30)、存储层级e对应的预设存储范围[45,60)和存储层级f对应的预设存储范围[60,90)是互不重叠的。
[0105]
基于上述的实施例确定了每个存储层级分别对应的等级之后,在后续数据存储过程中,可以按照存储层级对应的等级从高到底的顺序,从多个存储层级中确定目标存储层级。在确定目标存储层级的过程中,当根据某一等级下的至少一个存储层级分别对应的利用率以及所允许的预设存储范围,确定从属于该等级的某一存储层级的叶子存储层级更适合存储目标数据时,则不继续确定该等级下除该存储层级之外的其它的存储层级之下所包含的存储层级是否适合存储目标数据。
[0106]
由于根据每个存储层级所从属的存储层级的数量,确定每个存储层级分别对应的等级,以根据每个存储层级分别对应的等级,将多个存储层级进行分层,方便对多个存储层级进行层次化的管理。并且后续在数据存储过程中,当根据某一等级下的至少一个存储层级分别对应的利用率以及所允许的预设存储范围,确定从属于该等级的某一存储层级的叶子存储层级更适合存储目标数据时,则不继续确定该等级下除该存储层级之外的其它的存储层级之下所包含的存储层级是否适合存储目标数据,实现了快速且有条理地确定目标存储层级,避免根据所有存储层级分别对应的利用率以及所允许的预设存储范围,确定目标存储层级所耗费的大量工作量。
[0107]
用于数据存储的电子设备可以接收到每个存储节点分别对应的存储空间的利用率。根据每个存储节点分别对应的存储空间的利用率以及每个叶子存储层级所包含的各个存储节点,可以确定每个叶子存储层级分别对应的利用率。根据每个存储层级之下所包含有的叶子存储层级以及每个叶子存储层级分别对应的利用率,确定每个存储层级分别对应的利用率。可以理解的是,任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定的。其中,用于数据存储的电子设备可以实时接收到每个存储节点分别对应的存储空间的利用率,可以按照预设的周期获取每个存储节点分别对应的存储空间的利用率,也可以是在接收到目标数据的数据存储指令后,获取每个存储节点分别对应的存储空间的利用率。具体实施过程中,可以根据实际需求
进行灵活设置,在此不做具体限定。
[0108]
在一种可能的实施方式中,任一存储层级对应的利用率可以是根据从属于该存储层级的叶子存储层级所包含的各存储节点分别对应的利用率中的最小值确定的。
[0109]
例如,基于上述对图2的介绍,并结合图2所示的各个存储层级以及各存储层级分别对应的预设存储范围为例,确定叶子存储层级分别为图2所示的存储层级d、e和f,存储层级d从属于存储层级b和存储层级a,存储层级e和存储层级f从属于存储层级c和存储层级a。假设存在存储节点1、2、3、4、5、6、7以及8,预先根据每个存储节点分别对应的预设最大存储率,确定存储节点1和2位于存储层级d,存储节点3

5位于存储层级e,存储节点6

8位于存储层级f。假设获取到存储节点1、2、3、4、5、6、7以及8的存储空间的利用率分别为10%、20%、30%、40%、50%、60%、70%和80%,则可以根据存储节点1和存储节点2分别对应的存储空间的利用率中的最小值,确定存储层级d所对应的利用率为10%;根据存储节点3

5分别对应的存储空间的利用率中的最小值,确定存储层级e所对应的利用率为30%;根据存储节点6

8分别对应的存储空间的利用率中的最小值,确定存储层级f所对应的利用率为60%;根据从属于存储层级b的叶子存储层级对应的利用率,即根据存储层级d对应的利用率10%,确定存储层级b所对应的利用率为10%;根据从属于存储层级c的叶子存储层级分别对应的利用率中的最小值,即根据存储层级e对应的利用率30%和存储层级f对应的利用率60%中的最小值,确定存储层级c所对应的利用率为30%;根据从属于存储层级a的叶子存储层级分别对应的利用率中的最小值,即根据存储层级d对应的利用率10%、存储层级e对应的利用率30%和存储层级f对应的利用率60%中的最小值,确定存储层级a所对应的利用率为10%。
[0110]
基于上述的实施例确定了每个存储层级分别对应的利用率之后,即可根据每个存储层级分别对应的利用率以及所允许的预设存储范围,确定用于存储数据的目标存储层级。
[0111]
在一种可能的实施方式中,当用于数据存储的电子设备获取到每个存储层级分别对应的利用率以及所允许的预设存储范围之后,可以对任一参考存储层级执行以下步骤,以确定用于存储所述目标数据的目标存储层级,包括:
[0112]
a、根据参考存储层级对应的利用率及预设存储范围,确定所述参考存储层级的空闲率。其中,所述参考存储层级为预先配置的根存储层级,或,所述每个存储层级中除所述根存储层级之外的至少一个存储层级;所述根存储层级不从属于除所述根存储层级之外的其它的存储层级。
[0113]
在一种可能的实施方式中,用于数据存储的电子设备可以从根存储层级开始,将该根存储层级确定为参考存储层级。然后根据该参考存储层级对应的利用率以及预设存储范围,确定该参考存储层级的空闲率。后续基于该空闲率,进行相应的处理,从预先配置的多个存储层级中,确定除该根存储层级之外的至少一个存储层级为参考存储层级。
[0114]
例如,结合图2所示的每个存储层级以及每个存储层级分别对应的预设存储范围,确定该图2中的存储层级a不从属于除该存储层级之外的其它的存储层级,该存储层级a是根存储层级。可以从该存储层级a开始,将该存储层级a确定为参考存储层级a。然后根据该参考存储层级a对应的利用率以及预设存储范围,确定该参考存储层级a的空闲率。
[0115]
例如,若确定参考存储层级为图2所示的存储层级b和存储层级c,则根据该参考存
储层级b对应的利用率以及预设存储范围,确定该参考存储层级b的空闲率。并根据该参考存储层级c对应的利用率以及预设存储范围,确定该参考存储层级c的空闲率。
[0116]
再例如,若确定参考存储层级为图2所示的存储层级e和存储层级f,则根据该参考存储层级e对应的利用率以及预设存储范围,确定该参考存储层级e的空闲率。并根据该参考存储层级f对应的利用率以及预设存储范围,确定该参考存储层级f的空闲率。
[0117]
其中,可以将该参考存储层级对应的预设存储范围内的任一数值与该参考存储层级对应的利用率之间的差值,确定为该参考存储层级的空闲率。该预设存储范围内的任一数值可以是该预设存储范围内的最大值、最小值、中值等特殊值,也可以是该预设存储范围内的除这些特殊值之外的任一数值。具体实施过程中,可以根据实际需求进行灵活设置,在此不做具体赘述。
[0118]
b、确定所述参考存储层级的数量是否大于1。
[0119]
基于上述的实施例可以确定的是,当前确定的参考存储层级可能是1个,也可能是多个。如果参考存储层级的数量不大于1,则不需要将该参考存储层级对应的空闲率与其它的空闲率进行比较,只能对该参考存储层级进行后续的处理。如果参考存储层级的数量大于1,则需要从确定的多个参考存储层级进行筛选,以方便根据筛选后的参考存储层级,确定用于存储目标数据的目标存储层级。
[0120]
c、若确定所述数量不大于1,则判断所述参考存储层级之下是否包含有除所述参考存储层级之外的其它的存储层级,若包含,执行f,若不包含,执行h。
[0121]
在本公开中,用于存储目标数据的目标存储层级一般为叶子存储层级,即目标存储层级之下是不包含有除该目标存储层级之外的其它的存储层级的。因此,当确定该参考存储层级的数量不大于1后,可以判断该参考存储层级是否可能为叶子存储层级,即确定该参考存储层级之下是否包含有除该参考存储层级之外的其它的存储层级。
[0122]
d、若确定所述数量大于1,则确定每个所述参考存储层级分别对应的空闲率中的最大值,获取所述最大值对应的参考存储层级,判断该参考存储层级是否包含有除该参考存储层级之外的其它的存储层级,若包含,执行e,若不包含,执行g。
[0123]
为了实现合理且均匀地存储数据,在本公开中,通常会选择空闲率较高的存储层级作为用于存储目标数据的目标存储层级,以避免总是将目标数据保存在某一存储节点所导致的数据的存储极度不平衡的情况的发生,进而避免该经常被用于存储数据的存储节点被过热访问,降低该存储节点在存储数据以及读取数据过程中的压力。因此,当基于上述实施例确定了参考存储层级的数量大于1,则从每个参考存储层级分别对应的空闲率中确定最大值,确定该最大值对应的参考存储层级,然后对该参考存储层级进行后续的处理。
[0124]
基于上述相同的理由,当确定了最大值所对应的参考存储层级后,可以判断该参考存储层级是否可能为叶子存储层级,即确定该参考存储层级之下是否包含有除该参考存储层级之外的其它的存储层级。
[0125]
在一种可能的实施方式中,如果每个参考存储层级分别对应的空闲率相同,比如,如图2所示的存储层级b和存储层级c分别对应的空闲率均为50%,则可以从每个参考存储层级中,随机选择一个存储层级,将该存储层级确定为最大值所对应的存储层级。确定该存储层级之下是否包含除该存储层级之外的其它的存储层级。
[0126]
e、根据该参考存储层级之下包含的除该参考存储层级之外的其它的存储层级,对
每个所述参考存储层级进行更新,执行步骤a。
[0127]
在本公开中,如果确定该参考存储层级之下包含有除该参考存储层级之外的其它的存储层级,说明该参考存储层级不是叶子存储层级,该参考存储层级不是用于存储目标数据的目标存储层级,需要获取该参考存储层级之下包含的除该参考存储层级之外的其它的存储层级,根据每个其它的存储层级,对当前确定的参考存储层级进行更新,然后执行步骤a。
[0128]
例如,以参考存储层级包括图2所示的存储层级b和存储层级c为例,假设基于上述的实施例确定该参考存储层级b对应的空闲率为60%,参考存储层级c对应的空闲率为50%,确定该参考存储层级的总数量为2,该数量2大于1,则确定参考存储层级b和参考存储层级c分别对应的空闲率中的最大值为60%,获取该60%的空闲率所对应的参考存储层级为参考存储层级b。确定该参考存储层级b之下是否包含有除该参考存储层级b之外的其它的存储层级。如图2所示,该参考存储层级b之下包含有除该参考存储层级b之外的其它的存储层级,该其它的存储层级为存储层级d。然后根据该存储层级d,对参考存储层级b和参考存储层级c进行更新,执行步骤a。
[0129]
f、根据所述参考存储层级之下包含的除所述参考存储层级之外的其它的存储层级,对所述参考存储层级进行更新,执行步骤a。
[0130]
同样的,如果确定该参考存储层级之下包含有除该参考存储层级之外的其它的存储层级,说明该参考存储层级不是叶子存储层级,该参考存储层级不是用于存储目标数据的目标存储层级,需要获取该参考存储层级之下包含的除该存储层级之外的其它的存储层级,根据每个其它的存储层级,对当前确定的参考存储层级进行更新,然后执行步骤a。
[0131]
例如,以参考存储层级为图2所示的存储层级a为例,确定该参考存储层级a的空闲率之后,确定该参考存储层级a的数量为1,该数量不大于1,则确定该参考存储层级a之下是否包含有除该参考存储层级a之外的其它的存储层级。如图2所示,该参考存储层级a之下包含有除该参考存储层级a之外的其它的存储层级,分别为存储层级b和c。然后根据存储层级b和c,对该参考存储层级a进行更新,执行步骤a。
[0132]
g、将该参考存储层级确定为所述目标存储层级。
[0133]
在本公开中,如果确定该参考存储层级之下不包含有除该参考存储层级之外的其它的存储层级,说明该参考存储层级是叶子存储层级,则确定该参考存储层级是用于存储目标数据的目标存储层级。
[0134]
例如,以参考存储层级包括图2所示的存储层级e和存储层级f为例,假设基于上述的实施例确定该参考存储层级e对应的空闲率为50%,参考存储层级f对应的空闲率为40%,确定该参考存储层级的总数量为2,该数量2大于1,则确定参考存储层级e和参考存储层级f分别对应的空闲率中的最大值为50%,获取该50%的空闲率所对应的参考存储层级为参考存储层级e。确定该参考存储层级e之下是否包含有除该参考存储层级e之外的其它的存储层级。如图2所示,该参考存储层级e之下不包含有除该参考存储层级e之外的其它的存储层级。将该参考存储层级e确定为目标存储层级。
[0135]
h、将所述参考存储层级确定为所述目标存储层级。
[0136]
同样的,如果确定该参考存储层级之下不包含有除该参考存储层级之外的其它的存储层级,说明该参考存储层级是叶子存储层级,则确定该参考存储层级是用于存储目标
数据的目标存储层级。
[0137]
例如,以参考存储层级为图2所示的存储层级d为例,确定该参考存储层级d的空闲率之后,确定该参考存储层级d的数量为1,该数量不大于1,则确定该参考存储层级d之下是否包含有除该参考存储层级d之外的其它的存储层级。如图2所示,该参考存储层级d之下不包含有除该参考存储层级d之外的其它的存储层级。将该参考存储层级d确定为目标存储层级。
[0138]
在一种可能的实施方式中,在数据存储的过程中,可能出现各存储节点的存储空间的利用率均非常的高,导致各存储节点不适合再继续保存数据。基于此,预设有第一阈值。其中,该第一阈值用于指示参考存储层级的空闲率所能够达到的最低阈值。当基于上述实施例获取到参考存储层级的空闲率之后,可以将该参考存储层级的空闲率与预设的第一阈值进行比较。若确定该参考存储层级的空闲率大于预设的第一阈值,说明该参考存储层级的存储空间还可以继续存储数据,则可以继续根据该参考存储层级,确定用于存储目标数据的目标存储层级。若确定该参考存储层级的空闲率不大于预设的第一阈值,说明该参考存储层级的存储空间不可以继续存储数据,则可以按照预设的通知方式,将新增存储节点的提醒消息发送至预设管理设备,以通知相关的工作人员对已有的存储节点的存储空间进行扩容,或者是,增加新的存储节点用于存储数据。
[0139]
需要说明的是,在设置第一阈值时,可以根据场景的不同,设置不同的值。如果希望尽可能利用存储节点的存储空间,则可以将该第一阈值设置的低一些。如果希望减少存储节点存储数据的压力,则可以将该第一阈值设置的高一些。具体实施过程中,可以根据实际需求进行灵活设置,在此不做具体限定。
[0140]
s102:根据所述目标存储层级所包含的各存储节点的存储空间的利用率,确定用于存储所述目标数据的目标存储节点。
[0141]
当基于上述实施例确定了目标存储层级之后,可以从该目标存储层级所包含的各存储节点中,快速且准确地确定用于存储目标数据的目标存储节点,无需根据所有存储节点的存储空间分别对应的利用率,确定用于存储目标数据的目标存储节点,节省了确定目标存储节点所耗费的资源,提高了确定目标存储节点的效率。
[0142]
在本公开中,为了方便且准确地确定用于存储目标数据的目标存储节点,预先配置了每个存储节点的存储空间分别对应的预设最大存储率,例如,存储节点2对应的预设最大存储率为95%。其中,任一存储节点的存储空间对应的预设最大存储率的含义已在上述实施例中进行说明,在此不做赘述。对于每个存储节点,在获取到了该存储节点的存储空间对应的预设最大存储率之后,该存储节点可以根据该存储节点对应的预设最大存储率,生成相应的文件,并将该文件持久化到本地硬盘中,以便于该存储节点或用于数据存储的电子设备重启后,可以通过该文件,确定该存储节点的存储空间对应的预设最大存储率。
[0143]
例如,某一存储节点在提供服务时,会先重启服务,重启后可以先读取保存有该存储节点对应的预设最大存储率的文件,通过解析该文件,确定该存储节点的存储空间对应的预设最大存储率,即该存储节点的存储空间对应的最多可以存储数据的容量。该存储节点获取到该预设最大存储率后,还会将携带有该预设最大存储率的通知消息发送至用于数据存储的电子设备(比如,主节点),以便于用于数据存储的电子设备可以根据每个存储节点分别对应的利用率以及预设最大存储率,确定用于存储目标数据的目标存储节点。
[0144]
相关技术中,由于不同类型的存储节点的读写速率是不同的,但不同类型的存储节点的存储空间分别对应的预设最大存储率却一般是相同的,导致在数据存储过程中,如果只是根据每个存储节点所剩余的存储空间的大小,确定用于存储目标数据的目标存储节点的话,存储在读写速率快的存储节点的数据被读取的速度比较快,存储在读写速率慢的存储节点的数据被读取的速度比较慢,影响数据的读取效率,不便于数据管理。因此,为了方便数据管理,在配置每个存储节点的存储空间分别对应的预设最大存储率时,可以考虑每个存储节点的读写速率,即所述存储节点对应的预设最大存储率是根据所述存储节点的读写速率确定的,读写速率越快的存储节点所对应的预设最大存储率越大。
[0145]
例如,一个集群中包含有3种类型的存储节点,存储节点分别为ssd、hhd和hdd。每种存储节点的读写速率是不一样的,一般ssd的读写速率要快于hhd的读写速率,而hhd的读写速率要快于hdd的读写速率。因此,在设置每个存储节点的存储空间分别对应的预设最大存储率时,可以设置ssd对应的预设最大存储率,在所有类型的存储节点分别对应的预设最大存储率中最大(比如80%),设置hhd对应的预设最大存储率小于ssd对应的预设最大存储率(比如40%),设置hdd对应的预设最大存储率小于hhd对应的预设最大存储率(比如10%)。
[0146]
用于数据存储的电子设备在获取到存储节点发送的携带有预设最大存储率的通知消息后,可以根据每个存储节点的存储空间分别对应的预设最大存储率以及每个叶子存储层级分别对应的预设存储范围,确定每个叶子存储层级下所包含的各个存储节点。其中,由于不同叶子存储层级分别对应的预设存储范围是不同的,使得根据每个存储节点的存储空间分别对应的预设最大存储率以及每个叶子存储层级分别对应的预设存储范围,确定每个叶子存储层级下所包含的各个存储节点也是不同的。
[0147]
例如,预设最大存储率以及预设存储范围均是由百分比值表示的。假设存在存储节点1、2、3、4、5、6、7以及8,存储节点1、2、3、4、5、6、7以及8的存储空间分别对应的预设最大存储率分别为10%、20%、25%、45%、50%、60%、70%和80%,叶子存储层级分别包括存储层级d、存储层级e以及存储层级f,存储层级d对应的预设存储范围为[10,30),存储层级e对应的预设存储范围为[45,60),以及存储层级f对应的预设存储范围为[60,90)。确定存储节点1的存储空间对应的预设最大存储率10%、存储节点2的存储空间对应的预设最大存储率20%、以及存储节点3的存储空间对应的预设最大存储率30%,均位于存储层级d对应的预设存储范围[10,30)内,确定该存储层级d所包含的各存储节点分别为存储节点1、2、3。确定存储节点4的存储空间对应的预设最大存储率45%、以及存储节点5的存储空间对应的预设最大存储率50%,均位于存储层级e对应的预设存储范围[45,60)内,确定该存储层级e所包含的各存储节点分别为存储节点4和5。确定存储节点6的存储空间对应的预设最大存储率60%、存储节点7的存储空间对应的预设最大存储率70%、以及存储节点8的存储空间对应的预设最大存储率80%,均位于存储层级f对应的预设存储范围[60,90)内,确定该存储层级f所包含的各存储节点分别为存储节点6、7、8。
[0148]
在一种可能的实施方式中,如果每个存储节点分别对应的预设最大存储率,是根据存储节点的读写速率确定的,使得根据每个存储节点的存储空间分别对应的预设最大存储率以及每个叶子存储层级分别对应的预设存储范围,确定每个叶子存储层级下所包含的各个存储节点时,可能存在至少一个叶子存储层级下只包含一种类型的存储节点,从而可
以实现按照存储节点的类型,对每个存储节点存储数据的情况进行分层次的管理,能更加规范地管理存储节点及待存储的数据,提升对不同类型的存储节点的有效管控和使用,实现针对性的对一些类型的存储节点进行保护,以避免该类型的存储节点遭受较热(高频次)访问。
[0149]
比如,ssd的读写速率要快于hhd的读写速率,而hhd的读写速率要快于hdd的读写速率,根据不同类型的存储节点的读写速率,设置的ssd对应的预设最大存储率在所有类型的存储节点分别对应的预设最大存储率中最大,设置的hhd对应的预设最大存储率小于ssd对应的预设最大存储率,设置的hdd对应的预设最大存储率小于hhd对应的预设最大存储率。由于ssd、hhd、hdd分别对应的预设最大存储率不同,使得根据各存储节点分别对应的预设最大存储率以及各叶子存储层级分别对应的预设存储范围,确定各叶子存储层级分别包含的存储节点时,可能出现某一叶子存储层级所包含的存储节点均为ssd,另一叶子存储层级所包含的存储节点均为hhd,还有一个叶子存储层级所包含的存储节点均为hdd,即存在至少一个叶子存储层级下只包含一种类型的存储节点。
[0150]
在一种可能的实施方式中,确定所述叶子存储层级所包含的各存储节点,包括:
[0151]
获取每个所述存储节点的存储空间分别对应的预设最大存储率;
[0152]
将预设最大存储率在所述叶子存储层级对应的预设存储范围内的存储节点,确定为所述叶子存储层级所包含的各存储节点。
[0153]
针对每个叶子存储层级,在确定该叶子存储层级所包含的各存储节点时,可以确定每个存储节点的存储空间分别对应的预设最大存储率,是否位于该叶子存储层级所对应的预设存储范围内。将预设最大存储率在该叶子存储层级对应的预设存储范围内的存储节点,确定为该叶子存储层级所包含的各存储节点。由于不同叶子存储层级所包含的各存储节点是不同的,当确定某一存储节点归属于某一叶子存储层级后,该存储节点一定不再归属于除该叶子存储层级之外的其它的叶子存储层级。因此,当基于上述实施例确定了某一存储节点归属于某一叶子存储层级之后,则可以不再确定该存储节点是否归属于除该叶子存储层级之外的其它的叶子存储层级,以减少确定每个叶子存储层级所包含的各存储节点所耗费的资源。
[0154]
在一种可能的实施方式中,可能存在修改某一存储节点的存储空间对应的预设最大存储率的情况,且在每次修改了该存储节点的存储空间对应的预设最大存储率之后,该存储节点一般会重启读写业务,并重新读取保存有预设最大存储率的文件,以获取修改后的预设最大存储率。存储节点读取到修改后的预设最大存储率后,可以根据该修改后的预设最大存储率,生成启动读写业务的同步信息并将该同步信息发送至用于数据存储的电子设备。用于数据存储的电子设备接收到存储节点在启动读写业务时发送的同步信息后,可以根据该同步信息中携带的预设最大存储率,对保存的该存储节点对应的预设最大存储率进行更新,提高确定的目标存储节点的准确性,避免了由于不及时更新每个存储节点的存储空间分别对应的预设最大存储率,所导致得无法准确地确定用于存储目标数据的目标存储节点的问题。
[0155]
在一种可能的实施方式中,用于数据存储的电子设备在获取到了每个存储节点的存储空间分别对应的预设最大存储率后,可以采用网格的方式,将预设最大存储率相同的各个存储节点划分到同一网格中,以实现对相同预设最大存储率的各个存储节点进行统一
的管理,并有利于后续确定每个叶子存储层级所包含的各个存储节点,并方便对每个存储节点进行管理。图3为本公开实施例提供的一种网格图的结构示意图,如图3所示,一个虚线框表示一个网格,根据每个存储节点的存储空间分别对应的预设最大存储率,确定预设最大存储率相同的至少一个存储节点划分到同一网格中。如图3所示的,预设最大存储率均为80%的4个存储节点,均被划分到对应预设最大存储率为80%的网格中;预设最大存储率均为40%的4个存储节点,均被划分到对应预设最大存储率为40%的网格中;预设最大存储率均为60%的4个存储节点,均被划分到对应预设最大存储率为60%的网格中;预设最大存储率均为10%的4个存储节点,均被划分到对应预设最大存储率为10%的网格中。
[0156]
在一种可能的实施方式中,由于在设置每个存储节点的存储空间分别对应的预设最大存储率时,还会考虑存储节点的读写速率,使得后续采用网格的方式,可以将预设最大存储率相同且读写速率相同的各个存储节点划分到同一网格中。可以理解的是,可以将预设最大存储率相同且类型相同的各个存储节点划分到同一网格中。
[0157]
仍以上述图3为例,预先配置了4个类型为ssd的存储节点的存储空间分别对应的预设最大存储率均为80%,该4个类型为ssd归属于同一网格中;预先还配置了另外的4个类型为ssd的存储节点的存储空间分别对应的预设最大存储率均为60%,该4个类型为ssd归属于同一网格中;预先配置了4个类型为hdd的存储节点的存储空间分别对应的预设最大存储率均为40%,该4个类型为hdd归属于同一网格中;预先配置了4个类型为hhd的存储节点的存储空间分别对应的预设最大存储率均为10%,该4个类型为hhd归属于同一网格中。
[0158]
当基于上述的实施例确定了目标存储层级之后,可以获取该目标存储层级所包含的各存储节点的存储空间的利用率。然后根据所述各存储节点分别对应的利用率和预设最大存储率,确定所述各存储节点分别对应的空闲率;将所述各存储节点中,所述空闲率满足预设的存储条件的存储节点确定为所述目标存储节点。
[0159]
在一种可能的实施方式中,确定所述空闲率满足预设的存储条件包括:
[0160]
确定每个所述空闲率中的最大值满足预设的存储条件;和/或
[0161]
确定每个所述空闲率中的任一目标空闲率满足预设的存储条件;其中,所述目标空闲率大于预设的第二阈值。
[0162]
为了准确地确定目标存储节点,预先对存储节点的空闲率设置有存储条件,该存储条件可以为目标存储层级所包含的各个存储节点分别对应的空闲率中的最大值,或,目标存储层级所包含的各个存储节点分别对应的空闲率中的任一目标空闲率,该目标空闲率为多个空闲率中大于预设的第二阈值的空闲率。当基于上述的实施例获取到目标存储层级所包含的存储节点对应的空闲率之后,可以确定该存储节点对应的空闲率是否满足预设的存储条件。如果该存储节点对应的空闲率满足预设的存储条件,则确定该存储节点为用于存储目标数据的目标存储节点;如果该存储节点对应的空闲率不满足预设的存储条件,则确定该存储节点不为用于存储目标数据的目标存储节点。
[0163]
作为一种可能的实施方式,若预设的存储条件为目标存储层级所包含的各个存储节点分别对应的空闲率中的最大值,则获取到目标存储层级所包含的各个存储节点分别对应的空闲率之后,获取每个空闲率中的最大值,并确定该最大值满足预设的存储条件,将最大值所对应的存储节点确定为目标存储节点。
[0164]
作为另一种可能的实施方式,若预设的存储条件为存储节点对应的空闲率大于预
设的第二阈值。当基于上述的实施例获取到目标存储层级所包含的存储节点对应的空闲率之后,可以确定该存储节点对应的空闲率是否大于预设的第二阈值。如果确定该存储节点对应的空闲率大于预设的第二阈值,则确定该空闲率为目标空闲率且满足预设的存储条件,将该目标空闲率对应的存储节点确定为目标存储节点。如果确定该存储节点对应的空闲率不大于预设的第二阈值,则确定该空闲率不满足预设的存储条件,该空闲率不为目标空闲率。
[0165]
作为再一种可能的实施方式,若预设的存储条件为目标存储层级所包含的各个存储节点分别对应的空闲率中的最大值大于预设的第二阈值。获取到目标存储层级所包含的各个存储节点分别对应的空闲率之后,获取每个空闲率中的最大值,确定该最大值是否大于预设的第二阈值。如果确定该最大值大于预设的第二阈值,则确定该最大值满足预设的存储条件,且该最大值为目标空闲率,将该最大值对应的存储节点确定为目标存储节点。如果确定该最大值不大于预设的第二阈值,则确定该最大值不满足预设的存储条件,且该最大值不为目标空闲率。
[0166]
需要说明的是,具体选择哪种存储条件,可以根据实际需求进行灵活设置,在此不做具体限定。
[0167]
s103:将所述目标数据存储至所述目标存储节点。
[0168]
当基于上述的实施例确定了目标存储节点后,即可将目标数据发送至目标存储节点,以使目标存储节点存储该目标数据。
[0169]
在一种可能的实施方式中,用于数据存储的电子设备也可以基于上述的实施例确定了目标存储节点后,可以将目标存储节点的信息发送至客户端设备。客户端设备接收到目标存储节点的信息后,可以根据该目标存储节点的信息访问到目标存储节点,并将目标数据发送至目标存储节点,以使目标存储节点保存该目标数据。
[0170]
在一种可能的实施方式中,在确定了目标存储节点后,该目标存储节点可能出现宕机等故障,从而无法通过目标存储节点保存目标数据。为了及时保存目标数据并避免再次为目标数据分配原有的目标存储节点,若确定所述目标存储节点存在故障,则将所述目标存储节点在预设时间段内标记为不可用,以使在预设时间段内不再考虑使用该目标存储节点用于存储目标数据,并重新确定用于存储所述目标数据的目标存储节点。
[0171]
在本公开中,任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定的,根据存储层级对应的利用率,不仅可以监控从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的使用情况,方便对各叶子存储层级下所包含的存储节点的存储空间进行管控,还有利于在数据存储过程中,根据每个存储层级分别对应的利用率以及所允许的预设存储范围,快速且准确地确定出适合保存目标存储层级。基于所确定的目标存储层级以及其中的各个存储节点,能够实现先从所有存储节点中快速确定比较适合存储目标数据的部分存储节点,然后再从位于目标存储层级下的多个存储节点中确定目标存储节点,从而无需从所有存储节点中确定目标存储节点,大大减少了确定目标存储节点所需的工作量,有利于快速找到适合保存目标数据的存储节点,而提高目标数据存储的效率。
[0172]
下面通过具体的实施例对本技术提供的数据存储方法进行说明,图4为本公开实施例提供的具体的数据存储流程的示意图,该流程包括:
[0173]
s401:接收目标数据的数据存储指令。
[0174]
s402:根据参考存储层级对应的利用率及预设存储范围,确定该参考存储层级的空闲率。
[0175]
其中,该参考存储层级为预先配置的根存储层级,或,每个存储层级中除根存储层级之外的至少一个存储层级;该根存储层级不从属于除该根存储层级之外的其它的存储层级;任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定,该叶子存储层级之下不包含有除该叶子存储层级之外的其它的存储层级。
[0176]
s403:若确定该参考存储层级的空闲率不大于预设的第一阈值,则按照预设的通知方式,将新增存储节点的提醒消息发送至预设管理设备。
[0177]
s404:确定该参考存储层级的数量是否大于1,若是,执行s405,否则,执行s406。
[0178]
s405:判断该参考存储层级之下是否包含有除该参考存储层级之外的其它的存储层级,若包含,执行s407,若不包含,执行s408。
[0179]
s406:确定每个参考存储层级分别对应的空闲率中的最大值,获取所述最大值对应的参考存储层级,判断该参考存储层级是否包含有除该参考存储层级之外的其它的存储层级,若包含,执行s407,否则,执行s408。
[0180]
s407:根据该参考存储层级之下包含的除该参考存储层级之外的其它的存储层级,对每个参考存储层级进行更新,执行s402。
[0181]
s408:将该参考存储层级确定为目标存储层级。
[0182]
在一种可能的实施方式中,用于数据存储的电子设备可以根据预先配置的每个存储层级分别对应的预设存储范围,利用多叉树算法,生成多叉树图。后续在需要进行目标数据的存储时,通过查找该多叉树图,可以更加高效地定位到目标存储层级。如图2所示,从存储层级a到从属于该存储层级a的叶子存储层级的路径上进行逐层选择,先获取与该存储层级a连接的存储层级b和存储层级c分别对应的空闲率,确定空闲率最大值所对应的存储层级为存储层级b。然后获取该存储层级b之下包含的除该存储层级b之外的其它的存储层级为存储层级d,直接快速确定存储层级d为目标存储层级。
[0183]
s409:根据目标存储层级所包含的各存储节点分别对应的利用率和预设最大存储率,确定目标存储层级所包含的各存储节点分别对应的空闲率。
[0184]
其中,该存储节点包括固态硬盘ssd、混合硬盘hhd以及机械硬盘hdd中的至少一种。
[0185]
在设置每个存储节点分别对应的预设最大存储率时,该存储节点对应的预设最大存储率是根据该存储节点的读写速率确定的,读写速率越快的存储节点所对应的预设最大存储率越大。
[0186]
例如,ssd对应的预设最大存储率大于hhd对应的预设最大存储率,而hhd对应的预设最大存储率大于hdd对应的预设最大存储率。
[0187]
在一种可能的实施方式中,若接收某一存储节点在启动读写业务时发送的同步信息,则根据该同步信息中携带的预设最大存储率,对该存储节点对应的预设最大存储率进行更新。
[0188]
在一种可能的实施方式中,确定叶子存储层级所包含的各个存储节点的过程包
括:
[0189]
获取每个存储节点的存储空间分别对应的预设最大存储率;
[0190]
将预设最大存储率在该叶子存储层级对应的预设存储范围内的存储节点,确定为该叶子存储层级所包含的各存储节点。
[0191]
s410:将各存储节点中,空闲率满足预设的存储条件的存储节点确定为目标存储节点。
[0192]
其中,确定空闲率满足预设的存储条件包括:
[0193]
确定每个空闲率中的最大值满足预设的存储条件;和/或
[0194]
确定每个空闲率中的任一目标空闲率满足预设的存储条件;其中,该目标空闲率大于预设的第二阈值。
[0195]
s411:确定目标存储节点是否存在故障,若存在,执行s412,若不存在,执行s413。
[0196]
s412:将该目标存储节点在预设时间段内标记为不可用,并重新确定用于存储该目标数据的目标存储节点。
[0197]
s413:将目标数据存储至该目标存储节点。
[0198]
在数据存储过程中,通过上述的步骤,可以将数据均衡的分散存储在各个存储节点中,不会过于频繁采用某一存储节点作为目标存储节点,进而导致频繁访问该存储节点,造成对该存储节点的过热访问,有效保证了各个存储节点的稳定性。
[0199]
前文介绍了本公开实施例的方法,下文中将介绍本公开实施例中的装置。方法、装置是基于同一技术构思的,由于方法、装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
[0200]
本公开实施例提供了一种数据存储装置,图5为本公开实施例提供的一种数据存储装置的结构示意图,该装置包括:
[0201]
接收单元51,用于接收目标数据的数据存储指令;
[0202]
处理单元52,用于响应于所述数据存储指令,根据每个存储层级分别对应的利用率以及所允许的预设存储范围,确定用于存储所述目标数据的目标存储层级;其中,任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定,所述叶子存储层级之下不包含有除所述叶子存储层级之外的其它的存储层级;根据所述目标存储层级所包含的各存储节点的存储空间的利用率,确定用于存储所述目标数据的目标存储节点;
[0203]
存储单元53,用于将所述目标数据存储至所述目标存储节点。
[0204]
在某些可能的实施方式中,所述处理单元52,具体用于以下步骤:
[0205]
a、根据参考存储层级对应的利用率及预设存储范围,确定所述参考存储层级的空闲率;其中,所述参考存储层级为预先配置的根存储层级,或,所述每个存储层级中除所述根存储层级之外的至少一个存储层级;所述根存储层级不从属于除所述根存储层级之外的其它的存储层级;
[0206]
b、确定所述参考存储层级的数量是否大于1;
[0207]
c、若确定所述数量不大于1,则判断所述参考存储层级之下是否包含有除所述参考存储层级之外的其它的存储层级,若包含,执行f,若不包含,执行h;
[0208]
d、若确定所述数量大于1,则确定每个所述参考存储层级分别对应的空闲率中的
最大值,获取所述最大值对应的参考存储层级,判断该参考存储层级是否包含有除该参考存储层级之外的其它的存储层级,若包含,执行e,若不包含,执行g;
[0209]
e、根据该参考存储层级之下包含的除该参考存储层级之外的其它的存储层级,对每个所述参考存储层级进行更新,执行步骤a;
[0210]
f、根据所述参考存储层级之下包含的除所述参考存储层级之外的其它的存储层级,对所述参考存储层级进行更新,执行步骤a;
[0211]
g、将该参考存储层级确定为所述目标存储层级;
[0212]
h、将所述参考存储层级确定为所述目标存储层级。
[0213]
在某些可能的实施方式中,所述装置还包括:提醒单元;
[0214]
所述提醒单元,用于若确定所述参考存储层级的空闲率不大于预设的第一阈值,则按照预设的通知方式,将新增存储节点的提醒消息发送至预设管理设备。
[0215]
在某些可能的实施方式中,所述装置还包括:预处理单元;
[0216]
所述预处理单元,用于获取每个所述存储节点的存储空间分别对应的预设最大存储率;将预设最大存储率在所述叶子存储层级对应的预设存储范围内的存储节点,确定为所述叶子存储层级所包含的各存储节点。
[0217]
在某些可能的实施方式中,所述接收单元51,还用于接收所述存储节点在启动读写业务时发送的同步信息;
[0218]
所述装置还包括:更新单元;
[0219]
所述更新单元,用于根据所述同步信息中携带的预设最大存储率,对所述存储节点对应的预设最大存储率进行更新。
[0220]
在某些可能的实施方式中,所述处理单元52,具体用于根据所述各存储节点分别对应的利用率和预设最大存储率,确定所述各存储节点分别对应的空闲率;将所述各存储节点中,所述空闲率满足预设的存储条件的存储节点确定为所述目标存储节点。
[0221]
在某些可能的实施方式中,所述处理单元52,具体用于通过如下方式确定所述空闲率满足预设的存储条件:
[0222]
确定每个所述空闲率中的最大值满足预设的存储条件;和/或
[0223]
确定每个所述空闲率中的任一目标空闲率满足预设的存储条件;其中,所述目标空闲率大于预设的第二阈值。
[0224]
在某些可能的实施方式中,所述处理单元52,还用于若确定所述目标存储节点存在故障,则将所述目标存储节点在预设时间段内标记为不可用,并重新确定用于存储所述目标数据的目标存储节点。
[0225]
在数据存储过程中,接收到目标数据的数据存储指令后,可以根据每个存储层级分别对应的利用率以及所允许的预设存储范围,确定适合于保存目标数据的目标存储层级。然后根据位于目标存储层级的各存储节点的存储空间的利用率,确定用于存储目标数据的目标存储节点。由于任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定的,根据存储层级对应的利用率,不仅可以监控从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的使用情况,方便对各叶子存储层级下所包含的存储节点的存储空间进行管控,还有利于在数据存储过程中,根据每个存储层级分别对应的利用率以及所允许的预设存储范围,快速且准确地确
定出适合保存目标存储层级。基于所确定的目标存储层级以及其中的各个存储节点,能够实现先从所有存储节点中快速确定比较适合存储目标数据的部分存储节点,然后再从位于目标存储层级下的多个存储节点中确定目标存储节点,从而无需从所有存储节点中确定目标存储节点,大大减少了确定目标存储节点所需的工作量,有利于快速找到适合保存目标数据的存储节点,而提高目标数据存储的效率。
[0226]
如图6为本公开实施例提供的一种电子设备结构示意图,在上述各实施例的基础上,本公开实施例还提供了一种电子设备,如图6所示,包括:处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信;
[0227]
所述存储器603中存储有计算机程序,当所述程序被所述处理器601执行时,使得所述处理器601执行如下步骤:
[0228]
响应于目标数据的数据存储指令,根据每个存储层级分别对应的利用率以及所允许的预设存储范围,确定用于存储所述目标数据的目标存储层级;其中,任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定,所述叶子存储层级之下不包含有除所述叶子存储层级之外的其它的存储层级;
[0229]
根据所述目标存储层级所包含的各存储节点的存储空间的利用率,确定用于存储所述目标数据的目标存储节点;
[0230]
将所述目标数据存储至所述目标存储节点。
[0231]
由于上述电子设备解决问题的原理与数据存储方法相似,因此上述电子设备的实施可以参见方法的实施,重复之处不再赘述。
[0232]
上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0233]
通信接口602用于上述电子设备与其他设备之间的通信。
[0234]
存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non

volatile memory,nvm),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0235]
上述处理器可以是通用处理器,包括中央处理器、网络处理器(network processor,np)等;还可以是数字指令处理器(digital signal processing,dsp)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
[0236]
在上述各实施例的基础上,本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有可由处理器执行的计算机程序,当所述程序在所述处理器上运行时,使得所述处理器执行时实现如下步骤:
[0237]
响应于目标数据的数据存储指令,根据每个存储层级分别对应的利用率以及所允许的预设存储范围,确定用于存储所述目标数据的目标存储层级;其中,任一存储层级对应的利用率是根据从属于该存储层级的叶子存储层级所包含的各存储节点的存储空间的利用率确定,所述叶子存储层级之下不包含有除所述叶子存储层级之外的其它的存储层级;
[0238]
根据所述目标存储层级所包含的各存储节点的存储空间的利用率,确定用于存储所述目标数据的目标存储节点;
[0239]
将所述目标数据存储至所述目标存储节点。
[0240]
由于计算机可读存储介质解决问题的原理与上述数据存储方法相似,因此具体实施可以参见数据处理方法的实施,重复之处不再赘述。
[0241]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0242]
本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0243]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0244]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0245]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献