一种存储业务管理方法和装置与流程

文档序号:16917618发布日期:2019-02-19 19:05阅读:162来源:国知局
一种存储业务管理方法和装置与流程

本发明涉及虚拟化计算系统技术,尤指一种存储业务管理方法和装置。



背景技术:

随着计算机技术和网络技术的快速发展,大型集群在实际生产环境中广泛应用。通过虚拟化,组成云计算系统。在虚拟化的云计算系统中,常常需要协调动作,不通系统或者是在同一个系统内的不同主机之间共享同一个或一组资源,往往需要互斥来防止彼此的干扰,保证数据一致性,通过分布式锁能够达到不同主机间操作互斥的效果。

分布式锁一般来说需要支撑大规格环境下的使用,可使用sanlock来管理虚拟化系统中的资源。由于sanlock使用deltaleases和diskpaxos两个算法来保证sanlock资源能够正常的使用,sanlock的deltaleases在存储上下刷心跳,来确定当前节点的存活行,在deltaleases的基础上diskpaxos算法来保证资源的稳健获取,同时保证资源的唯一性,保证不发生多实例现象。

sanlock的deltaleases是小i/o下发,每一次sanlock更新deltaleases时候下发一个块(block)大小的i/o。在系统i/o流程中,一般来说是优先保证大i/o块的下发,因此,当存储池压力比较大的时候,会优先大i/o的下发,导致sanlock的fence,即杀掉存储池上运行的业务,防止多实例现象。这样,deltaleases就无法正常下发i/o,影响了系统的稳定运行。



技术实现要素:

为了解决上述技术问题,本发明提供了一种存储业务管理方法和装置。通过在发生i/o异常时检测存储池状态,并在存储池状态为业务压力过大的情况下,中止部分业务的i/o下发进程,保证业务正常运行,解决了无法正常下发i/o导致的业务中断及系统稳定性差的问题。

为了达到本发明目的,本发明提供了一种存储业务管理方法,包括:

在向存储池下发i/o发生异常时,检测存储池状态;

在所述存储池业务压力过大的情况下,中止部分业务的i/o下发进程。

优选的,该方法还包括:

在向存储池下发i/o的下发超时次数达到预置的第二阈值时,隔离对所述存储池的操作。

优选的,在向存储池下发i/o发生异常时,检测存储池状态的步骤之前,还包括:

在i/o下发超时次数达到预置的第一阈值时,判定向存储池下发i/o发生异常,所述第一阈值小于所述第二阈值。

优选的,中止部分业务的i/o下发进程的步骤包括:

中止所述存储池部分非核心业务的i/o下发进程。

优选的,中止所述存储池部分非核心业务的i/o下发进程的步骤包括:

按照i/o下发量由大至小的顺序对非核心业务进行排序;

依序遂个中止非核心业务的i/o下发进程,直至能够向所述存储池正常下发i/o。

优选的,该方法还包括:

在获取分布锁资源时,为各个业务添加标注,所述标注表明相应的业务是核心业务或非核心业务。

本发明还提供了一种存储业务管理装置,包括:

存储池状态检测模块,用于在向存储池下发i/o发生异常时,检测存储池状态;

进程中止模块,用于在所述存储池业务压力过大的情况下,中止部分业务的i/o下发进程。

优选的,所述进程中止模块具体用于中止所述存储池部分非核心业务的i/o下发进程,该模块包括:

排序单元,用于按照i/o下发量由大至小的顺序对非核心业务进行排序;

中止单元,用于依序遂个中止非核心业务的i/o下发进程,直至能够向所述存储池正常下发i/o。

优选的,该装置还包括:

注册管理模块,用于在获取分布锁资源时,为各个业务添加标注,所述标注表明相应的业务是核心业务或非核心业务。

本发明提供了一种存储业务管理方法和装置,在向存储池下发i/o发生异常时,检测存储池状态,在所述存储池业务压力过大的情况下,中止部分业务的i/o下发进程。解决了无法正常下发i/o导致的业务中断及系统稳定性差的问题,实现了稳定的分布式资源锁。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明的一实施例提供的一种存储业务管理方法的流程示意图;

图2为本发明的一实施例提供的一种存储业务管理装置的结构示意图;

图3为图2中进程中止模块202的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

sanlock的deltaleases是小i/o下发,每一次sanlock更新deltaleases时候下发一个块(block)大小的i/o。在系统i/o流程中,一般来说是优先保证大i/o块的下发,因此,当存储池压力比较大的时候,会优先大i/o的下发,因为sanlock仅仅下发一个块大小的i/o,因此在i/o堆栈中会排的比较靠后,因此,导致sanlock的deltaleases无法下发,即高i/o压力时候deltaleases下发的i/o会超时失败,导致sanlock的fence,即杀掉存储池上运行的业务,防止多实例现象。这样,deltaleases就无法正常下发i/o,影响了系统的稳定运行。

为了解决上述问题,本发明的实施例提供了一种存储业务管理方法和装置,在获取分布式锁时候对业务进行核心及非核心的区分,当存储池压力较大时候,sanlock在达到fence之前查看该存储池非核心业务的i/o压力,杀掉i/o压力较大的非核心业务,从而保证核心业务稳健运行。

本发明的一实施例提供了一种存储业务管理方法,使用该方法完成存储池业务管理的流程如图1所示,包括:

步骤101、在获取分布锁资源时,为各个业务添加标注,所述标注表明相应的业务是核心业务或非核心业务。

通过在sanlock上注册进程的优先级,同时在i/o超时之后动态的检查存储池的压力,同时根据i/o压力值来动态的调整高i/o压力的非核心业务进程运行主机,同时保证了sanlock的deltaleases正常的下发i/o,减小sanlock的fence发生,提高sanlock的稳定性,减少fence主机。

可简单的将业务划分为核心业务与非核心业务。进一步的,还可对非核心业务的优先级进行进一步细分,在后续中止进程时,除了考虑资源占用情况外,也可结合应用需求,同时参考优先级信息来选定中止的进程。

具体的,在注册进程获取分布锁资源时,在进程的name信息中标注进程的优先级。

步骤102、在向存储池下发i/o发生异常时,检测存储池状态。

本发明实施例中,在i/o下发超时次数达到预置的第一阈值时,判定向存储池下发i/o发生异常,所述第一阈值小于所述第二阈值。

优选的,在向存储池下发i/o的下发超时次数达到预置的第二阈值时,隔离对所述存储池的操作。第一阈值小于第二阈值,这样,在由于存储池业务压力过大造成下发i/o异常时,只需要减轻业务压力即可保障继续正常运行,避免了非必要的fence。

检查存储池使用压力较大的非核心业务的进程i/o压力,其特征在于当在sanlock获取锁资源时候,都需要注册自己的进程的信息,通过进程的信息,查看每一个进程的i/o压力,同时根据进程在sanlock中注册的标签,选择非核心业务来进行处理。

步骤103、在所述存储池业务压力过大的情况下,中止部分业务的i/o下发进程。

本步骤中,中止所述存储池部分非核心业务的i/o下发进程。优选的,可按照i/o下发量由大至小的顺序对非核心业务进行排序,再依序遂个中止非核心业务的i/o下发进程,直至能够向所述存储池正常下发i/o。i/o压力较大的进程占用存储池上的i/o性能,因此中止掉其中部分进程能够释放一部分i/o性能,从而保证存储池的i/o性能,同时能够保证核心业务稳健运行。优先处理i/o下发量大、占用资源较多的非核心业务进程中止,能够较快的达到减轻业务压力的效果,效率更高。

本发明的一实施例还提供了一种存储业务管理方法,在sanlock的deltaleasesi/o下发超时一定时间后,在sanlock需要fence虚拟机之前,通过检查deltaleases下发i/o失败原因,如果是i/o压力过大的原因导致的时候,通过检查在该存储池上获取的资源的信息,检查每个获取资源的进程的i/o压力,从进程中排除掉核心业务的进程,杀掉非核心业务的进程,从而保证sanlock的deltaleases算法正常下发i/o,同时还能保障核心业务稳健运行。

1)sanlock的deltaleases算法是定时在ids空间上定时刷新自己的时间戳,sanlock在连接存储池时候即add_lockspace时候可以制定i/o超时时间,sanlock会在2*i/o超时时间去下发一次i/o,当四次i/o下发不下去时候,sanlock则执行fence操作,因此可以在sanlock第一/二/三次i/o下发不下去时候进行存储池check操作,修改sanlock的deltaleases刷新超时时候处理机制,在sanlock的deltaleases下发超时的第一/二/三次时候启动i/o校验装置,检查存储池状态,是否是因为存储池压力过大导致sanlock的deltaleases无法下发i/o。

2)如果是因为存储池压力过大,导致sanlock无法下发i/o的话,则检查该存储池上所有非核心业务的i/o压力。修改核心业务向sanlock申请锁资源时候注册的name信息,标注自己是核心业务,让sanlock知道自己核心业务的状况,避免误伤核心业务。

3)检查该存储池上获取资源的进程id,同时根据进程的id和进程的标注是否是核心业务从而从中间挑出非核心业务但是i/o压力较大的进程执行kill操作,从而减轻存储池的i/o压力。为了保证sanlock的deltaleases能够正常的下发i/o,中止/杀死该主机上非核心业务进程i/o压力最大的进程,即i/o下发量最大的非核心业务进程,检查此后sanlock的deltaleases是否能够正常的下发i/o。如果sanlock的deltaleases仍无法正常的下发i/o,则继续中止第二大的非核心业务进程,直至sanlock能够正常的下发deltaleases。

本发明实施例提供的存储业务管理方法,当存储池i/o压力较大时候,通过动态的减少非核心业务对存储池的i/o压力,保证存储池上核心业务的正常的i/o下发,同时能够保证sanlock的deltaleases正常的下发i/o,避免因为存储池压力较大,导致sanlock的deltaleases无法下发,从而fence整个存储池上的业务。

本发明的一实施例还提供了一种存储业务管理装置,其结构如图2所示,包括:

存储池状态检测模块201,用于在向存储池下发i/o发生异常时,检测存储池状态;

进程中止模块202,用于在所述存储池业务压力过大的情况下,中止部分业务的i/o下发进程。

优选的,所述具体用于中止所述存储池部分非核心业务的i/o下发进程,该模块的结构如图3所示,包括:

排序单元2021,用于按照i/o下发量由大至小的顺序对非核心业务进行排序;

中止单元2022,用于依序遂个中止非核心业务的i/o下发进程,直至能够向所述存储池正常下发i/o。

优选的,该装置还包括:

注册管理模块203,用于在获取分布锁资源时,为各个业务添加标注,所述标注表明相应的业务是核心业务或非核心业务。

本发明的实施例提供了一种存储业务管理方法和装置,在向存储池下发i/o发生异常时,检测存储池状态,在所述存储池业务压力过大的情况下,中止部分业务的i/o下发进程。解决了无法正常下发i/o导致的业务中断及系统稳定性差的问题,实现了稳定的分布式资源锁。在获取sanlock资源锁的时候注册进程的标签(核心/非核心),当存储池压力较大时候,通过动态的中止压力较大的非核心业务,保证了核心业务对存储i/o的需求,同时保证sanlock锁能够正常的提供稳定的分布式锁服务,避免因为i/o压力较大时候导致sanlock误伤所有的存储池上使用的i/o的进程,提高存储池的稳定性和sanlock的稳定性。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1