一种基于控制器的io数据处理方法及系统的制作方法

文档序号:8942759阅读:187来源:国知局
一种基于控制器的io数据处理方法及系统的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别涉及一种基于控制器的1数据处理方法及系统。
【背景技术】
[0002]SCSI (small computer system interface,小型计算机系统接口)是一种高性能计算机外部设备接口,用户可通过该接口将外部设备的1数据发送至计算机,并通过控制器将1数据下发至计算机磁盘以对计算机磁盘进行相应的读写操作。
[0003]现有技术中,为了防止1数据输入过程中控制器发生故障导致处理过程中断,通常使用双控制器控制1数据的输入,其中一个控制器为主控制器正常工作,当主控制器故障时,另一个非主控制器可接管其工作;非主控制器切换为主控制器的过程中,故障主控制器的缓存管理器中的LUdogic unit,逻辑单元)上的1数据可以下发至计算机磁盘,管理器中的虚拟卷内的1数据可以先下发至缓存管理器中,然后从缓存管理器中返回至接口层以重新下发。
[0004]但是,该技术方案中,并不能保证故障主控制器中管理器内的虚拟卷上的1数据被全部返回至接口层,故障控制器中缓存管理器内的LU上的1数据完全下发至计算机磁盘,当非主控制器切换成主控制后,留存在故障主控制器中的1数据会被释放掉,1数据的完整性可能受到破坏。

【发明内容】

[0005]有鉴于此,本发明提供了一种基于控制器的1数据处理方法及系统,可确保1数据的完整性。
[0006]第一方面,一种基于控制器的1数据处理方法,包括:
[0007]SO:预设阻塞线程;
[0008]S1:检测到控制器故障后,调用所述阻塞线程,阻塞所述控制器内缓存管理器中的LU逻辑单元,以使所述LU逻辑单元内不会进入新的1数据;
[0009]S2:将管理器中的虚拟卷上的目标1数据下发至缓存管理器中,以使下发至所述缓存管理器中的目标1数据返回至接口层;
[0010]S3:调用所述阻塞线程,阻塞所述管理器中的虚拟卷;
[0011]其中,所述缓存管理器中的LU全部被阻塞时,表示所述缓存管理器中的LU上的1数据已全部下发至计算机磁盘,所述管理器中的虚拟卷全部被阻塞时,表示所述管理器中的虚拟卷上的目标1数据已全部下发至缓存管理器中。
[0012]进一步的,所述步骤SI包括:
[0013]Al:将缓存管理器中的所有LU划分为若干个卷组;
[0014]A2:当检测到控制器故障时,针对当前未被阻塞过的第一卷组,调用所述阻塞线程,进入所述第一卷组,执行A20 ;
[0015]A20:判断对应所述第一卷组下的每一个LU中的1数据队列是否为空,
[0016]如果均为空,则所述阻塞线程阻塞所述第一卷组,然后返回A2 ;
[0017]如果部分LU中的1数据队列为空,则执行:
[0018]A21:所述阻塞线程阻塞对应的所述第一卷组下1数据队列为空的LU ;
[0019]A22:将所述阻塞线程设置为休眠状态;
[0020]A23:所述阻塞线程休眠结束后,判断剩余部分LU中的1数据队列是否为空,如果是,则所述阻塞线程阻塞所述第一卷组,然后返回A2,否则,返回A21 ;
[0021]如果均不为空,则执行:
[0022]A24:将所述阻塞线程设置为休眠状态;
[0023]A25:所述阻塞线程休眠结束后,返回A20。
[0024]进一步的,所述步骤S3包括:
[0025]B1:将管理器中的所有虚拟卷划分为若干个卷组;
[0026]B2:针对当前未被阻塞过的第二卷组,调用所述阻塞线程,进入所述第二卷组,执行 B20 ;
[0027]B20:判断对应所述第二卷组下的每一个虚拟卷中的1数据队列是否为空,
[0028]如果均为空,则所述阻塞线程阻塞所述第二卷组,然后返回B2 ;
[0029]如果部分虚拟卷中的1数据队列为空,则执行:
[0030]B21:所述阻塞线程阻塞对应的所述第二卷组下1数据队列为空的虚拟卷;
[0031]B22:将所述阻塞线程设置为休眠状态;
[0032]B23:所述阻塞线程休眠结束后,判断剩余部分虚拟卷中的1数据队列是否为空,如果是,则所述阻塞线程阻塞所述第二卷组,然后返回B2,否则,返回B21 ;
[0033]如果均为空,则执行:
[0034]B24:将所述阻塞线程设置为休眠状态;
[0035]B25:所述阻塞线程休眠结束后,返回B20。
[0036]进一步的,所述步骤S2包括:
[0037]将管理器中的虚拟卷上的目标1数据下发至缓存管理器中;
[0038]在缓存管理器中将所述目标1数据标记为busy状态,并将所述被标记为busy状态的目标1数据返回至接口层中。
[0039]进一步的,在所述将所述被标记为busy状态的目标1数据返回至接口层中之后,还包括:
[0040]判断进入接口层的1数据是否是标记为busy状态的目标1数据,如果是,则将所述标记为busy状态的目标1数据调度至重试队列,否则,调度至接口层的其他待下发队列;
[0041]其中,所述重试队列中的1数据下发的优先级高于其他待下发队列中1数据下发的优先级,即有控制器正常工作时,只有当所述重试队列中的1数据全部下发完毕后,才下发所述其他待下发队列中的1数据。
[0042]第二方面,本发明提供了一种数据处理系统,包括:
[0043]第一设置单元:用于设置阻塞线程;
[0044]第一阻塞单元:用于当检测到控制器故障后,调用所述阻塞线程,阻塞所述控制器内缓存管理器中的LU逻辑单元,以使所述LU逻辑单元内不会进入新的1数据;
[0045]返回单元,用于将管理器中的虚拟卷上的目标1数据下发至缓存管理器中,以使下发至所述缓存管理器中的目标1数据返回至接口层;
[0046]第二阻塞单元:用于调用所述阻塞线程阻塞管理器中的虚拟卷;
[0047]其中,所述缓存管理器中的LU全部被阻塞时,表示所述缓存管理器中的LU上的1数据已全部下发至计算机磁盘,所述管理器中的虚拟卷全部被阻塞时,表示所述管理器中的虚拟卷上的目标1数据已全部下发至缓存管理器中。
[0048]进一步的,所述第一阻塞单元包括:
[0049]第一划分子单元,用于将缓存管理器中的所有LU划分为若干个卷组;
[0050]第一阻塞子单元,用于当检测到控制器故障时,针对当前未被阻塞过的第一卷组,调用所述阻塞线程,进入所述第一卷组,
[0051]判断对应所述第一卷组下的每一个LU中的1数据队列是否为空;
[0052]如果均为空,则所述阻塞线程阻塞所述第一卷组,然后返回以对其他未被阻塞的卷组进行阻塞;
[0053]如果部分LU中的1数据队列为空,则所述阻塞线程阻塞对应的所述第一卷组下1数据队列为空的LU,然后将所述阻塞线程设置为休眠状态,所述阻塞线程休眠结束后,判断剩余部分LU中的1数据队列是否为空,如果是,则所述阻塞线程阻塞所述第一卷组,然后返回以对其他未被阻塞的卷组进行阻塞,否则,所述阻塞线程对1数据队列为空的LU进行阻塞,然后将所述阻塞线程设置为休眠状态,直到将所述第一卷组下的所有LU阻塞完毕时返回以对其他卷组进行阻塞;
[0054]如果均不为空,则将所述阻塞线程设置为休眠状态,所述阻塞线程休眠结束后继续判断对应所述第一卷组下的每一个LU中的1数据队列是否为空。
[0055]进一步的,所述第二阻塞单元包括:
[0056]第二划分子单元,用于将管理器中的所有虚拟卷划分为若干个卷组;
[0057]第二阻塞子单元,用于针对当前未被阻塞过的第二卷组,调用所述阻塞线程,进入所述第二卷组,判断对应所述第二卷组下的每一个虚拟卷中的1数据队列是否为空,
[0058]如果均为空,则所述阻塞线程阻塞所述第二卷组,然后返回以对其他未被阻塞的卷组进行阻塞;
[0059]如果部分虚拟卷中的1数据队列为空,则所述阻塞线程阻塞对应的所述第二卷组下1数据队列为空的虚拟卷;然后将所述阻塞线程设置为休眠状态;所述阻塞线程休眠结束后,判断剩余部分虚拟卷中的1数据队列是否为空,如果是,则所述阻塞线程阻塞所述第二卷组,然后返回以对其他未被阻塞的卷组进行阻塞,否则,所述阻塞线程对1数据队列为空的LU进行阻塞,然后将所述阻塞线程设置为休眠状态,直到将所述第二卷组下的所有LU阻塞完毕时返回以对其他卷组进行阻塞;
[0060]如果均为空,则将所述阻塞线程设置为休眠状态;所述阻塞线程休眠结束后,继续判断对应所述第二卷组下的每一个虚拟卷中的1数据队列是否为空。
[0061]进一步的,所述返回单元包括:
[0062]数据下发子单元,用于将管理器中的虚拟卷上的目标1数据下发至缓存管理器中;
[0063]返回子单元,用于在缓存管理器中将
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1