远程复制的发送请求处理系统及其方法

文档序号:6612851阅读:138来源:国知局
专利名称:远程复制的发送请求处理系统及其方法
技术领域
本发明是关于一种远程复制的资源分配系统及方法,尤其是关于一种应用
于网络块设备(Network block device, nbd)的远程复制发送线程分配系统 及方法。
背景技术
随着应用对于服务连续性要求的提高以及用户对数据安全性重视程度的 加强,实时远程复制技术应运而生,并且在较短时间内得到广泛的关注。利用 实时远程复制技术可以在不中断应用的前提下实时地在远程建立数据镜像,进 而尽可能地避免因数据丢失或损坏而引发的数据灾难。
但由于大多数产品和技术是基于同步方式发送数据,这样当存在多个远程 复制请求时,在一个请求发送未处理完成之前,其它请求只能串行等待,这使 得系统对请求的处理和响应能力以及效率受到影响。为此,现有技术提出了一 种异步多线程发送方案,采用一个线程接受新的请求,多个线程发送已收到的 请求。实现这种异步方式必然涉及到多线程并发。目前最简单也最容易实现的 方案,如图l显示,是为远程系统20中每一个远程镜像巻22、 24、 26 (其中 每个远程镜像巻是对应一个网络块设备(Network block device, nbd))绑 定一个专属于它的核心发送线程(kernel sender thread) 12、 14、 16,由本 地系统10的上述发送线程负责发送向对应远程镜像巻的输入/输出(i/o)请 求。
但使用这种方式存在两个潜在的问题一是一旦系统中有大量网络块设备
存在,则会产生大量的核心线程(kernel thread),进而增大系统的压力以及 资源占用;二是,我们基本上无法控制其资源的分配,核心线程的执行是由 Linux核心(kernel)调度的,对于我们来说基本上处于不可控状态,也就是 说为每一网络块设备开启一个线程后, 一旦开始执行,接下来的过程就完全交 由Linux核心决定,因此哪个设备在何时发送多少数据都是无法预料的。此外,由于系统中的拷贝操作都要涉及到网络通讯,因此这些操作会争夺 网络资源,这都需要采用一些方法平衡系统中的网络使用。

发明内容
为了解决上述现有技术中的问题与缺陷,本发明的目的在于提供一种远程
复制的发送请求处理是统及方法,是用于具有多个网络块设备(Network block device, nbd)的本地系统中,藉以实现异歩多线程数据发送,不仅提高设备 的处理和响应能力,还能在存在大量远程镜像巻(remote volume mirror)的 情况下减少多线程带来的系统资源消耗。
本发明所提供的一种远程复制的发送请求处理系统,是包含一创建模块、 一链表模块、 一指针模块、 一线程分配模块、 一请求接受模块以及一请求处理 模块;在此,创建模块是用于在本地系统中创建固定数量的发送线程,以形成 一发送线程池。链表模块用于将接收到向对应远程镜像巻写请求的所有网络块 设备串接为一循环链表(circular linked list)。指针模块是设定一指针顺序 记录循环链表中的最新处理的网络块设备,以及在每次完成最新处理的网络块 设备的发送请求后,依照循环链表的网络块设备顺序,依次移动指针至下一个 网络块设备,其中指针的起始位置是指向循环链表头(list head)。线程分 配模块用于分配发送线程池中的发送线程主动寻找欲处理的下一个网络块设 备。请求接受模块负责接受新的请求并将请求加入到相应块设备的请求发送队 列中。请求处理模块是利用发送线程对指针指向的网络块设备的处理加锁,并 处理此网络块设备的发送请求。
对于本地系统的每一原巻建立有一或多个远程镜像巻的情况,本发明的发 送请求处理系统更包含一权重模块,以设定本地系统的每一原巻的发送请求权 重,以分配每一原巻的网络块设备向对应远程镜像巻发送请求的批量大小。
此外,本发明还提供一种远程复制的发送请求处理方法,是应用于具有多 个网络块设备的本地系统中,此方法包含以下步骤于本地系统中创建固定数 量的发送线程,以形成一发送线程池;将接收到向对应远程镜像巻写请求的所 有网络块设备串接为一循环链表;设定一指针以顺序记录循环链表中的最新处 理的网络块设备,其中指针的起始位置是指向循环链表头(List head);分 配发送线程池中的发送线程,以按照循环链表顺序主动寻找指针指向的欲处理网络块设备;利用发送线程对指针指向的网络块设备的处理进行加锁,并处理
此网络块设备的发送请求;以及依照循环链表的网络块设备顺序,每次完成发
送请求后,依次移动指针至下一个网络块设备并同样执行对应网络块设备的发
送请求。
对于本地系统的每一原巻建立有一或多个远程镜像巻的情况,本发明的发 送请求处理方法更包含为本地系统的每一原巻设定一发送请求权重的步骤,以 分配每一原巻的网络块设备向对应远程镜像巻发送请求的批量大小。
本发明透过创建固定数目的发送线程,来处理更多数目的网络块设备向远 程镜像的发送请求,进而实现异歩多线程数据发送,不仅能够提高设备的处理 和响应能力,还可以在存在大量远程镜像巻的情况下减少多线程带来的系统资 源消耗。并且,透过设定每一原巻的发送请求权重,进而能够对发送过程和资 源占用进行一定程度的控制。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的
限定。


图l为现有技术远程复制的发送请求处理结构示意图2为本发明的第一实施例的远程复制的发送请求处理结构示意图3为本发明的第二实施例的远程复制的发送请求处理结构示意图4为本发明的第一实施例的远程复制的发送请求处理方法步骤流程图5为本发明的第二实施例的远程复制的发送请求处理方法步骤流程图。
其中,附图标记
10 本地系统
12 发送线程
14 发送线程
16 发送线程
20 远程系统
22 远程镜像巻
24 远程镜像巻
26 远程镜像巻100 本地系统
102 线程池 112 发送线程 114 发送线程 116 发送线程 200 远程系统
212 远程镜像巻
213 远程镜像巻
214 远程镜像巻 216 远程镜像巻 nbdl 网络块设备 nbd2 网络块设备 nbd_n网络块设备
步骤302创建固定数量的发送线程,以形成一发送线程池 步骤304将接收到向远程镜像巻写请求的所有网络块设备串接为一循环链 表
步骤306设定一指针以顺序记录循环链表中的最新处理的网络块设备 步骤308分配发送线程池中的发送线程,以按照指针链表顺序主动寻找欲处
理的网络块设备 步骤310指针指向的网络块设备正由其它发送线程处理? 步骤312利用发送线程加锁,处理当前指针指向的网络块设备的发送请求队

步骤314发送线程进入下一个处理周期 步骤316循环链表是否为空
步骤318向后移动指针至当前最新处理网络块设备的下一个网络块设备 步骤402分别将属于同一原巻的多个远程镜像巻对应的网络块设备串接为 一队列链表
步骤404将依照本地系统的每一原巻串接的多个队列链表串接为一循环链 表
步骤406设定一指针以顺序记录最新处理的某一原巻下的网络块设备队列链表
步骤40S分配发送线程池中的发送线程,以按照指针链表顺序主动寻找欲处 理的网络块设备
步骤410指针指向的网络块设备正由其它发送线程处理?
步骤412利用发送线程加锁,依次处理当前指针指向的队列链表中的多个网
络块设备的发送请求 步骤414发送线程进入下一个处理周期 步骤416循环链表是否为空
步骤418 向后移动指针至当前最新处理网络块设备的下一个原巻
具体实施例方式
有关本发明的特征与实施,兹配合图示作最佳实施例详细说明如下。
本发明的发送请求处理系统包含创建模块、链表模块、指针模块、线程分 配模块、请求接受模块以及请求处理模块。下面结合图2详细说明本发明的 远程复制发送请求处理系统的组成及原理。图2表示了本发明的第一实施例 的远程复制的发送请求处理结构示意图,其中创建模块在本地系统100中创建 固定数量(例如m个)的发送线程112、 114、 116等,以形成一发送线程池 102。在此实施例中,是以远程镜像巻为单位进行发送线程分配,即本地系统 100中每个原巻仅创建一个网络块设备(Network block device, nbd),且 每个远程镜像巻对应唯一一个网络块设备。
链表模块用于将接收到向远程系统200内对应远程镜像巻212、 214、 216 (数量为n个)写请求的所有网络块设备nbdl、 nbd2、 nbd—n、(对应数量为 n个)串接为一循环链表。指针模块是设定一指针,以顺序记录循环链表中的 最新处理的网络块设备,其中指针的起始位置是指向循环链表头(list head)。
线程分配模块用于从线程池102中动态分配发送线程,以按照循环链表顺 序主动寻找指针指向的欲处理网络块设备。
线程分配模块分配发送线程主动寻找欲处理网络块设备节点的原理如下 :在每个处理周期内发送线程移动指向正在被处理的网络块设备的指针,然后 判断有没有其它线程在处理当前指向的设备,如果有则进入下一个周期。如果 没有,则处理此网络块设备的请求。处理完成后,则进入下一个周期。如此,发送线程一直工作,不会发生等待。直到队列中没有网络块设备需要处理,线 程则进入等待状态。
本发明的发送请求处理系统还包含请求接受模块,以负责接受新的发送请 求,并作出响应,将此新请求加入到对应网络块设备的发送请求队列中。请求 处理模块则利用此发送线程处理链表中一网络块设备向对应远程镜像巻的发 送请求。当发送线程执行操作时,首先判断设备链表是否为空,若链表非空, 则表示指针当前指向的最新处理网络块设备之后仍存在未处理请求的网络块 设备。因此,指针模块移动指针向下一个网络块设备。并由请求处理模块利用 发送线程对此网络块设备的处理进行加锁,以仅处理此时指针指向的网络块设 备的发送队列。
请求处理模块在每次完成最新处理的网络块设备的发送请求后,按照相同 方式重复执行上述链表判断操作,并且相应地指针模块依照循环链表的网络块 设备顺序,依次移动指针至下一个网络块设备,以定位下一个需要处理的请求。 直至链表为空,即完成所有链表中网络块设备的发送请求时结束。
透过上述发送请求处理系统能够实现数据的异步发送,使用多线程方式在 一定程度上提高了处理能力,在存在大量网络块设备时减少了资源消耗。由于 每次在处理请求队列时加锁,因此不会存在多个线程同时处理一个网络块设备 请求队列的问题,这样保证了数据的时序性,并保证每个网络块设备具有基本 相等的机会被处理。
现在请参考图3,此图为本发明的第二实施例的远程复制的发送请求处理 结构示意图。与第一实施例不同,本实施例是应用于每一原巻建立有多个远程 镜像巻(每个远程镜像巻对应一个网络块设备)的本地系统100中。即,如图
3显示,本地系统100中包含原巻1、原巻2、原巻N等,每个原巻中则包含 多个网络块设备,以对应其创建的多个远程镜像巻。例如原巻1包含的网络块 设备对应于远程镜像巻212至远程镜像巻213的间的j个镜像巻,而总共N 个原巻包含的网络块设备对应包含远程镜像巻216的n个远程镜像巻。
当时当某一原巻存在大量远程镜像巻时,发送线程在大多情况下可能仅处 理同一原巻的远程镜像巻对应的网络块设备的请求数据发送,因此其它原巻被 处理的机会较小。为此,本实施例以原巻为单位进行发送线程的分配,以能够 使得所有原巻的远程镜像巻具有大致相等的处理机会。因此,这里链表模块分别将属于同一原巻的多个远程镜像巻对应的网络块 设备串接为一队列链表,然后将包含多个串接队列链表的每一原巻串接为一循 环链表。请求处理模块当执行发送线程时,首先判断设备链表是否为空,若链 表非空,则加锁依次处理队列链表中的多个网络块设备向对应远程镜像巻的发 送请求。与第一实施例相同,指针模块是利用指针记录当前最新处理的某一原 巻下的网络块设备队列链表,并在完成队列链表中的多个网络块设备的发送请 求后,向后移动指针至下一个包含同一原巻的多个远程镜像巻对应的网络块设 备的队列链表。
与第一实施例相同,请求处理模块在每次完成最新处理的某一原巻下的网 络块设备队列链表的发送请求后,按照相同方式重复执行链表判断操作,并且 相应地指针模块依照循环链表的原巻顺序,依次移动指针至下一个包含同一原 巻的多个远程镜像巻对应的网络块设备的队列链表,以定位下一个需要处理的 请求。直至链表为空,即完成所有链表中网络块设备的发送请求时。
另外,本发明的发送请求处理系统更包含一权重模块,以设定本地系统 100的每一原巻的发送请求权重,进而分配每一原巻的网络块设备向对应远程 镜像巻发送请求的批量大小。发送线程的处理方式与第一实施例大致相同,只 是每次移动完当前指针后,依次处理相同原巻的所有远程镜像巻的一个单位的 请求后再进入下一次定位。这里,单位值取决于原巻设定的权重,其中随着权 重的增大表示对此原巻分配的资源越大。
下面,将结合图4与图5,对本发明的远程复制的发送请求处理方法作 出说明。图4为本发明的第一实施例的远程复制的发送请求处理方法步骤流 程图;以及图5为本发明的第二实施例的远程复制的发送请求处理方法步骤 流程图。
如图4所示,本发明第一实施例的远程复制的发送请求处理方法包含以 下步骤在本地系统中创建固定数量(例如m个)的发送线程,以形成一发送 线程池(步骤302)。在此实施例中,是以远程镜像巻为单位进行发送线程分 配,即本地系统中每个原巻仅创建一个网络块设备(Network block device, nbd),且每个远程镜像巻对应唯一一个网络块设备。
将接收到向远程系统的对应远程镜像巻(数量为n个)写请求的所有网络 块设备(对应数量为n个,im<n)串接为一循环链表(步骤304)。设定一指针,以顺序记录循环链表中的最新处理的网络块设备,其中指针的起始位置 是指向循环链表头(步骤306)。然后,分配线程池中的发送线程,以按照指
针链表顺序主动寻找欲处理的网络块设备(歩骤308),进而利用发送线程处
理链表中一网络块设备向对应远程镜像巻的发送请求。
发送线程判断当前指针指向的网络块设备是否正在由其它发送线程所处
理(步骤310),若有线程处理,则进入下一个处理周期(步骤314);否贝ij, 则利用发送线程加锁,处理此网络块设备的发送请求队列(步骤312)。然后, 请求处理完成之后,判断循环链表是否为空(步骤316),若链表为空,则结 束;链表非空,表示指针当前指向的最新处理网络块设备之后仍存在未处理请 求的网络块设备,则向后移动指针至当前最新处理网络块设备的下一个网络块 设备(步骤316)。然后,前进至步骤308,分配线程移动指针指向当前最新 处理网络块设备的下一个网络块设备重复执行上述判断操作及请求处理操作, 直至链表为空,即请求队列中没有网络块设备需要处理,发送线程进入等待状 态,处理结束。
图5显示的第二实施例的远程复制的发送请求处理方法与第一实施例不 同在于,本实施例是应用于每一原巻建立有多个远程镜像巻(每个远程镜像巻 对应一个网络块设备)的本地是统中。即,本地是统100中包含多个原巻,而 每个原巻中则包含多个网络块设备,以对应其创建的多个远程镜像巻。当时当 某一原巻存在大量远程镜像巻时,发送线程在大多情况下可能仅处理同一原巻 的远程镜像巻对应的网络块设备的请求数据发送,因此其它原巻被处理的机会 较小。为此,本实施例以原巻为单位进行发送线程的分配,以能够使得所有原 巻的远程镜像巻具有大致相等的处理机会。
因此,如图5显示,与第一实施例的网络块设备的循环链表不同的是, 这里首先分别将属于同一原巻的多个远程镜像巻对应的网络块设备串接为一 队列链表(步骤402),然后将包含多个串接队列链表的每一原巻串接为一循 环链表(步骤404)。
与第一实施例不同,这里设定指针顺序记录循环链表中当前最新处理的某 一原巻下的网络块设备队列链表(步骤406)。然后分配发送线程池中的发送 线程(步骤408),以按照指针链表顺序主动寻找欲处理的网络块设备。这里 发送线程的数目最好小于循环链表的原巻数目,以减少发送请求处理时资源消耗。
执行发送线程时,与第一实施例相同,首先判断指针指向的网络块设备是 否正在由其它发送线程所处理(步骤410),若有线程处理,则发送线程进入 下一个处理周期(歩骤414);否则,则利用发送线程对此原巻的队列链表中 的多个网络块设备的处理加锁,依次处理当前指针指向的队列链表中的多个网 络块设备的发送请求队列(步骤412)。然后,发送线程进入下一个处理周期
(步骤414)。并在请求处理完成之后,判断设备循环链表是否为空(步骤416), 若链表非空,则向后移动指针至下一个包含同一原巻的多个远程镜像巻对应的 网络块设备的队列链表(歩骤418)。然后,前进至步骤408,分配线程移动 指针指向当前最新处理网络块设备的下一个原巻的网络块设备,重复执行上述 判断操作及请求处理操作,直至链表为空结束。
与第一实施例类似,这里在每次完成最新处理的某一原巻下的网络块设备 队列链表的发送请求后,按照相同方式重复执行链表判断操作,并且相应地依 照循环链表的原巻顺序,依次移动指针至下一个包含同一原巻的多个远程镜像 巻对应的网络块设备的队列链表,以定位下一个需要处理的请求。直至链表为 空,即完成所有链表中网络块设备的发送请求时。
发送线程的处理方式与第一实施例大致相同,只是每次移动完当前指针 后,依次处理相同原巻的所有远程镜像巻的一个单位的请求后再进入下一次定 位。这里,是透过单位值分配每一原巻的网络块设备向对应远程镜像巻发送请 求的批量大小,进而实现为不同远程镜像巻提供不同的发送处理能力。单位值 取决于原巻设定的权重,其中随着权重的增大表示对此原巻分配的资源越大。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情 况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但 这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1. 一种远程复制的发送请求处理系统,是用于具有多个网络块设备的本地系统中,其特征在于,该系统包含一创建模块,是用于在该本地系统中创建固定数量的发送线程,以形成一发送线程池;一链表模块,用于将接收到向对应远程镜像卷写请求的所有网络块设备串接为一循环链表;一指针模块,是设定一指针顺序记录该循环链表中的最新处理的网络块设备,以及在每次完成该最新处理的网络块设备的发送请求后,依照该循环链表的网络块设备顺序,依次移动该指针至下一个网络块设备,其中该指针的起始位置是指向该循环链表头;一线程分配模块,用于分配该发送线程池中的发送线程主动寻找欲处理的该下一个网络块设备;一请求接受模块,是负责接受新的发送请求并将该发送请求加入到对应网络块设备的发送请求队列中;一请求处理模块,是利用该发送线程对该指针指向的该下一个网络块设备的处理进行加锁,并处理该下一个网络块设备的发送请求。
2. 如权利要求1所述的发送请求处理系统,其特征在于,其中当该本地系 统的每一原巻建立有多个远程镜像巻时,该链表模块更用于分别将属于同一原 巻的多个远程镜像巻对应的网络块设备串接为一队列链表,以及将依照该本地 系统的每一原巻串接的多个队列链表串接为一循环链表。
3. 如权利要求2所述的发送请求处理系统,其特征在于,其中该请求处理 模块是在加锁后依次处理该指针指向的队列链表中的多个网络块设备向对应 远程镜像巻的发送请求。
4. 如权利要求3所述的发送请求处理系统,其特征在于,其中该指针模块 用于在完成该队列链表中的多个网络块设备的发送请求后,向后移动该指针至 下一个包含同一原巻的多个远程镜像巻对应的网络块设备的队列链表。
5. 如权利要求2所述的发送请求处理系统,其特征在于,更包含一权重模 块,是设定该本地系统的每一原巻的发送请求权重,以分配该每一原巻的网络块设备向对应远程镜像巻发送请求的批量大小。
6. —种远程复制的发送请求处理方法,是用于具有多个网络块设备的本地 系统中,其特征在于,该方法包含以下歩骤于该本地系统中创建固定数量的发送线程,以形成一发送线程池;将接收到向对应远程镜像巻写请求的所有网络块设备串接为一循环链表;设定一指针以顺序记录该循环链表中的最新处理的网络块设备,其中该指针的起始位置是指向该循环链表头;分配该发送线程池中的发送线程,以按照该循环链表顺序主动寻找该指针指向的欲处理网络块设备;利用该发送线程对该指针指向的该网络块设备的处理进行加锁,并处理该网络块设备的发送请求;依照该循环链表的网络块设备顺序,每次完成该发送请求后,依次移动该指针至下一个网络块设备并同样执行对应网络块设备的发送请求。
7. 如权利要求6所述的发送请求处理方法,其特征在于,其中该向后移动 该指针更包含如下步骤当该指针指向该最新处理网络块设备时,判断该循环链表是否为空; 若非空,则向后移动该指针至该最新处理网络块设备的下一个网络块设备.,若为空,则结束该发送请求处理。
8. 如权利要求6所述的发送请求处理方法,其特征在于,其中当该本地系 统的每一原巻建立有多个远程镜像巻时,该串接网络块设备为一循环链表的步 骤更包含以下步骤分别将属于同一原巻的多个远程镜像巻对应的网络块设备串接为一队列 链表;将依照该本地系统的每一原巻串接的多个队列链表串接为一循环链表。
9. 如权利要求8所述的发送请求处理方法,其特征在于,其中该处理该指 针指向的该网络块设备的发送请求更包含以下步骤利用该发送线程对该指针指向的队列链表中的多个网络块设备的处理进 行加锁,并依次处理该队列链表中的多个网络块设备向对应远程镜像巻的发送 请求;完成该队列链表中的多个网络块设备的发送请求后,向后移动该指针至下 一个包含同一原巻的多个远程镜像巻对应的网络块设备的队列链表。
10.如权利要求9所述的发送请求处理方法,其特征在于,其中更包含 为该本地系统的每一原巻设定一发送请求权重的步骤,以分配该每一原巻的网 络块设备向对应远程镜像巻发送请求的批量大小。
全文摘要
一种远程复制的发送请求处理系统及其方法,是应用于具有多个网络块设备的本地系统中。本发明于本地系统中创建固定数量的发送线程,以形成一发送线程池;将接收到向对应远程镜像卷写请求的所有网络块设备串接为一循环链表;设定一指针(pointer)以顺序记录循环链表中的最新处理的网络块设备分配发送线程池中的发送线程,以按照循环链表顺序主动寻找指针指向的欲处理网络块设备,并利用发送线程对指针指向的网络块设备的处理加锁,以处理网络块设备的发送请求;以及每次完成发送请求后,依次移动指针至下一个网络块设备并同样执行对应网络块设备的发送请求。
文档编号G06F11/14GK101414915SQ20071016329
公开日2009年4月22日 申请日期2007年10月19日 优先权日2007年10月19日
发明者刘文涵, 毕明浩, 陈玄同 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1