一种文件迁移的方法和装置的制造方法

文档序号:10570109阅读:245来源:国知局
一种文件迁移的方法和装置的制造方法
【专利摘要】本发明提供一种文件迁移的方法和装置,该方法包括:从所有待迁移文件中选择出优先级最高的第一文件;利用全局数据集合中的每个节点的权重选择第一节点;所述全局数据集合中记录了分布式存储系统中的每个节点与权重的对应关系;通过第一节点将所述第一文件从源分布式子卷迁移到目标分布式子卷。通过本发明的技术方案,可以让源分布式子卷包含的所有节点参与文件迁移,可以提高文件迁移速度,避免出现某个节点压力过大的情况,不影响各节点的处理性能,让节点的压力负载达到均衡,同时确保在文件迁移前后的数据一致性。
【专利说明】
一种文件迁移的方法和装置
技术领域
[0001] 本发明涉及存储技术领域,尤其涉及一种文件迀移的方法和装置。
【背景技术】
[0002] 对于分布式存储系统来说,数据可靠性和空间利用率很难兼备,当保证了比较高 的数据可靠性时,贝丨】会导致空间利用率较低。DHT(Distributed Hash Table,分布式哈希 表)是一种空间利用率较高的分布式存储系统,为了保证数据可靠性以及容错性,还可以在 DHT中采用EC(Erasure Coding,纠删码)算法。
[0003] 如图1所示,为分布式存储系统的组网示意图。在需要写入文件A时,先通过DHT算 法得到写入的位置,如分布式子卷D1。然后通过EC算法,将文件A写入到分布式子卷D1的各 个节点上。例如,将文件A分成3份,得到3份数据,并将这3份数据分别写入到分布式子卷D1 的节点1、节点2、节点3上,此外,还可以将文件A对应的冗余数据写入到分布式子卷D1的节 点4上。
[0004] 但是,在通过DHT算法得到写入位置时,会出现如下情况:分布式子卷D1内写入的 文件较多,而分布式子卷D2内写入的文件较少,从而出现不平衡的情况,影响DHT的性能发 挥。为解决上述问题,可以采用数据平衡(Rebalance)算法,在各个分布式子卷内迀移文件, 以使每个分布式子卷内的文件数量接近,确保DHT的性能。例如,将分布式子卷D1内的文件A 和文件B迀移到分布式子卷D2,以保证分布式子卷D1和分布式子卷D2内的文件数量大体平 衡。
[0005] 在目前的文件迀移过程中,通常由节点1迀移所有文件,如节点1将分布式子卷D1 内的文件A和文件B迀移到分布式子卷D2,当需要迀移的文件数量较多时,节点1的工作压力 很大,迀移速度较慢,影响节点1的处理性能。

【发明内容】

[0006] 本发明提供一种文件迀移的方法,所述方法包括以下步骤:
[0007] 从所有待迀移文件中选择出优先级最高的第一文件;
[0008] 利用全局数据集合中的每个节点的权重选择第一节点;其中,所述全局数据集合 中记录了分布式存储系统中的每个节点与权重的对应关系;
[0009] 通过第一节点将所述第一文件从源分布式子卷迀移到目标分布式子卷;
[0010]在所述全局数据集合中增加所述第一节点的权重,设置所述第一文件不是待迀移 文件,如果当前还存在待迀移文件,则返回执行从所有待迀移文件中选择出优先级最高的 第一文件的过程。
[0011]所述利用全局数据集合中的每个节点的权重选择第一节点的过程,具体包括:通 过查询所述第一文件所在的源分布式子卷对应的局部集合,得到所述源分布式子卷包含的 各节点;从所述全局数据集合中查询到所述源分布式子卷包含的各节点的权重,并选择权 重最小的节点为所述第一节点;或者,
[0012] 从全局数据集合中选择权重最小的节点,并判断当前选择的节点是否位于所述第 一文件所在的源分布式子卷对应的局部集合中;如果是,将当前选择的节点确定为所述第 一节点;如果否,从所述全局数据集合中选择权重第二小的节点,并继续执行判断当前选择 的节点是否位于所述局部集合的过程,一直到当前选择的节点位于所述局部集合,并将当 前选择的节点确定为所述第一节点;
[0013] 其中,所述局部集合中记录了所述源分布式子卷包含的各节点。
[0014] 所述通过第一节点将所述第一文件从源分布式子卷迀移到目标分布式子卷后,所 述方法还包括:在所述第一节点将所述第一文件从源分布式子卷迀移到目标分布式子卷完 成之后,则在所述全局数据集合中降低所述第一节点的权重。
[0015] 在所述第一文件从源分布式子卷到目标分布式子卷的迀移过程中,所述方法进一 步包括:获取所述第一文件对应的第一文件属性信息,所述第一文件属性信息包括文件正 在迀移的标记、所述目标分布式子卷的信息;
[0016] 根据所述第一文件属性信息,确定所述第一文件正在迀移过程中,并将所述第一 文件的更新数据发送到所述源分布式子卷和所述目标分布式子卷。
[0017] 在所述第一节点将所述第一文件从源分布式子卷迀移到目标分布式子卷完成之 后,所述方法进一步包括:获取所述第一文件对应的第二文件属性信息,所述第二文件属性 信息包括文件已经完成迀移的标记或者不包括文件正在迀移的标记;根据所述第二文件属 性信息,确定所述第一文件已经完成迀移,并将所述第一文件的更新数据发送到所述目标 分布式子卷。
[0018] 本发明提供一种文件迀移的装置,所述装置具体包括:
[0019] 第一选择模块,用于从所有待迀移文件中选择出优先级最高的第一文件;
[0020] 第二选择模块,用于利用全局数据集合中的每个节点的权重选择第一节点;所述 全局数据集合中记录了分布式存储系统中的每个节点与权重的对应关系;
[0021 ]迀移模块,用于通过第一节点将所述第一文件从源分布式子卷迀移到目标分布式 子卷;
[0022] 处理模块,用于在所述全局数据集合中增加所述第一节点的权重,设置所述第一 文件不是待迀移文件,如果当前还存在待迀移文件,则由所述第一选择模块执行从所有待 迀移文件中选择出优先级最高的第一文件的过程。
[0023] 所述第二选择模块,具体用于在利用全局数据集合中的每个节点的权重选择第一 节点的过程中,通过查询所述第一文件所在的源分布式子卷对应的局部集合,得到所述源 分布式子卷包含的各节点;从所述全局数据集合中查询到所述源分布式子卷包含的各节点 的权重,并选择权重最小的节点为所述第一节点;或者,从全局数据集合中选择权重最小的 节点,并判断当前选择的节点是否位于所述第一文件所在的源分布式子卷对应的局部集合 中;如果是,将当前选择的节点确定为所述第一节点;如果否,从所述全局数据集合中选择 权重第二小的节点,并继续执行判断当前选择的节点是否位于所述局部集合的过程,一直 到当前选择的节点位于所述局部集合,并将当前选择的节点确定为所述第一节点;其中,所 述局部集合中记录了所述源分布式子卷包含的各节点。
[0024]所述处理模块,还用于在通过第一节点将所述第一文件从源分布式子卷迀移到目 标分布式子卷之后,在所述第一节点将所述第一文件从源分布式子卷迀移到目标分布式子 卷完成后,在所述全局数据集合中降低所述第一节点的权重。
[0025] 所述装置还包括:
[0026] 获取模块,用于在所述第一文件从源分布式子卷到目标分布式子卷的迀移过程 中,获取所述第一文件对应的第一文件属性信息,所述第一文件属性信息包括文件正在迀 移的标记、所述目标分布式子卷的信息;
[0027]发送模块,用于根据所述第一文件属性信息,确定所述第一文件正在迀移过程中, 并将所述第一文件的更新数据发送到所述源分布式子卷和所述目标分布式子卷。
[0028]所述获取模块,还用于在将所述第一文件从源分布式子卷迀移到目标分布式子卷 完成之后,获取所述第一文件对应的第二文件属性信息,所述第二文件属性信息包括文件 已经完成迀移的标记或者不包括文件正在迀移的标记;
[0029]所述发送模块,还用于根据所述第二文件属性信息,确定所述第一文件已经完成 迀移,并将所述第一文件的更新数据发送到所述目标分布式子卷。
[0030] 基于上述技术方案,本发明实施例中,在需要迀移文件时,可以动态选择用于进行 文件迀移的节点,可以让源分布式子卷包含的所有节点都参与文件迀移,当需要迀移的文 件数量较多时,由多个节点共同完成文件迀移,可以提高文件迀移速度,避免出现某个节点 压力过大的情况,不影响各节点的处理性能,让节点的压力负载达到均衡,同时确保在文件 迀移前后的数据一致性。
【附图说明】
[0031] 为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明 实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的 附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些 附图获得其他的附图。
[0032] 图1是分布式存储系统的组网示意图;
[0033] 图2是分布式子卷内的文件迀移示意图;
[0034] 图3是本发明一种实施方式中的文件迀移的方法的流程图;
[0035] 图4是本发明另一种实施方式中的文件迀移的方法的流程图;
[0036] 图5是本发明另一种实施方式中的文件迀移过程的示意图;
[0037] 图6是本发明另一种实施方式中的文件迀移的方法的流程图;
[0038]图7是本发明一种实施方式中的控制设备的硬件结构图;
[0039]图8是本发明一种实施方式中的文件迀移的装置的结构图。
【具体实施方式】
[0040] 在本发明使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明。本发 明和权利要求书中所使用的单数形式的"一种"、"所述"和"该"也旨在包括多数形式,除非 上下文清楚地表示其它含义。还应当理解,本文中使用的术语"和/或"是指包含一个或多个 相关联的列出项目的任何或所有可能组合。
[0041] 应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这 些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离 本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第 一信息。取决于语境,此外,所使用的词语"如果"可以被解释成为"在......时"或 "当......时"或"响应于确定"。
[0042] 针对现有技术中存在的问题,本发明实施例中提出了一种文件迀移的方法,该方 法可以应用于分布式存储系统中,如采用DHT算法+EC算法的分布式存储系统。在该分布式 存储系统中,一个文件需要写入到一个分布式子卷中,且每个分布式子卷横跨了N+M个节 点,每个节点相当于一个存储设备,分布式子卷在每个节点中占用一个存储区域,并将文件 存储在该存储区域,该存储区域可以是物理磁盘或者其它存储结构,本发明实施例中对此 存储区域不做限制。
[0043] 如图1所示,在需要写入文件A时,先通过DHT算法得到写入的位置,如分布式子卷 D1。然后通过EC算法,将文件A写入到分布式子卷D1的N+M(在图1中,N为3,M为1)个节点上。 例如,将文件A分成N份,得到N份数据,并将这N份数据分别写入到分布式子卷D1的N个节点 上,并将文件A对应的冗余数据写入到分布式子卷D1的M个节点上。其中,文件A对应的冗余 数据可以由EC算法决定,如可以是文件A的校验数据,本发明实施例中对此不做限制,文件A 对应的冗余数据的作用是:当文件A的数据发生丢失时,使用该冗余数据恢复文件A。例如, 当文件A在节点1上存储的数据发生丢失时,可以使用存储在节点4上的冗余数据对丢失数 据进行恢复,以得到文件A。
[0044] 在一个例子中,如图2所示,当分布式子卷D1内写入的文件较多,而分布式子卷D2 内写入的文件较少,从而出现不平衡的情况时,则可以采用数据平衡算法,在各个分布式子 卷内迀移文件,以使每个分布式子卷内的文件数量接近,确保DHT的性能。例如,将分布式子 卷D1内的文件A、文件B、文件C迀移到分布式子卷D2,以保证分布式子卷D1和分布式子卷D2 内的文件数量大体平衡。在这个例子中,可以将分布式子卷D1称为源分布式子卷,并将分布 式子卷D2称为目标分布式子卷,而且将文件A、文件B、文件C称为待迀移文件。
[0045] 本发明实施例中,该文件迀移的方法可以应用于控制设备上,该控制设备可以为 客户端、服务器、以及控制节点。其中,客户端可以位于PC(Personal Computer,个人计算 机)上,用于帮助各节点完成文件迀移功能。服务器可以位于云平台、或者其它网络中,用于 帮助各节点完成文件迀移功能。在一个例子中,可以将分布式存储系统的所有节点(即所有 存储设备)作为一个集群,且从所有节点中选择一个节点(如选择第一个节点),由该节点实 现所述集群的控制,可以将该节点称为控制节点,其本质是集群内的一个存储设备。本发明 实施例中提出的文件迀移的方法,也可以应用在该控制节点上。
[0046] 在一个例子中,可以预先配置全局数据集合,并针对每个分布式子卷配置一个局 部集合。其中,该全局数据集合中记录了分布式存储系统中的每个节点与权重的对应关系, 且分布式子卷对应的局部集合中记录了该分布式子卷包含的各节点。在一个例子中,全局 数据集合可以通过全局数据表实现,也可以通过其它类型文件实现,局部集合可以通过局 部表实现,也可以通过其它类型文件实现,本发明实施例中对此全局数据集合/局部集合的 形式不做限制。
[0047] 例如,在初始状态下,分布式存储系统包括节点1、节点2、节点3、节点4,分布式子 卷D1、分布式子卷D2、分布式子卷D3内的文件占用节点1、节点2、节点3、节点4。在后续过程 中,对分布式存储系统进行扩容,增加一个节点5,且分布式子卷D4内的文件占用节点1、节 点2、节点3、节点5。
[0048]基于此,全局数据集合可以如表1所示,分布式子卷D1对应的局部集合内可以包括 节点1、节点2、节点3、节点4,其它分布式子卷的局部集合与分布式子卷D1对应的局部集合 类似,后续不再进行赘述。在另一个例子中,还可以通过表2所示的局部表,记录各分布式子 卷的局部集合。在实际应用中,表1、表2中的各节点,可以使用各节点的唯一标识来表示,如 各节点的IP地址。在表1中,各节点对应的权重的初始值可以为〇,后续对该权重进行调整。
[0053] 在上述应用场景下,如图3所示,该文件迀移的方法可以包括以下步骤:
[0054]步骤301,从所有待迀移文件中选择出优先级最高的第一文件。
[0055]在一个例子中,可以获取每个待迀移文件的文件大小,并按照文件大小为每个待 迀移文件划分优先级;其中,文件大小越大的待迀移文件,其优先级越高。基于各待迀移文 件的优先级,可以从所有待迀移文件中选择出优先级最高的第一文件。当然,也可以选择其 它优先级划分方式,为每个待迀移文件划分优先级,本发明实施例中对此优先级划分方式 不做限制。
[0056]步骤302,利用全局数据集合中的每个节点的权重选择第一节点。
[0057] 步骤303,通过第一节点将第一文件从源分布式子卷迀移到目标分布式子卷,即向 第一节点下发第一文件的迀移通知,由第一节点在接收到该迀移通知之后,将该第一文件 从源分布式子卷迀移到目标分布式子卷。
[0058] 步骤304,在全局数据集合中增加第一节点的权重,并设置第一文件不是待迀移文 件。如果当前存在待迀移文件,则返回步骤302;否则,结束流程。
[0059] 其中,在由第一节点迀移第一文件时,通过增加第一节点的权重,从而避免第一节 点的权重始终最小,避免由一个节点来迀移所有待迀移文件,让源分布式子卷包含的所有 节点都参与文件迀移,提高文件迀移速度,避免出现某个节点压力过大的情况,不影响各节 点的处理性能,让节点的压力负载达到均衡。
[0060] 在一个例子中,利用全局数据集合中的每个节点的权重选择第一节点的过程,具 体可以包括但不限于如下方式:方式一、通过查询第一文件所在的源分布式子卷对应的局 部集合,得到该源分布式子卷包含的各节点;从全局数据集合中查询到该源分布式子卷包 含的各节点的权重,并选择权重最小的节点为第一节点。或者,方式二、从全局数据集合中 选择权重最小的节点,并判断当前选择的节点是否位于第一文件所在的源分布式子卷对应 的局部集合中;如果是,则将当前选择的节点确定为第一节点;如果否,则从全局数据集合 中选择权重第二小的节点,并继续执行判断当前选择的节点是否位于局部集合的过程,一 直到当前选择的节点位于局部集合,并将当前选择的节点确定为第一节点。
[0061] 通过上述实现方式,可以保证第一节点是第一文件的一个存储节点,从而可以减 少数据的传输,避免传输资源的浪费,提高资源利用率。而且,通过上述实现方式,可以保证 第一节点是第一文件的存储节点中权重最小的节点(即传输压力最轻的节点),因此,可以 使用传输压力最轻的节点来迀移优先级最高的第一文件,而优先级最高的第一文件是文件 大小最大的待迀移文件,因此,本发明实施例的上述技术方案,是使用传输压力最轻的节点 来迀移最大的待迀移文件,从而可以合理的利用各节点的传输性能,在各节点之间负载分 担。
[0062] 在一个例子中,在通过第一节点将第一文件从源分布式子卷迀移到目标分布式子 卷之后,当第一节点将第一文件从源分布式子卷迀移到目标分布式子卷完成之后,则还可 以在全局数据集合中降低该第一节点的权重。
[0063] 通过上述实现方式,当第一文件迀移完成后,通过降低该第一节点的权重,使得该 第一节点又可以传输其它文件,保证各节点的合理使用,避免该第一节点在第一文件迀移 完成后,仍然由于权重过高,导致无法传输文件的问题。
[0064] 在一个例子中,在第一文件从源分布式子卷到目标分布式子卷的迀移过程中,还 可以获取该第一文件对应的第一文件属性信息,其中,该第一文件属性信息可以包括但不 限于:文件正在迀移的标记、目标分布式子卷的信息;进一步的,根据该第一文件属性信息, 可以确定该第一文件正在迀移过程中,并将该第一文件的更新数据发送到源分布式子卷和 目标分布式子卷。
[0065] 在一个例子中,在第一节点将第一文件从源分布式子卷迀移到目标分布式子卷完 成之后,还可以获取该第一文件对应的第二文件属性信息,其中,该第二文件属性信息可以 包括但不限于:文件已经完成迀移的标记或者不包括文件正在迀移的标记;进一步的,根据 该第二文件属性信息,可以确定该第一文件已经完成迀移,并将该第一文件的更新数据发 送到目标分布式子卷。
[0066] 基于上述技术方案,本发明实施例中,在需要迀移文件时,可以动态选择用于进行 文件迀移的节点,可以让源分布式子卷包含的所有节点都参与文件迀移,当需要迀移的文 件数量较多时,由多个节点共同完成文件迀移,可以提高文件迀移速度,避免出现某个节点 压力过大的情况,不影响各节点的处理性能,让节点的压力负载达到均衡,同时确保在文件 迀移前后的数据一致性。
[0067] 以下结合图4所示的流程图,对本发明实施例的文件迀移的方法进行说明。
[0068]步骤401,预先配置全局数据集合,并针对每个分布式子卷配置一个局部集合。其 中,该全局数据集合中记录了分布式存储系统中的每个节点与权重的对应关系,且分布式 子卷对应的局部集合中记录了该分布式子卷包含的各节点。
[0069] 为了方便说明,后续以全局数据集合如表3,局部集合如表2为例。
[0070] 表 3
[0073] 在一个例子中,在Rebalance机制被触发之后,贝lj需要迀移源分布式子卷内的文 件。如果只有一个源分布式子卷内的文件需要迀移,则针对该源分布式子卷进行后续处理。 如果有多个源分布式子卷内的文件需要迀移,则每个源分布式子卷的处理方式相同,后续 以一个源分布式子卷的处理为例进行说明。
[0074]步骤402,获取每个待迀移文件的文件大小,并按照该文件大小为每个待迀移文件 划分优先级;其中,文件大小越大的待迀移文件,其优先级越高。
[0075]例如,在需要将分布式子卷D1内的文件A、文件B、文件C迀移到分布式子卷D2时,可 以将分布式子卷D1称为源分布式子卷,并将分布式子卷D2称为目标分布式子卷,而且将文 件A、文件B、文件C称为待迀移文件。基于此,可以分别获取文件A、文件B、文件C的文件大小, 并按照各文件大小为文件A、文件B、文件C划分优先级。例如,假设文件A的文件大小大于文 件B的文件大小,文件B的文件大小大于文件C的文件大小,则文件A的优先级高于文件B的优 先级,文件B的优先级高于文件C的优先级。
[0076] 步骤403,从所有待迀移文件中选择出优先级最高的第一文件。例如,从待迀移的 文件A、文件B、文件C中选择出优先级最高的文件A(即第一文件)。
[0077] 步骤404,从全局数据集合中选择权重最小的节点。例如,基于表2所示的全局数据 集合,则从全局数据集合中选择的权重最小的节点为节点2。
[0078] 其中,全局数据集合中的权重最小的节点是指传输压力最轻的节点。
[0079] 步骤405,判断当前选择的节点是否位于第一文件所在的源分布式子卷对应的局 部集合中。如果是,则执行步骤406。如果否,则从全局数据集合中选择权重第二小的节点, 并继续执行步骤405。再次执行步骤405时,如果判断结果为否,则从全局数据集合中选择权 重第三小的节点,并继续执行步骤405。以此类推,一直到当前选择的节点位于对应的局部 集合中,并执行步骤406。
[0080] 例如,判断当前选择的节点2是否位于文件A所在的分布式子卷1对应的局部集合, 通过查询表2可以获知,节点2位于分布式子卷1对应的局部集合。
[0081 ]步骤406,将当前选择的节点确定为第一节点,即第一节点为节点2。
[0082] 步骤407,通过第一节点将第一文件从源分布式子卷迀移到目标分布式子卷,即向 第一节点下发第一文件的迀移通知,由第一节点在接收到该迀移通知之后,将该第一文件 从源分布式子卷迀移到目标分布式子卷。
[0083]由于第一节点是全局数据集合中的权重最小的节点2,因此,是通过传输压力最轻 的节点2来传输最大的文件A,从而可以合理利用各节点的传输性能。
[0084] 在一个例子中,在节点2将文件A从分布式子卷D1迀移到分布式子卷D2的过程中, 节点2从节点1上获取到文件A的部分数据,从节点3上获取到文件A的部分数据。节点2将节 点2上的文件A的部分数据、节点1上的文件A的部分数据、节点3上的文件A的部分数据,组合 在一起,得到一个完整的文件A。节点2将文件A写入到分布式子卷D2,例如,节点2将文件A分 成3份,得到3份数据,将这3份数据分别写入到分布式子卷D2的节点1、节点2、节点3上,将文 件A对应的冗余数据写入到分布式子卷D2的节点4上。
[0085]其中,节点2在收集文件A的数据时,由于节点4中存储的是文件A对应的冗余数据, 因此,节点2不需要收集节点4中存储的冗余数据。
[0086] 在一个例子中,节点2将文件A从分布式子卷D1迀移到分布式子卷D2完成之后,节 点2还可以从分布式子卷D1中删除文件A对应的所有数据。例如,节点2从节点1、节点2、节点 3、节点4中删除文件A对应的所有数据。
[0087]通过上述实现方式,由于节点2是文件A的一个存储节点,因此在收集文件A的数据 时,不需要从节点2上收集数据,只需要从节点1和节点3上收集数据,从而可以减少数据的 传输,避免传输资源的浪费,提高资源利用率。
[0088]步骤408,在全局数据集合中增加第一节点的权重,并设置第一文件不是待迀移文 件。例如,在全局数据集合中增加节点2的权重,如表4所示,并设置文件A不再是待迀移文 件,文件A当前正在进行迀移或者已经完成迀移。
[0089] 其中,在增加节点2的权重时,可以将节点2的权重加1,或者加2,或者加3等,本发 明实施例中对于权重增加的数值不做限制,可以任意配置。
[0090] 表 4
[0092]步骤409,判断当前是否还存在待迀移文件。如果是,则执行步骤403,继续从所有 待迀移文件中选择出优先级最高的第一文件;否则,结束流程。
[0093] 由于当前还存在待迀移文件,即文件B和文件C,因此从所有待迀移文件中选择出 优先级最高的文件B,从全局数据集合中选择权重最小的节点3,由节点3将文件B从分布式 子卷D1迀移到分布式子卷D2,在全局数据集合中增加节点3的权重,并设置文件B不再是待 迀移文件,再次执行步骤409。
[0094] 由于当前还存在待迀移文件,即文件C,因此从所有待迀移文件中选择出优先级最 高的文件C,从全局数据集合中选择权重最小的节点1,由节点1将文件C从分布式子卷D1迀 移到分布式子卷D2,在全局数据集合中增加节点1的权重,并设置文件C不再是待迀移文件, 再次执行步骤409。
[0095]由于当前不存在待迀移文件,因此结束流程,不再返回执行步骤403。
[0096] 在一个例子中,节点2将文件A从分布式子卷D1迀移到分布式子卷D2的过程,与重 新执行步骤403-步骤409的过程没有关系,可以在节点2将文件A从分布式子卷D1迀移到分 布式子卷D2的过程中,执行步骤403-步骤409。
[0097] 在一个例子中,当第一节点将第一文件从源分布式子卷迀移到目标分布式子卷完 成之后,则还可以在全局数据集合中降低该第一节点的权重。进一步的,当第一文件迀移完 成后,通过降低该第一节点的权重,使得该第一节点又可以传输其它文件,保证各节点的合 理使用,避免该第一节点在第一文件迀移完成后,仍然由于权重过高,导致无法传输文件的 问题。例如,当节点2将文件A从分布式子卷D1迀移到分布式子卷D2完成之后,还可以在全局 数据集合中降低该第一节点的权重,如上述增加权重是加2时,则降低权重可以是减2。
[0098] 基于上述技术方案,本发明实施例中,在需要迀移文件时,可以动态选择用于进行 文件迀移的节点,可以让源分布式子卷包含的所有节点都参与文件迀移,当需要迀移的文 件数量较多时,由多个节点共同完成文件迀移,可以提高文件迀移速度,避免出现某个节点 压力过大的情况,不影响各节点的处理性能,让节点的压力负载达到均衡,同时确保在文件 迀移前后的数据一致性。
[0099] 在实际应用中,即使一个节点承担了多个文件的迀移工作,由于每个分布式子卷 内的文件存放空间是独立的,因此也不会出现读取文件冲突的情况。
[0100] 在一个例子中,如图5所示,为文件迀移过程的示意图,当上层业务需要将文件写 入到分布式子卷D1时,可以将文件拆分成N+M份,并将其写入到N+M个节点上。当文件需要迀 移时,基于图4所示的流程,可以由第一节点进行N份数据的收集,再重新计算成N+M份,迀移 到分布式子卷D2的所有节点。
[0101]通常情况下,当分布式子卷D1上的文件需要迀移时,上层业务可能依旧在操作该 文件。基于此,在第一文件从源分布式子卷到目标分布式子卷的迀移过程中,还可以获取第 一文件属性信息,并根据该第一文件属性信息,确定第一文件正在迀移过程中,并将第一文 件的更新数据发送到源分布式子卷和目标分布式子卷。在第一节点将第一文件从源分布式 子卷迀移到目标分布式子卷完成之后,还可以获取第二文件属性信息,并根据第二文件属 性信息,确定第一文件已经完成迀移,并将第一文件的更新数据发送到目标分布式子卷。 [0102]由于是将第一文件的更新数据同时发送到源分布式子卷和目标分布式子卷,因 此,如果发送给源分布式子卷或者目标分布式子卷的更新数据发生丢失,也不会导致文件 出现错误,从而保证该文件在迀移前后的数据一致性。
[0103] 在一个例子中,可以由部署在控制设备上的API(Application Programming Interface,应用程序编程接口)模块执行本发明实施例的上述各步骤。在此应用场景下,以 下结合图6所示的流程图,对上述文件迀移的方法进行详细说明。
[0104]步骤601,上层业务对分布式子卷D1上的文件A持续写入。
[0105]步骤602, API模块将文件A的数据写入到分布式子卷D1。
[0106]步骤603,当文件A需要被迀移时,API模块获取文件A的文件属性信息,该文件属性 信息可以包括文件正在迀移的标记、分布式子卷D2的信息。
[0107]步骤604,API模块根据该文件属性信息,确定文件A正在迀移过程中,并将该文件A 的更新数据发送到分布式子卷D1和分布式子卷D2。
[0108] 其中,文件A已经存储的数据也正从分布式子卷D1迀移到分布式子卷D2。
[0109] 在一个例子中,文件A的更新数据可能是追加于文件A末尾的数据,也可能是对文 件A的修改数据(如替换文件A中的数据,或者删除文件A中的数据)。
[0110] 当文件A的更新数据是追加于文件A末尾的数据时,由于需要从分布式子卷D1迀移 到分布式子卷D2的数据长度已经确定,因此,发送到分布式子卷D1的文件A的更新数据,不 会被迀移到分布式子卷D2,不会对原数据造成影响。
[0111] 当文件A的更新数据是对文件A的修改数据时,如果将文件A的更新数据发送到分 布式子卷D1后,在分布式子卷D1上已经对文件A进行修改,则在将文件A迀移到分布式子卷 D2后,不再对文件A进行修改。如果将文件A的更新数据发送到分布式子卷D1后,在分布式子 卷D1上没有对文件A进行修改,则在将文件A迀移到分布式子卷D2后,由于分布式子卷D2上 也存在文件A的更新数据,因此可以利用分布式子卷D2上的更新数据对文件A进行修改。
[0112] 由于是将第一文件的更新数据同时发送到源分布式子卷和目标分布式子卷,因 此,如果发送给源分布式子卷或者目标分布式子卷的更新数据发生丢失,也不会导致文件 出现错误,从而保证该文件在迀移前后的数据一致性。
[0113] 步骤605,当文件A迀移完成后,API模块获取文件A的文件属性信息,该文件属性信 息可以包括文件已经完成迀移的标记或者不包括文件正在迀移的标记,在这两种情况下, 均表示文件A已经完成迀移。
[0114] 步骤606,API模块根据该文件属性信息,确定文件A已经完成迀移,并将该文件A的 更新数据发送到分布式子卷D2,而不再将文件A的更新数据发送到分布式子卷D1,而且,还 可以从分布式子卷D1内删除文件A。
[0115] 基于与上述方法同样的发明构思,本发明实施例中还提供了一种文件迀移的装 置,该文件迀移的装置应用在控制设备上。其中,该文件迀移的装置可以通过软件实现,也 可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置, 是通过其所在的控制设备的处理器,读取非易失性存储器中对应的计算机程序指令形成 的。从硬件层面而言,如图7所示,为本发明提出的文件迀移的装置所在的控制设备的一种 硬件结构图,除了图7所示的处理器、非易失性存储器外,控制设备还可以包括其他硬件,如 负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该控制设备还可能是分 布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
[0116]如图8所示,为本发明提出的文件迀移的装置的结构图,所述装置包括:
[0117] 第一选择模块11,用于从所有待迀移文件中选择出优先级最高的第一文件;第二 选择模块12,用于利用全局数据集合中的每个节点的权重选择第一节点;所述全局数据集 合中记录分布式存储系统中的每个节点与权重的对应关系;迀移模块13,用于通过第一节 点将所述第一文件从源分布式子卷迀移到目标分布式子卷;处理模块14,用于在所述全局 数据集合中增加所述第一节点的权重,设置所述第一文件不是待迀移文件,如果当前还存 在待迀移文件,则由所述第一选择模块12执行从所有待迀移文件中选择出优先级最高的第 一文件的过程。
[0118] 在一个例子中,所述文件迀移的装置还包括:获取模块(在图中未视出),用于获取 每个待迀移文件的文件大小,按照所述文件大小为所述每个待迀移文件划分优先级;文件 大小越大的待迀移文件,其优先级越高。
[0119] 所述第二选择模块12,具体用于在利用全局数据集合中的每个节点的权重选择第 一节点的过程中,通过查询所述第一文件所在的源分布式子卷对应的局部集合,得到所述 源分布式子卷包含的各节点;从所述全局数据集合中查询到所述源分布式子卷包含的各节 点的权重,并选择权重最小的节点为所述第一节点;或者,从全局数据集合中选择权重最小 的节点,并判断当前选择的节点是否位于所述第一文件所在的源分布式子卷对应的局部集 合中;如果是,将当前选择的节点确定为所述第一节点;如果否,从所述全局数据集合中选 择权重第二小的节点,并继续执行判断当前选择的节点是否位于所述局部集合的过程,一 直到当前选择的节点位于所述局部集合,并将当前选择的节点确定为所述第一节点;其中, 所述局部集合中记录了所述源分布式子卷包含的各节点。
[0120] 所述处理模块14,还用于在通过第一节点将所述第一文件从源分布式子卷迀移到 目标分布式子卷后,在所述第一节点将所述第一文件从源分布式子卷迀移到目标分布式子 卷完成后,在所述全局数据集合中降低所述第一节点的权重。
[0121] 所述获取模块,还用于在所述第一文件从源分布式子卷到目标分布式子卷的迀移 过程中,获取所述第一文件对应的第一文件属性信息,所述第一文件属性信息包括文件正 在迀移的标记、所述目标分布式子卷的信息;
[0122] 所述装置还包括:发送模块(在图中未体现),用于根据所述第一文件属性信息,确 定所述第一文件正在迀移过程中,并将所述第一文件的更新数据发送到所述源分布式子卷 和所述目标分布式子卷。
[0123] 所述获取模块,还用于在将所述第一文件从源分布式子卷迀移到目标分布式子卷 完成之后,获取所述第一文件对应的第二文件属性信息,所述第二文件属性信息包括文件 已经完成迀移的标记或者不包括文件正在迀移的标记;
[0124] 所述发送模块,还用于根据所述第二文件属性信息,确定所述第一文件已经完成 迀移,并将所述第一文件的更新数据发送到所述目标分布式子卷。
[0125] 其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合 并为一个模块,也可以进一步拆分成多个子模块。
[0126] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助 软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更 佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的 部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若 干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发 明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图, 附图中的模块或流程并不一定是实施本发明所必须的。
[0127] 本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分 布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上 述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例 序号仅仅为了描述,不代表实施例的优劣。
[0128] 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领 域的技术人员能思之的变化都应落入本发明的保护范围。
【主权项】
1. 一种文件迀移的方法,其特征在于,所述方法包括以下步骤: 从所有待迀移文件中选择出优先级最高的第一文件; 利用全局数据集合中的每个节点的权重选择第一节点;其中,所述全局数据集合中记 录了分布式存储系统中的每个节点与权重的对应关系; 通过第一节点将所述第一文件从源分布式子卷迀移到目标分布式子卷; 在所述全局数据集合中增加所述第一节点的权重,设置所述第一文件不是待迀移文 件,如果当前还存在待迀移文件,则返回执行从所有待迀移文件中选择出优先级最高的第 一文件的过程。2. 根据权利要求1所述的方法,其特征在于,所述利用全局数据集合中的每个节点的权 重选择第一节点的过程,具体包括: 通过查询所述第一文件所在的源分布式子卷对应的局部集合,得到所述源分布式子卷 包含的各节点;从所述全局数据集合中查询到所述源分布式子卷包含的各节点的权重,并 选择权重最小的节点为所述第一节点;或者, 从全局数据集合中选择权重最小的节点,并判断当前选择的节点是否位于所述第一文 件所在的源分布式子卷对应的局部集合中;如果是,将当前选择的节点确定为所述第一节 点;如果否,从所述全局数据集合中选择权重第二小的节点,并继续执行判断当前选择的节 点是否位于所述局部集合的过程,一直到当前选择的节点位于所述局部集合,并将当前选 择的节点确定为所述第一节点; 其中,所述局部集合中记录了所述源分布式子卷包含的各节点。3. 根据权利要求1所述的方法,其特征在于,所述通过第一节点将所述第一文件从源分 布式子卷迀移到目标分布式子卷之后,所述方法还包括: 在所述第一节点将所述第一文件从源分布式子卷迀移到目标分布式子卷完成之后,则 在所述全局数据集合中降低所述第一节点的权重。4. 根据权利要求1-3任一项所述的方法,其特征在于,在所述第一文件从源分布式子卷 到目标分布式子卷的迀移过程中,所述方法进一步包括: 获取所述第一文件对应的第一文件属性信息,所述第一文件属性信息包括文件正在迀 移的标记、所述目标分布式子卷的信息; 根据所述第一文件属性信息,确定所述第一文件正在迀移过程中,并将所述第一文件 的更新数据发送到所述源分布式子卷和所述目标分布式子卷。5. 根据权利要求4所述的方法,其特征在于,在所述第一节点将所述第一文件从源分布 式子卷迀移到目标分布式子卷完成之后,所述方法进一步包括: 获取所述第一文件对应的第二文件属性信息,所述第二文件属性信息包括文件已经完 成迀移的标记或者不包括文件正在迀移的标记; 根据所述第二文件属性信息,确定所述第一文件已经完成迀移,并将所述第一文件的 更新数据发送到所述目标分布式子卷。6. -种文件迀移的装置,其特征在于,所述装置具体包括: 第一选择模块,用于从所有待迀移文件中选择出优先级最高的第一文件; 第二选择模块,用于利用全局数据集合中的每个节点的权重选择第一节点;所述全局 数据集合中记录了分布式存储系统中的每个节点与权重的对应关系; 迀移模块,用于通过第一节点将所述第一文件从源分布式子卷迀移到目标分布式子 卷; 处理模块,用于在所述全局数据集合中增加所述第一节点的权重,设置所述第一文件 不是待迀移文件,如果当前还存在待迀移文件,则由所述第一选择模块执行从所有待迀移 文件中选择出优先级最高的第一文件的过程。7. 根据权利要求6所述的装置,其特征在于, 所述第二选择模块,具体用于在利用全局数据集合中的每个节点的权重选择第一节点 的过程中,通过查询所述第一文件所在的源分布式子卷对应的局部集合,得到所述源分布 式子卷包含的各节点;从所述全局数据集合中查询到所述源分布式子卷包含的各节点的权 重,并选择权重最小的节点为所述第一节点;或者,从全局数据集合中选择权重最小的节 点,并判断当前选择的节点是否位于所述第一文件所在的源分布式子卷对应的局部集合 中;如果是,将当前选择的节点确定为所述第一节点;如果否,从所述全局数据集合中选择 权重第二小的节点,并继续执行判断当前选择的节点是否位于所述局部集合的过程,一直 到当前选择的节点位于所述局部集合,并将当前选择的节点确定为所述第一节点;其中,所 述局部集合中记录了所述源分布式子卷包含的各节点。8. 根据权利要求6所述的装置,其特征在于, 所述处理模块,还用于在通过第一节点将所述第一文件从源分布式子卷迀移到目标分 布式子卷之后,在所述第一节点将所述第一文件从源分布式子卷迀移到目标分布式子卷完 成后,在所述全局数据集合中降低所述第一节点的权重。9. 根据权利要求6-8任一项所述的装置,其特征在于,所述装置还包括: 获取模块,用于在所述第一文件从源分布式子卷到目标分布式子卷的迀移过程中,获 取所述第一文件对应的第一文件属性信息,所述第一文件属性信息包括文件正在迀移的标 记、所述目标分布式子卷的信息; 发送模块,用于根据所述第一文件属性信息,确定所述第一文件正在迀移过程中,并将 所述第一文件的更新数据发送到所述源分布式子卷和所述目标分布式子卷。10. 根据权利要求9所述的装置,其特征在于, 所述获取模块,还用于在将所述第一文件从源分布式子卷迀移到目标分布式子卷完成 之后,获取所述第一文件对应的第二文件属性信息,所述第二文件属性信息包括文件已经 完成迀移的标记或者不包括文件正在迀移的标记; 所述发送模块,还用于根据所述第二文件属性信息,确定所述第一文件已经完成迀移, 并将所述第一文件的更新数据发送到所述目标分布式子卷。
【文档编号】G06F17/30GK105930545SQ201610512718
【公开日】2016年9月7日
【申请日】2016年6月29日
【发明人】江萍, 于相洋
【申请人】浙江宇视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1