一种存储节点的扩容方法及装置与流程

专利2023-08-06  133



1.本技术涉及对象存储技术领域,特别涉及一种存储节点的扩容方法及装置。


背景技术:

2.随着信息时代互联网技术的快速发展,数据类型正在发生变化,图片、视频、语音、文档等非结构化数据占总数据量的比重增加,擅长存储和利用非结构化数据的对象存储,已经成为了分布式存储的首选存储引擎。面对数据存储需求量的不断增加,现有存储设备可能随时面临已有的存储空间不足的问题,此时,需要在原有存储设备已有的存储节点基础上进一步增加新的存储节点,以使扩容后的存储设备满足日益暴增的数据存储需求量,而如何灵活地、可靠性地对现有存储设备进行扩容是对象存储待解决的技术问题。


技术实现要素:

3.有鉴于此,本技术提供一种存储节点的扩容方法及显示设备,以解决上述技术问题。
4.具体地,本技术是通过如下技术方案实现的:
5.本技术实施例提供了一种存储节点的扩容方法,该方法应用于存储设备,所述存储设备包括原存储节点和目的存储节点,包括:
6.从已生成的待迁移任务表中,确定当前需要迁移的目标虚拟节点,所述待迁移任务表用于记录至少一个需要迁移虚拟节点的子任务,一个子任务包括一个待迁移的虚拟节点、与该虚拟节点映射的原存储节点和与该虚拟节点映射的目的存储节点;
7.从所述待迁移任务表中移除属于所述目标虚拟节点的目标子任务,并将所述目标子任务和迁移所述目标子任务时的时间戳添加在已配置的正迁移任务表中,所述正迁移任务表用于记录至少一个处于正在迁移过程中的目标子任务,以及迁移每一目标子任务时的时间戳;
8.若确定属于所述目标子任务的新增存储节点内未存放存储时间为大于所述目标子任务对应的时间戳、且与属于所述目标子任务的原存储节点存放的对象数据为同一版本的对象数据,则将属于所述目标子任务的原存储节点存储的对象数据复制到属于所述目标子任务的新增存储节点;
9.针对每一个目标子任务,在确定属于该目标子任务的原存储节点存储的对象数据传输完成后,将已存储的属于该目标子任务的目标虚拟节点的映射关系更改为属于该目标子任务的目标虚拟节点与新增存储节点的映射关系,并从所述正迁移任务表中移除该目标子任务,删除属于该目标子任务的原存储节点存储的对象数据。
10.一种存储节点的扩容装置,其特征在于,该方法应用于存储设备,所述存储设备包括原存储节点和新增存储节点,包括:
11.虚拟节点确定单元,用于从已生成的待迁移任务表中,确定当前需要迁移的目标虚拟节点,所述待迁移任务表用于记录至少一个需要迁移虚拟节点的子任务,一个子任务
包括一个待迁移的虚拟节点、与该虚拟节点映射的原存储节点和与该虚拟节点映射的新增存储节点;
12.虚拟节点迁移单元,用于从所述待迁移任务表中移除属于所述目标虚拟节点的目标子任务,并将所述目标子任务和迁移所述目标子任务时的时间戳添加在已配置的正迁移任务表中,所述正迁移任务表用于记录至少一个处于正在迁移过程中的目标子任务,以及迁移每一目标子任务时的时间戳;若确定属于所述目标子任务的新增存储节点内未存放存储时间为大于所述目标子任务对应的时间戳、且与属于所述目标子任务的原存储节点存放的对象数据为同一版本的对象数据,则触发数据复制单元;
13.所述数据复制单元,用于将属于所述目标子任务的原存储节点存储的对象数据复制到属于所述目标子任务的新增存储节点;
14.映射关系更改单元,用于针对每一个目标子任务,在确定属于该目标子任务的原存储节点存储的对象数据传输完成后,将已存储的属于该目标子任务的目标虚拟节点的映射关系更改为属于该目标子任务的目标虚拟节点与新增存储节点的映射关系,并从所述正迁移任务表中移除该目标子任务,删除属于该目标子任务的原存储节点存储的对象数据。
15.由以上技术方案可以看出,本技术的存储设备在进行扩容时,先从已生成的待迁移任务表中,确定当前需要迁移的目标虚拟节点,再从待迁移任务表中移除属于目标虚拟节点的目标子任务,并将目标子任务和迁移目标子任务时的时间戳添加在已配置的正迁移任务表中;若确定属于目标子任务的新增存储节点内未存放存储时间为大于目标子任务对应的时间戳、且与属于目标子任务的原存储节点存放的对象数据为同一版本的对象数据,则将属于目标子任务的原存储节点存储的对象数据复制到属于目标子任务的新增存储节点;针对每一个目标子任务,在确定属于该目标子任务的原存储节点存储的对象数据传输完成后,将已存储的属于该目标子任务的目标虚拟节点的映射关系更改为属于该目标子任务的目标虚拟节点与新增存储节点的映射关系,并从正迁移任务表中移除该目标子任务,删除属于该目标子任务的原存储节点存储的对象数据。因此,应用本技术提供的技术方案,能够灵活地且可靠地将存储设备上的虚拟节点映射到新存储节点,进而实现对原有存储设备进行扩容。
附图说明
16.图1中本实施例提供的一种存储节点的扩容方法的流程示意图;
17.图2中本实施例提供的针对存储节点扩容时虚拟节点迁移的示意图;
18.图3中本实施例提供的步骤103的具体实现方法的流程示意图;
19.图4中本实施例提供的一种存储节点的扩容装置的结构示意图;
20.图5中本实施例提供的一种电子设备的结构示意图。
具体实施方式
21.为使本技术的目的、实施方式和优点更加清楚,下面将结合本技术示例性实施例中的附图,对本技术示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本技术一部分实施例,而不是全部的实施例。
22.基于本技术描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前
提下所获得的所有其他实施例,都属于本技术所附权利要求保护的范围。此外,虽然本技术中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
23.需要说明的是,本技术中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本技术的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
24.本技术中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明(unless otherwise indicated)。应该理解这样使用的用语在适当情况下可以互换,例如能够根据本技术实施例图示或描述中给出那些以外的顺序实施。
25.此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
26.参见图1,图1为本技术实施例提供的一种存储节点的扩容方法的方法流程图,该方法应用于存储设备,该存储设备包括原存储节点和新增存储节点,本实施例中的新增存储节点就是需要扩容的存储节点。该方法包括如下步骤:
27.步骤101,从已生成的待迁移任务表中,确定当前需要迁移的目标虚拟节点。
28.本实施例中,待迁移任务表用于记录至少一个需要迁移虚拟节点的子任务,一个子任务包括一个待迁移的虚拟节点、与该虚拟节点映射的原存储节点和与该虚拟节点映射的新增存储节点。
29.将新增存储节点信息通知到存储设备,存储设备根据新增存储节点和原存储节点重新分配虚拟节点。假设原存储节点对应的虚拟节点数量为基于一致性哈希算法分配对象的规则确定的,新增存储节点会改变部分虚拟节点的映射。基于此,本实施例引进一个待迁移任务表。作为一个实施例,待迁移任务表可以根据原存储节点对应的虚拟节点的数量和新增存储节点的数量确定。
30.示例性的,若存储设备的虚拟节点个数为2^19,扩容前原存储节点为10个,存储设备中每个原存储节点被分配到的虚拟节点个数期望为2^19/10个虚拟节点。当新增1个存储节点即新增存储节点,扩容后每个存储节点的虚拟节点个数为2^19/11个,每个存储节点待迁移的虚拟节点个数为2^19/10-2^19/11个,即约4766个,同时计算出需要迁移的目的存储节点。将所有待迁移虚拟节点的原映射节点信息和新映射节点信息,整理为多个迁移子任务,形成待迁移任务表。
31.目的存储节点是根据待迁移的虚拟节点数量和新增存储节点数量确定的。目的存储节点至少包括一个新增存储节点。
32.为了便于理解,现给出如下表1所显示的待迁移任务表的示例,其中v10001、
……
、vn0001分别为序号为1、
……
、n对应的虚拟节点标识,0001、
……
、000m分别为序号为1、
……
、m对应的原存储节点标识,0011为目的存储节点标识。
33.表1待迁移任务表
34.虚拟节点原存储节点目的存储节点v1000100010011
………………
vn0001000m0011
35.如表1所示,对于虚拟节点v10001而言,该v10001对应的子任务为:v10001对应原存储节点0001,且v10001对应目的存储节点00011。对于虚拟节点vn0001而言,该vn0001对应的子任务为:vn0001对应原存储节点000m,且vn0001对应目的存储节点00011。
36.作为一个实施例,实现步骤101的实现方式包括:根据本存储设备处理当前业务时所占用cpu的大小,确定当前需要迁移的目标虚拟节点。本存储设备处理当前业务时所占用cpu的大小可以理解为本存储设备处理当前业务压力的大小,如cpu每秒处理当前业务时的流量数据,若该流量数据大于流量阈值,则认为存储设备处理当前业务压力大,则减少当前需要迁移的目标虚拟节点的数量。若该流量数据小于流量阈值,则认为存储设备处理当前业务压力小,增加当前需要迁移的目标虚拟节点的数量,若该流量数据等于流量阈值,则认为存储设备处理当前业务压力合适,调整当前需要迁移的目标虚拟节点的数量为预设数量。作为一个实施例,并发处理虚拟节点的数量的最大并发数不超过原存储设备的cpu核数/2。预设数量可以为原存储设备的cpu核数/2。可见,应用本实施例提供的技术方案能够在数据迁移过程中,根据存储设备处理当前业务压力的大小,动态调整并发的迁移子任务个数。当业务压力小时,增大并发的虚拟节点个数,当业务压力大时,减少并发的虚拟节点个数。
37.需要说明的是,实际在对存储设备的存储节点进行扩容时,会依据新增存储节点的数量和原存储节点的数量计算扩容后各存储节点的虚拟节点个数,新增存储节点的虚拟节点组,如图2中所展示的新增节点虚拟节点组,将由原存储节点分出部分至新增存储节点,这部分虚拟节点视为待迁移的虚拟节点,如图2中的填充为斜线的框即节点1、节点2、节点3和节点k均为待迁移的虚拟节点,其对应于如图2中原虚拟节点组中,并从原虚拟节点组中将节点1、节点2、节点3和节点k迁移到新增节点虚拟节点组进而完成扩容后虚拟节点组,扩容后虚拟节点组包括节点1、节点2、节点3、
……
、节点f、节点f+1,f为扩容后虚拟节点组中虚拟节点的序号,k为原虚拟节点组中节点的序号。本实施例是针对原存储节点对应的部分虚拟节点进行迁移的实现方法。
38.步骤102,从待迁移任务表中移除属于目标虚拟节点的目标子任务,并将目标子任务和迁移目标子任务时的时间戳添加在已配置的正迁移任务表中。若确定属于所述目标子任务的目的存储节点内未存放存储时间为大于所述目标子任务对应的时间戳、且与属于所述目标子任务的原存储节点存放的对象数据为同一版本的对象数据,则执行步骤103。
39.其中,正迁移任务表用于记录至少一个处于正在迁移过程中的目标子任务,以及迁移每一目标子任务时的时间戳。
40.本实施例中的目标子任务就是针对目标虚拟节点的子任务。目标虚拟节点就是当前需要迁移的虚拟节点。
41.本实施例的正迁移任务表也包括多个目标虚拟节点对应的目标子任务,但上述正迁移任务表还包括迁移每一个目标子任务时的时间戳,具体参见表2。
42.表2正迁移任务表
43.虚拟节点原存储节点目的存储节点时间戳v1000100010011时间戳1
………………ꢀ
vn0001000m0011时间戳k
44.表2中,每一目标子任务均对应一个时间戳,示例性的,针对虚拟节点v10001的目标子任务为:v10001对应原存储节点0001,且v10001对应目的存储节点00011,该目标子任务对应的时间戳为时间戳1,上述时间戳k为针对虚拟节点vn0001对应的目标子任务的时间戳。
45.在复制虚拟节点对应的原存储节点存放的对象数据之前,先需要判断属于目标子任务的目的存储节点内是否存放存储时间为大于所述目标子任务对应的时间戳、且与属于所述目标子任务的原存储节点存放的对象数据为同一版本的对象数据,若确定属于目标子任务的目的存储节点内未存放存储时间为大于所述目标子任务对应的时间戳、且与属于所述目标子任务的原存储节点存放的对象数据为同一版本的对象数据。可以理解为,需求迁移入的新增存储节点中未存放原存储节点需要复制的对象数据的最新版本。若需要迁移入的新增存储节点中存放原存储节点需要复制的对象数据的最新版本,则就表示不必需要将原存储节点中的旧版本的对象数据迁移到对应的新增存储节点中。
46.步骤103,将属于目标子任务的原存储节点存储的对象数据复制到属于目标子任务的目的存储节点。
47.本实施例中的对象数据包括实际存储的数据和对象元数据。对象就是对象存储中基本存储单位,由对象元数据和对象实际存储的数据组成。而对象元数据:即对象的基本信息数据,包括对象大小、创建时间、更新时间和etag值等。
48.步骤104,针对每一个目标子任务,在确定属于该目标子任务的原存储节点存储的对象数据传输完成后,将已存储的属于该目标子任务的目标虚拟节点的映射关系更改为属于该目标子任务的目标虚拟节点与目的存储节点的映射关系,并从所述正迁移任务表中移除该目标子任务,删除属于该目标子任务的原存储节点存储的对象数据。
49.本步骤中,原存储的属于该目标子任务的目标虚拟节点的映射关系为属于该目标子任务的目标虚拟节点与原存储节点的映射关系,现更改为属于该目标子任务的目标虚拟节点与目的存储节点的映射关系。需要说明的是,上述目的存储节点也是属于该目标子任务的目的存储节点。
50.从正迁移任务表中移除该目标子任务,这就表示该目标子任务对应的目标虚拟节点成功完成迁移。同时,为了降低数据对原存储节点空间的占用,也为了便于后续能够准确的找到对应的存储数据,删除属于该目标子任务的原存储节点存储的对象数据。
51.至此,图1中的全部流程已经完成。
52.由以上技术方案可以看出,本技术的存储设备在进行扩容时,先从已生成的待迁移任务表中,确定当前需要迁移的目标虚拟节点,再从待迁移任务表中移除属于目标虚拟节点的目标子任务,并将目标子任务和迁移目标子任务时的时间戳添加在已配置的正迁移任务表中;若确定属于目标子任务的新增存储节点内未存放存储时间为大于目标子任务对应的时间戳、且与属于目标子任务的原存储节点存放的对象数据为同一版本的对象数据,则将属于目标子任务的原存储节点存储的对象数据复制到属于目标子任务的新增存储节点;针对每一个目标子任务,在确定属于该目标子任务的原存储节点存储的对象数据传输完成后,将已存储的属于该目标子任务的目标虚拟节点的映射关系更改为属于该目标子任
务的目标虚拟节点与新增存储节点的映射关系,并从正迁移任务表中移除该目标子任务,删除属于该目标子任务的原存储节点存储的对象数据。因此,应用本技术提供的技术方案,能够灵活地且可靠地将存储设备上的虚拟节点映射到新存储节点,进而实现对原有存储设备进行扩容。
53.在相关迁移技术方案中,数据迁移期间,存储设备会逐一地将待迁移的虚拟节点,映射在原存储节点中的数据迁移到新增存储节点。此时若对正在迁移的虚拟节点进行业务数据访问,会出现存储路径歧义问题。现有的处理方法是存储设备记录下当前正在迁移的虚拟节点,暂时拒绝该虚拟节点的业务请求,直到该虚拟节点迁移完成。当业务请求访问到未迁移、无需迁移和迁移完成的虚拟节点时,业务数据可正常读写。存储设备中的虚拟节点个数若为2^19,数据访问到正在迁移的虚拟节点的概率为1/2^19,业务请求成功率为99.9998%。迁移完成后,数据被均匀地分配到原存储节点和新增存储节点,原存储节点的已使用容量变少,业务请求按扩容后的哈希映射表读写数据,存储设备的扩容完成。不难看出,现有相关技术方案中,数据迁移过程中,正在迁移的虚拟节点无法正常地提供业务访问,业务访问成功率取决于虚拟节点个数和正在迁移的虚拟节点个数,正在迁移的虚拟节点个数增加,访问成功率会降低,存储设备的高可用性和迁移的效率不能兼顾。为了解决上述技术问题,在执行步骤103的过程中,作为一个实施例,如图3所示,该方法还包括如下步骤:
54.步骤1031,当接收到读写请求时,根据所述读写请求请求处理的目标数据,确定处理目标数据的第一虚拟节点;若第一虚拟节点存在正迁移任务表,则执行步骤1032。
55.本实施例的读写请求可以为读请求,也可以为写请求,还可以为删除请求,本实施例对此并不限定。
56.第一虚拟节点仅仅是为了便于区分其他虚拟节点而被命名的,本实施例对此并不限定。
57.虚拟节点根据数据迁移任务,可分为四类,分别为:第一类,无需迁移的虚拟节点。第二类,待迁移的虚拟节点。第三类,正在迁移的虚拟节点。第四类,迁移完成的虚拟节点。其中,第一类、第二类和第四类虚拟节点进行数据读写时,无需特别处理。针对第三类虚拟节点,按照本实施例实施,本实施例可以检测上述第一虚拟节点是否存在正迁移任务表,若存在,则认为属于第三类虚拟节点,执行步骤1032,若不存在,则认为属于第一类虚拟节点、第二类虚拟节点或第四类虚拟节点,按照现有的存储方法处理该第一虚拟节点对应存储节点中的数据,在此,不做进一步赘述。
58.步骤1032,根据正迁移任务表记录的针对第一虚拟节点的映射关系,处理读写请求请求处理的目标数据。
59.可见,应用本实施例提供的技术方案能够在迁移数据的过程中,利用正迁移任务表记录的映射关系,准确无误地处理该读写请求,以使在数据迁移过程中,正在迁移的虚拟节点能够正常提供业务访问,进而也使得本实施例提供的存储设备能够保证虚拟节点个数和正在迁移的虚拟节点个数提供对应的业务访问,保证业务访问的成功率,以使得存储设备能够兼顾高可靠性和迁移的效率。
60.作为一个实施例,读写请求为读请求,实现步骤1031的实现方式包括如下步骤:
61.步骤a,根据所述读请求请求读取的目标数据,确定存放所述目标数据的存储节点
对应的第一虚拟节点。
62.在步骤a的基础上,实现步骤1032包括步骤b~步骤d:
63.步骤b,从正迁移任务表中查找第一虚拟节点与原存储节点以及第一虚拟节点与目的存储节点的映射关系,并按照第一虚拟节点与目的存储节点的映射关系,确定所述第一虚拟节点对应的目的存储节点是否存在所述目标数据,若存在,则执行步骤c,若不存在,则执行步骤d。
64.本实施例中,从正迁移任务表中查找第一虚拟节点与原存储节点的映射关系以及第一虚拟节点与目的存储节点的映射关系,按照第一虚拟节点与目的存储节点的映射关系,先从该第一虚拟节点对应的新增存储节点即目的存储节点查找是否存在该目标数据,若存在,则表示该目标数据已成功被复制,基于此,执行步骤c,若不存在,这就表示,该目标数据是存储在原存储节点,还没有被复制成功,基于此,执行步骤d,以按照该第一虚拟节点对应的原存储节点读取存在该目标数据。
65.步骤c,从第一虚拟节点对应的目的存储节点读取所述目标数据。
66.步骤d,按照第一虚拟节点与原存储节点的映射关系,从第一虚拟节点对应的原存储节点读取所述目标数据。
67.可见,应用本实施例提供的技术方案能够在迁移数据的过程中,利用正迁移任务表记录的映射关系,能够准确无误且在不影响业务访问的情况下处理该读请求,既能保证业务访问的高可靠性又能提高迁移效率。
68.作为另一个实施例,读写请求为写请求,实现步骤1031的实现方式包括:
69.步骤e,根据所述写请求请求写入的目标数据,确定写入所述目标数据的存储节点对应的第一虚拟节点。
70.基于步骤e,实现步骤1032的实现方式包括步骤f:
71.步骤f,从正迁移任务表中查找第一虚拟节点与目的存储节点的映射关系,并按照第一虚拟节点与目的存储节点的映射关系,将目标数据写入第一虚拟节点对应的目的存储节点中。
72.本实施例在处理写处理时,直接将写请求携带的目标数据写入到该第一虚拟节点对应的目的存储节点中。
73.可见,应用本实施例提供的技术方案能够在迁移数据的过程中,利用正迁移任务表记录的映射关系,能够准确无误且在不影响业务访问的情况下处理该写请求,既能保证业务访问的高可靠性又能提高迁移效率。
74.所述读写请求为删除请求,所述根据所述读写请求请求处理的目标数据,确定处理所述目标数据的第一虚拟节点,包括:
75.根据所述写请求请求删除的目标数据,确定存放所述目标数据的存储节点对应的第一虚拟节点;
76.作为另一个实施例,读写请求为删除请求,实现步骤1031的实现方式可以包括如下步骤:
77.步骤g,从所述正迁移任务表中查找所述第一虚拟节点与原存储节点以及所述第一虚拟节点与目的存储节点的映射关系,并按照第一虚拟节点与目的存储节点的映射关系以及所述第一虚拟节点与目的存储节点的映射关系,分别对应确定第一虚拟节点映射的目
的存储节点和第一虚拟节点映射的原存储节点是否存在所述目标数据,若存在,执行步骤h。
78.本实施例需要分别在原存储节点和目的存储节点中进行查找目标数据,这也就是说,无论原存储节点或目的存储节点是否存放目标数据,但为了保证能够将需要删除的目标数据删除干净,均会从目的存储节点和原存储节点进行查找该目标数据。若二者均存储该目标数据,则均执行步骤h,若有一者存储该目标数据,则针对存放该目标数据的存储节点中执行步骤h。
79.步骤h,删除所述目标数据。
80.可见,应用本实施例提供的技术方案能够在迁移数据的过程中,利用正迁移任务表记录的映射关系,能够准确无误且在不影响业务访问的情况下处理该删除请求,既能保证业务访问的高可靠性又能提高迁移效率。
81.作为一个实施例,该方法还包括:在迁移所述目标虚拟节点的过程中,当检测到所述待迁移任务表中存在网络连接由异常状态变为正常状态的第一目标存储节点时,则重新确定所述待迁移任务表,完成所述目标存储节点未完成的迁移子任务。当检测到所述正迁移任务表中存在网络连接由异常状态变为正常状态的第二目标存储节点的时,分析出所述第二目标存储节点所属的子任务掉线前正在执行的任务阶段,并基于分析出的任务阶段信息,继续执行所述第二目标存储阶段所属子任务的迁移。
82.本实施例中,网络连接由异常状态变为正常状态,则表示网络连接在线,能够正常传输信号,网络连接由正常状态变为异常状态,则表示网络连接掉线,不能够提供正常的网络服务。
83.可见,应用本技术实施例提供的技术方案即使在网络连接异常掉线后,待迁移的子任务均不会受到影响,待掉线的存储节点上线后重新扫描待迁移任务表,完成此存储节点未完成的迁移任务。对于掉线前正在迁移的子任务,分析出掉线前正在执行的任务阶段,继续后续迁移的流程,进而能够保证迁移数据正常实施。
84.作为一个实施例,可以根据一致性哈希算法分配对象的特性,每个虚拟节点下的分配到的对象数据基本均匀,扩容已完成迁移的进度可根据待迁移的虚拟节点个数来计算,该计算方法可以为(已完成迁移虚拟节点个数)/(总待迁移的虚拟节点个数)。可见,本实施例能够根据已完成迁移虚拟节点个数和总待迁移的虚拟节点个数,确定扩容完成迁移的进度,可将计算之后的进度显示在存储设备的显示端中。
85.上述示例描述完毕。
86.下面对本技术提供的装置进行描述:
87.参见图4所示,图4为本技术实施例提供了一种存储节点的扩容装置400的结构示意图,该装置应用于存储设备,该存储设备包括原存储节点和目的存储节点,包括:
88.虚拟节点确定单元401,用于从已生成的待迁移任务表中,确定当前需要迁移的目标虚拟节点,所述待迁移任务表用于记录至少一个需要迁移虚拟节点的子任务,一个子任务包括一个待迁移的虚拟节点、与该虚拟节点映射的原存储节点和与该虚拟节点映射的目的存储节点;
89.虚拟节点迁移单元402,用于从所述待迁移任务表中移除属于所述目标虚拟节点的目标子任务,并将所述目标子任务和迁移所述目标子任务时的时间戳添加在已配置的正
迁移任务表中,所述正迁移任务表用于记录至少一个处于正在迁移过程中的目标子任务,以及迁移每一目标子任务时的时间戳;若确定属于所述目标子任务的目的存储节点内未存放存储时间为大于所述目标子任务对应的时间戳、且与属于所述目标子任务的原存储节点存放的对象数据为同一版本的对象数据,则触发数据复制单元403。
90.所述数据复制单元403,用于将属于所述目标子任务的原存储节点存储的对象数据复制到属于所述目标子任务的目的存储节点。
91.映射关系更改单元404,用于针对每一个目标子任务,在确定属于该目标子任务的原存储节点存储的对象数据传输完成后,将已存储的属于该目标子任务的目标虚拟节点的映射关系更改为属于该目标子任务的目标虚拟节点与目的存储节点的映射关系,并从所述正迁移任务表中移除该目标子任务,删除属于该目标子任务的原存储节点存储的对象数据。
92.作为一个实施例,该装置还包括:
93.第一虚拟节点确定单元,用于在迁移所述目标虚拟节点的过程中,当接收到读写请求时,根据所述读写请求请求处理的目标数据,确定处理所述目标数据的第一虚拟节点;若所述第一虚拟节点存在所述正迁移任务表,则触发请求处理单元;
94.所述请求处理单元,用于根据所述正迁移任务表记录的针对所述第一虚拟节点的映射关系,处理所述读写请求请求处理的目标数据。
95.作为一个实施例,所述读写请求为读请求,所述第一虚拟节点确定单元具有用于:
96.根据所述读请求请求读取的目标数据,确定存放所述目标数据的存储节点对应的第一虚拟节点;
97.所述请求处理单元具体用于:
98.从所述正迁移任务表中查找所述第一虚拟节点与原存储节点以及所述第一虚拟节点与目的存储节点的映射关系,并按照所述第一虚拟节点与目的存储节点的映射关系,确定所述第一虚拟节点对应的目的存储节点是否存在所述目标数据,若存在,则从所述第一虚拟节点对应的目的存储节点读取所述目标数据,若不存在,则按照所述第一虚拟节点与原存储节点的映射关系,从所述第一虚拟节点对应的原存储节点读取所述目标数据。
99.作为一个实施例,所述读写请求为写请求,所述第一虚拟节点确定单元具有用于:
100.根据所述写请求请求写入的目标数据,确定写入所述目标数据的存储节点对应的第一虚拟节点;
101.所述请求处理单元具体用于:
102.从所述正迁移任务表中查找所述第一虚拟节点与目的存储节点的映射关系,并按照所述第一虚拟节点与目的存储节点的映射关系,将所述目标数据写入所述第一虚拟节点对应的目的存储节点中。
103.作为一个实施例,所述读写请求为删除请求,所述第一虚拟节点确定单元具有用于:
104.根据所述写请求请求删除的目标数据,确定存放所述目标数据的存储节点对应的第一虚拟节点;
105.所述请求处理单元具体用于:
106.从所述正迁移任务表中查找所述第一虚拟节点与原存储节点以及所述第一虚拟
节点与目的存储节点的映射关系,并按照所述第一虚拟节点与目的存储节点的映射关系以及所述第一虚拟节点与目的存储节点的映射关系,分别对应确定所述第一虚拟节点映射的目的存储节点和所述第一虚拟节点映射的原存储节点是否存在所述目标数据,若存在,删除所述目标数据。
107.作为一个实施例,虚拟节点确定单元具体:
108.根据本存储设备处理当前业务时所占用cpu的大小,确定当前需要迁移的目标虚拟节点。
109.作为一个实施例,该装置还包括:迁移任务完成单元,用于:
110.当检测到所述待迁移任务表中存在网络连接由异常状态变为正常状态的第一目标存储节点的时,则重新确定所述待迁移任务表,完成所述目标存储节点未完成的迁移子任务;
111.当检测到所述正迁移任务表中存在网络连接由异常状态变为正常状态的第二目标存储节点的时,分析出所述第二目标存储节点所属的子任务掉线前正在执行的任务阶段,并基于分析出的任务阶段信息,继续执行所述第二目标存储阶段所属子任务的迁移。
112.由以上技术方案可以看出,本技术的存储设备在进行扩容时,先从已生成的待迁移任务表中,确定当前需要迁移的目标虚拟节点,再从待迁移任务表中移除属于目标虚拟节点的目标子任务,并将目标子任务和迁移目标子任务时的时间戳添加在已配置的正迁移任务表中;若确定属于目标子任务的新增存储节点内未存放存储时间为大于目标子任务对应的时间戳、且与属于目标子任务的原存储节点存放的对象数据为同一版本的对象数据,则将属于目标子任务的原存储节点存储的对象数据复制到属于目标子任务的新增存储节点;针对每一个目标子任务,在确定属于该目标子任务的原存储节点存储的对象数据传输完成后,将已存储的属于该目标子任务的目标虚拟节点的映射关系更改为属于该目标子任务的目标虚拟节点与新增存储节点的映射关系,并从正迁移任务表中移除该目标子任务,删除属于该目标子任务的原存储节点存储的对象数据。因此,应用本技术提供的技术方案,能够灵活地且可靠地将存储设备上的虚拟节点映射到新存储节点,进而实现对原有存储设备进行扩容。
113.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
114.本技术实施例提供的电子设备,从硬件层面而言,硬件架构示意图可以参见图5所示。包括:机器可读存储介质和处理器,其中:所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现上述示例公开的存储节点的扩容操作。
115.本技术实施例提供的机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述示例公开的存储节点的扩容操作。
116.这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radom access memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们
的组合。
117.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
118.为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
119.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
120.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
121.而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
122.这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
123.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
124.至此,完成图5所示设备的描述。
125.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。

技术特征:
1.一种存储节点的扩容方法,其特征在于,该方法应用于存储设备,所述存储设备包括原存储节点和新增存储节点,包括:从已生成的待迁移任务表中,确定当前需要迁移的目标虚拟节点,所述待迁移任务表用于记录至少一个需要迁移虚拟节点的子任务,一个子任务包括一个待迁移的虚拟节点、与该虚拟节点映射的原存储节点和与该虚拟节点映射的目的存储节点;所述目的存储节点包括至少一个新增存储节点;从所述待迁移任务表中移除属于所述目标虚拟节点的目标子任务,并将所述目标子任务和迁移所述目标子任务时的时间戳添加在已配置的正迁移任务表中,所述正迁移任务表用于记录至少一个处于正在迁移过程中的目标子任务,以及迁移每一目标子任务时的时间戳;若确定属于所述目标子任务的目的存储节点内未存放存储时间为大于所述目标子任务对应的时间戳、且与属于所述目标子任务的原存储节点存放的对象数据为同一版本的对象数据,则将属于所述目标子任务的原存储节点存储的对象数据复制到属于所述目标子任务的目的存储节点;针对每一个目标子任务,在确定属于该目标子任务的原存储节点存储的对象数据传输完成后,将已存储的属于该目标子任务的目标虚拟节点的映射关系更改为属于该目标子任务的目标虚拟节点与目的存储节点的映射关系,并从所述正迁移任务表中移除该目标子任务,删除属于该目标子任务的原存储节点存储的对象数据。2.根据权利要求1所述的方法,其特征在于,在执行所述将属于所述目标子任务的原存储节点存储的对象数据复制到属于所述目标子任务的目的存储节点的过程中,还包括:当接收到读写请求时,根据所述读写请求请求处理的目标数据,确定处理所述目标数据的第一虚拟节点;若所述第一虚拟节点存在所述正迁移任务表,则根据所述正迁移任务表记录的针对所述第一虚拟节点的映射关系,处理所述读写请求请求处理的目标数据。3.根据权利要求2所述的方法,其特征在于,所述读写请求为读请求,所述根据所述读写请求请求处理的目标数据,确定处理所述目标数据的第一虚拟节点,包括:根据所述读请求请求读取的目标数据,确定存放所述目标数据的存储节点对应的第一虚拟节点;所述根据所述正迁移任务表记录的针对所述第一虚拟节点的映射关系,处理所述读写请求请求处理的目标数据,包括:从所述正迁移任务表中查找所述第一虚拟节点与原存储节点以及所述第一虚拟节点与目的存储节点的映射关系,并按照所述第一虚拟节点与目的存储节点的映射关系,确定所述第一虚拟节点对应的目的存储节点是否存在所述目标数据,若存在,则从所述第一虚拟节点对应的目的存储节点读取所述目标数据,若不存在,则按照所述第一虚拟节点与原存储节点的映射关系,从所述第一虚拟节点对应的原存储节点读取所述目标数据。4.根据权利要求2所述的方法,其特征在于,所述读写请求为写请求,所述根据所述读写请求请求处理的目标数据,确定处理所述目标数据的第一虚拟节点,包括:根据所述写请求请求写入的目标数据,确定写入所述目标数据的存储节点对应的第一虚拟节点;
所述根据所述正迁移任务表记录的针对所述第一虚拟节点的映射关系,处理所述读写请求请求处理的目标数据,包括:从所述正迁移任务表中查找所述第一虚拟节点与目的存储节点的映射关系,并按照所述第一虚拟节点与目的存储节点的映射关系,将所述目标数据写入所述第一虚拟节点对应的目的存储节点中。5.根据权利要求2所述的方法,其特征在于,所述读写请求为删除请求,所述根据所述读写请求请求处理的目标数据,确定处理所述目标数据的第一虚拟节点,包括:根据所述写请求请求删除的目标数据,确定存放所述目标数据的存储节点对应的第一虚拟节点;所述根据所述正迁移任务表记录的针对所述第一虚拟节点的映射关系,处理所述读写请求请求处理的目标数据,包括:从所述正迁移任务表中查找所述第一虚拟节点与原存储节点以及所述第一虚拟节点与目的存储节点的映射关系,并按照所述第一虚拟节点与目的存储节点的映射关系以及所述第一虚拟节点与目的存储节点的映射关系,分别对应确定所述第一虚拟节点映射的目的存储节点和所述第一虚拟节点映射的原存储节点是否存在所述目标数据,若存在,删除所述目标数据。6.根据权利要求1所述的方法,其特征在于,所述从已生成的待迁移任务表中,确定当前需要迁移的目标虚拟节点,包括:根据本存储设备处理当前业务时所占用cpu的大小,确定当前需要迁移的目标虚拟节点。7.根据权利要求1所述的方法,其特征在于,在迁移所述目标虚拟节点的过程中,当检测到所述待迁移任务表中存在网络连接由异常状态变为正常状态的第一目标存储节点时,则重新确定所述待迁移任务表,完成所述目标存储节点未完成的迁移子任务;当检测到所述正迁移任务表中存在网络连接由异常状态变为正常状态的第二目标存储节点的时,分析出所述第二目标存储节点所属的子任务掉线前正在执行的任务阶段,并基于分析出的任务阶段信息,继续执行所述第二目标存储阶段所属子任务的迁移。8.一种存储节点的扩容装置,其特征在于,该装置应用于存储设备,所述存储设备包括原存储节点和目的存储节点,包括:虚拟节点确定单元,用于从已生成的待迁移任务表中,确定当前需要迁移的目标虚拟节点,所述待迁移任务表用于记录至少一个需要迁移虚拟节点的子任务,一个子任务包括一个待迁移的虚拟节点、与该虚拟节点映射的原存储节点和与该虚拟节点映射的目的存储节点;虚拟节点迁移单元,用于从所述待迁移任务表中移除属于所述目标虚拟节点的目标子任务,并将所述目标子任务和迁移所述目标子任务时的时间戳添加在已配置的正迁移任务表中,所述正迁移任务表用于记录至少一个处于正在迁移过程中的目标子任务,以及迁移每一目标子任务时的时间戳;若确定属于所述目标子任务的目的存储节点内未存放存储时间为大于所述目标子任务对应的时间戳、且与属于所述目标子任务的原存储节点存放的对象数据为同一版本的对象数据,则触发数据复制单元;所述数据复制单元,用于将属于所述目标子任务的原存储节点存储的对象数据复制到
属于所述目标子任务的目的存储节点;映射关系更改单元,用于针对每一个目标子任务,在确定属于该目标子任务的原存储节点存储的对象数据传输完成后,将已存储的属于该目标子任务的目标虚拟节点的映射关系更改为属于该目标子任务的目标虚拟节点与目的存储节点的映射关系,并从所述正迁移任务表中移除该目标子任务,删除属于该目标子任务的原存储节点存储的对象数据。9.根据权利要求8所述的装置,其特征在于,该装置还包括:第一虚拟节点确定单元,用于在迁移所述目标虚拟节点的过程中,当接收到读写请求时,根据所述读写请求请求处理的目标数据,确定处理所述目标数据的第一虚拟节点;若所述第一虚拟节点存在所述正迁移任务表,则触发请求处理单元;所述请求处理单元,用于根据所述正迁移任务表记录的针对所述第一虚拟节点的映射关系,处理所述读写请求请求处理的目标数据。10.根据权利要求8所述的装置,其特征在于,该装置还包括:迁移任务完成单元,用于:当检测到所述待迁移任务表中存在网络连接由异常状态变为正常状态的第一目标存储节点的时,则重新确定所述待迁移任务表,完成所述目标存储节点未完成的迁移子任务;当检测到所述正迁移任务表中存在网络连接由异常状态变为正常状态的第二目标存储节点的时,分析出所述第二目标存储节点所属的子任务掉线前正在执行的任务阶段,并基于分析出的任务阶段信息,继续执行所述第二目标存储阶段所属子任务的迁移。

技术总结
本申请提供一种存储节点的扩容方法及装置,存储设备在进行扩容时,从待迁移任务表中移除属于当前需求迁移的目标虚拟节点的目标子任务,并将对应的时间戳添加在已配置的正迁移任务表中;若确定属于目标子任务的新增存储节点内未存放存储时间为大于该时间戳、且与属于目标子任务的原存储节点存放的对象数据为同一版本的对象数据,则将原存储节点存储的对象数据复制到属于目标子任务的新增存储节点;针对每一个目标子任务,在确定对象数据传输完成后,将映射关系更改为目标虚拟节点与新增存储节点的映射关系,并从正迁移任务表中移除该目标子任务,删除原存储节点存储的对象数据。因此,应用本申请提供的技术方案能够实现对原有存储设备进行扩容。有存储设备进行扩容。有存储设备进行扩容。


技术研发人员:史黎翔 沈泽宇
受保护的技术使用者:杭州宏杉科技股份有限公司
技术研发日:2022.07.22
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-4390.html

最新回复(0)