本发明涉及计算机技术领域,具体来说,涉及一种策略控制方法及策略控制系统。
背景技术:
文件系统中的归档功能,需要定期将在线存储系统上的部分数据归档并迁移至某离线存储系统。
现有技术的多策略执行归档方法,在文件归档中由于多策略执行会导致归档效率偏低以及负载均衡不合理,从而会造成系统归档能力下降。因此在分布式系统中,需要合理分配策略运转状态及资源,设置策略优先级,提高归档性能及速度。另一方面,当系统发生故障重启时需要重新执行归档任务,因此还存在故障恢复单一的问题。
针对相关技术中多策略执行归档效率低、故障恢复单一的问题,目前尚未提出有效的解决方案。
技术实现要素:
针对相关技术中多策略执行归档效率低、故障恢复单一的问题,本发明提出一种策略控制方法及策略控制系统,能够提高多策略并发执行的效率;当发生故障时,能够恢复故障前的策略状态而不需要重新归档。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种策略控制方法,包括:生成策略并根据策略的执行时间开始执行策略;在策略的执行过程中确定策略在不同的执行阶段对应的策略状态;以及在策略的执行过程发生异常的情况下,获取发生异常时的执行阶段对应的断点策略状态,并根据断点策略状态恢复至对应的执行阶段。
在一个实施例中,执行阶段包括第一执行阶段进入和第二执行阶段;策略状态包括与第一执行阶段对应的第一策略状态及与第二执行阶段对应的第二策略状态;以及在策略的执行过程中,当由第一执行阶段进入到第二执行阶段时,将对应的第一策略状态转换至第二策略状态。
在一个实施例中,在策略的执行过程中确定策略在不同的执行阶段对应的策略状态,包括:当符合策略执行条件时将策略状态转换至策略准备状态;当开始归档文件的执行阶段时,将策略状态由策略准备状态转换至策略运行状态;当开始同步元数据的执行阶段时,将策略状态由策略运行状态转换至策略同步状态;以及当同步元数据的执行阶段完成时,将策略状态由策略同步状态转换至策略完成状态;其中,策略为归档策略。
在一个实施例中,当符合策略执行条件时将策略状态转换至策略准备状态,包括:当执行优先事件需要暂停策略的执行过程时,将策略状态由策略准备状态转换至策略准备暂停状态;当执行优先事件完成时,将策略状态由策略准备暂停状态重新转换至策略准备状态。
在一个实施例中,当开始归档文件的执行阶段时,将策略状态由策略准备状态转换至策略运行状态,包括:当执行优先事件需要暂停策略的执行过程时,将策略状态由策略运行状态转换至策略运行暂停状态;当执行优先事件完成时,将策略状态由策略运行暂停状态重新转换至策略运行状态。
在一个实施例中,还包括:当不符合策略执行条件时,将策略状态转换至策略等待状态。
在一个实施例中,当策略为周期性策略或间隔性策略的情况下,返回至当符合策略执行条件时将策略状态转换至策略准备状态的步骤。
在一个实施例中,生成策略并根据策略的执行时间开始执行策略,包括:生成策略;在到达执行时间的情况下,将策略状态设置为策略初始化状态。
根据本发明的另一方面,提供了一种策略控制系统,包括:策略执行模块,用于根据策略的执行时间开始执行策略;策略状态控制模块,用于在策略的执行过程中确定策略在不同的执行阶段对应的策略状态;以及故障恢复模块,用于在策略的执行过程发生异常的情况下,获取发生异常时的执行阶段对应的断点策略状态,并根据断点策略状态恢复至对应的执行阶段。
在一个实施例中,执行阶段包括第一执行阶段进入和第二执行阶段;策略状态包括与第一执行阶段对应的第一策略状态及与第二执行阶段对应的第二策略状态;以及在策略的执行过程中,当由第一执行阶段进入到第二执行阶段时,策略状态控制模块将对应的第一策略状态转换至第二策略状态。
本发明通过在策略的执行过程中确定策略在不同的执行阶段对应的策略状态来控制策略的执行,能够提高多策略并发执行的效率,提高归档速度;当发生故障时,能够恢复故障前的策略状态而不需要重新归档,提高了归档效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的策略控制方法的流程图;
图2是根据本发明具体实施例的策略控制方法的策略执行过程的流程示意图;
图3是根据本发明实施例的策略控制方法的故障恢复时的策略状态的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,根据本发明实施例的策略控制方法包括以下步骤:
步骤S101,生成策略并根据策略的执行时间开始执行策略;
步骤S103,在策略的执行过程中确定策略在不同的执行阶段对应的策略状态;以及
步骤S105,在策略的执行过程发生异常的情况下,获取发生异常时的执行阶段对应的断点策略状态,并根据断点策略状态恢复至对应的执行阶段。
本发明通过上述技术方案,在策略的执行过程中确定策略在不同的执行阶段对应的策略状态来控制策略的执行,能够提高多策略并发执行的效率,提高归档速度;当发生故障时,能够恢复故障前的策略状态而不需要重新归档,提高了归档效率。
在一个实施例中,执行阶段包括第一执行阶段进入和第二执行阶段;策略状态包括与第一执行阶段对应的第一策略状态及与第二执行阶段对应的第二策略状态;以及在策略的执行过程中,当由第一执行阶段进入到第二执行阶段时,将对应的第一策略状态转换至第二策略状态。
在一个实施例中,步骤S101包括:生成策略;在到达执行时间的情况下,将策略状态设置为策略初始化状态。
在一个实施例中,策略为归档策略;具体地,步骤S103包括:当符合策略执行条件时将策略状态转换至策略准备状态;当开始归档文件的执行阶段时,将策略状态由策略准备状态转换至策略运行状态;当开始同步元数据的执行阶段时,将策略状态由策略运行状态转换至策略同步状态;以及当同步元数据的执行阶段完成时,将策略状态由策略同步状态转换至策略完成状态。
进一步地,当符合策略执行条件时将策略状态转换至策略准备状态,包括:当执行优先事件需要暂停策略的执行过程时,将策略状态由策略准备状态转换至策略准备暂停状态;当执行优先事件完成时,将策略状态由策略准备暂停状态重新转换至策略准备状态。
进一步地,当开始归档文件的执行阶段时,将策略状态由策略准备状态转换至策略运行状态,包括:当执行优先事件需要暂停策略的执行过程时,将策略状态由策略运行状态转换至策略运行暂停状态;当执行优先事件完成时,将策略状态由策略运行暂停状态重新转换至策略运行状态。
在一个实施例中,还包括:当不符合策略执行条件时,将策略状态转换至策略等待状态。
在一个实施例中,当策略为周期性策略或间隔性策略的情况下,返回至当符合策略执行条件时将策略状态转换至策略准备状态的步骤。
下面结合图2所示对上述实施例进行具体说明。在本实施例中,通过归档系统来进行文件归档,上述策略为归档策略。其中需要进一步说明的,归档系统包括:文件复制控制器oBke、文件复制服务器oBks、和文件扫描控制器oScan。在文件归档的过程中,oBke可用于管理策略运行队列POLICY_RUNNING_LIST和触发同步元数据;oBks可用于执行归档任务,具体的包括执行同步元数据和执行同步文件,还可用于暂行正在执行的归档任务;oScan可用于扫描待归档的文件和目录、按规则生成归档任务、并将归档任务投递给oBks。
在开始执行策略之前,首先用户可通过界面设置文件归档策略,并设置策略状态为策略初始化状态INIT;然后当检测到策略执行时间到来时,将该策略投递到设置于oBke中的策略运行队列POLICY_RUNNING_LIST中,以进行后续的策略执行过程。
如图2所示,根据本发明具体实施例的策略控制方法的策略执行过程包括以下步骤:
步骤1、当oBke中策略运行队列正在运行的策略个数小于5个时,则将策略状态由INIT转换至策略准备状态PREARE;在本实施例中,策略执行条件包括:oBke中策略运行队列正在运行的策略个数小于5个;具体的,策略准备状态PREARE可以包括策略准备子状态POLICY_PREARE、策略准备暂停子状态POLICY_PAUSEPREING、和策略准备暂停完成子状态POLICY_PAUSEPREFIN;
步骤2当oBke中策略运行队列正在运行的策略个数大于5个时,则将策略状态由INIT转换至策略等待状态WAIT;其中,策略等待状态WAIT状态包括策略等待子状态POLICY_WAIT和策略等待完成子状态POLICY_WAITFIN;
步骤3、当oScan完成对待归档的文件及目录的扫描、并按规则生成归档任务投递给oBks时,即当开始归档文件时,则将策略状态由PREPARE转换至策略运行状态RUNNING;具体的,策略运行状态RUNNING可以包括策略运行子状态POLICY_RUNNING、策略运行暂停子状态POLICY_PAUSEDOING、和策略运行暂停完成子状态POLICY_PAUSEDOFIN;
步骤4、当oBke中策略运行队列正在运行的策略个数小于5个、且oScan完成文件扫描并将生成的归档任务投递给oBks时,则将策略状态由WAIT转换至RUNNING;
步骤5、当oBke中策略运行队列正在运行的策略个数小于5个、且oScan未完成文件扫描时,则将策略状态由WAIT转换至PREPARE;
步骤6、当oBks文件同步完成后、oBke将触发同步元数据任务,也就是当开始同步元数据的执行阶段时,此时将策略状态由RUNNING转换至策略同步状态DIRMETA;
步骤7、oBke按照由最大目录层深开始并逐层递减的顺序通知oBks同步该最大层深目录下的文件元数据,当该最大层深目录下的各层目录下的文件元数据均同步完成时,即当同步元数据的执行阶段完成时,此时将策略状态由DIRMETA变为策略完成状态FIN;
步骤8、若策略为周期性策略或间隔性策略,则当策略的执行时间到来时,策略将进入下一个周期的文件归档;此时若oBke中策略运行队列正在运行的策略个数小于5个,则将策略状态由FIN重新转换至PREARE;
步骤9、若策略为周期性策略或间隔性策略,则当策略的执行时间到来时,策略将进入下一个周期的文件归档;此时若oBke中策略运行队列正在运行的策略个数大于5个,则将策略状态由FIN转换至WAIT;
步骤10、策略等待状态WAIT状态包括策略等待子状态POLICY_WAIT和策略等待完成子状态POLICY_WAITFIN;当oScan完成文件扫描并生成归档任务时,策略状态由POLICY_WAIT变为POLICY_WAITFIN;当策略运行队列正在运行的策略个数小于5个,则执行步骤4;
步骤11、当新添加策略的优先级高于策略运行队列中策略状态为POOLICY_PREPARE的准备策略的优先级时,则将该准备策略的策略状态由POOLICY_PREPARE转换至POLICY_PAUSEPREING,然后等待oBks暂停该准备策略的任务;
步骤12、当oBks返回暂停上述准备策略的任务的成功消息时,将该准备策略的策略状态由POLICY_PAUSEPREING转换至POLICY_PAUSEFIN;
步骤13、若当前oBke中策略运行队列正在运行的策略个数小于5个、且策略状态为WAIT的策略数量为0或策略状态为WAIT的策略的优先级均低于上述准备策略,则将该准备策略的策略状态由POLICY_PAUSEFIN转换至POLICY_PREPARE;
步骤14、当新添加策略的优先级高于策略运行队列中策略状态为POOLICY_RUNNING的运行策略的优先级时,则将该运行策略的策略状态由POOLICY_RUNNING转换至POLICY_PAUSEDOING;然后等待oBks暂停该运行策略的任务;
步骤15、若oBks返回暂停上述运行策略的任务的成功消息时,将该运行策略的策略状态由POLICY_PAUSEDOING转换至POLICY_PAUSEDOFIN;
步骤16、若当前oBke中策略运行队列正在运行的策略个数小于5个、策略状态为WAIT的策略数量为0或策略状态为WAIT的策略的优先级均低于上述运行策略,则将该运行策略的策略状态由POLICY_PAUSEDOFIN转换至POLICY_RUNNING。
如图3所示是故障恢复时的策略状态的示意图。通过上述的技术方案能够实现将oBke的策略运转划分为不同的策略状态,因此当系统发生故障(FAIL)重启时,可以通过读取故障发生时的策略状态(包括WAIT、PREPARE、RUNNING、DIRMETA、FIN)及目录任务、文件任务、元数据任务等相关信息,恢复至故障前的归档执行阶段。因此当系统发生故障重启时不再需要重新执行归档任务,降低了故障恢复的成本,提高了归档效率。
根据本发明的实施例,还提供了一种策略控制系统,包括:
策略执行模块,用于根据策略的执行时间开始执行策略;
策略状态控制模块,用于在策略的执行过程中确定策略在不同的执行阶段对应的策略状态;以及
故障恢复模块,用于在策略的执行过程发生异常的情况下,获取发生异常时的执行阶段对应的断点策略状态,并根据断点策略状态恢复至对应的执行阶段。
在一个实施例中,执行阶段包括第一执行阶段进入和第二执行阶段;策略状态包括与第一执行阶段对应的第一策略状态及与第二执行阶段对应的第二策略状态;以及在策略的执行过程中,当由第一执行阶段进入到第二执行阶段时,策略状态控制模块将对应的第一策略状态转换至第二策略状态。
综上所述,借助于本发明的上述技术方案,通过在策略的执行过程中确定策略在不同的执行阶段对应的策略状态来控制策略的执行,能够提高多策略并发执行的效率,提高归档速度;当发生故障时,能够恢复故障前的策略状态而不需要重新归档,提高了归档效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。