一种存储故障注入方法及系统与流程

文档序号:12305131阅读:566来源:国知局
一种存储故障注入方法及系统与流程

本申请涉及云计算领域,特别涉及一种存储故障注入方法及系统。



背景技术:

随着信息技术的发展,云计算技术的广泛应用已经给人们的生产生活带来了巨大变化。

由于云计算的处理对象和结果都是海量的数据,因此,对于云服务等产品来说,其后端存储的安全性很大程度上影响了产品的稳定可靠性。而实际上,在用户的使用过程中,经常会发生很多不可避免也不可预料的故障,比如机房掉电、网络延迟、磁盘意外插拔、文件系统损坏等,这些都对云产品后端存储的安全性带来了挑战。因此,对云产品的后端存储进行大量的测试,以消除存储安全漏洞,保证其在各类故障发生时的稳定可靠性是十分有必要的。

目前,一般使用人工操作手段对云产品进行各类存储故障的注入,以便进行故障测试。这样不仅操作麻烦,效率低下,而且还增加了人力成本,尤其是当待测试系统较为庞大或复杂的时候。显然,由于人力的有限,人工操作的方法无疑降低了存储故障的测试效率。



技术实现要素:

本申请的目的在于提供一种存储故障注入方法及系统,可以简单有效地对测试环境注入各类存储故障,而无须人工注入,从而提高存储故障的测试效率并降低人力成本。

为解决上述技术问题,本申请提供一种存储故障注入方法,包括:

控制主机向待测试主机发送存储故障注入命令;

所述待测试主机依据所述存储故障注入命令,模拟出存储故障环境,以便进行故障测试。

可选地,还包括:

在所述故障测试结束后,所述控制主机向所述待测试主机发送存储故障恢复命令;

所述待测试主机依据所述存储故障恢复命令,进行存储故障恢复。

可选地,所述存储故障注入命令包括磁盘故障注入命令、网络故障注入命令、电源故障注入命令、文件系统故障注入命令中的任一项;

所述存储故障恢复命令包括磁盘故障恢复命令、网络故障恢复命令、电源故障恢复命令、文件系统故障恢复命令中的任一项。

可选地,当所述存储故障注入命令为电源故障注入命令时,所述控制主机向待测试主机发送存储故障注入命令包括:

所述控制主机向所述待测试主机的基板管理控制器发送所述电源故障注入命令;

所述在所述故障测试结束后,所述控制主机向所述待测试主机发送存储故障恢复命令包括:

在所述故障测试结束后,所述控制主机向所述待测试主机的基板管理控制器发送电源故障恢复命令。

可选地,所述控制主机在向所述待测试主机发送所述存储故障注入命令或者所述存储故障恢复命令之前还包括:

对用户的操作权限进行校验,若校验通过,则执行发送所述存储故障注入命令或者所述存储故障恢复命令的步骤。

可选地,还包括:

所述控制主机采集并显示所述待测试主机的状态数据;以便监测所述待测试主机的故障注入情况或者故障恢复情况。

本申请还提供了一种存储故障注入系统,包括:

控制主机:用于向待测试主机发送存储故障注入命令;

所述待测试主机:用于依据所述存储故障注入命令,模拟出存储故障环境,以便进行故障测试。

可选地,所述控制主机还用于:

在所述故障测试结束后,所述控制主机向所述待测试主机发送存储故障恢复命令;

所述待测试主机还用于:

依据所述存储故障恢复命令,进行存储故障恢复。

可选地,所述控制主机还用于:

在向所述待测试主机发送所述存储故障注入命令或者所述存储故障恢复命令之前,对用户的操作权限进行校验,若校验通过,则执行发送所述存储故障注入命令或者所述存储故障恢复命令的步骤。

可选地,所述控制主机还用于:

采集并显示所述待测试主机的状态数据;以便监测所述待测试主机的故障注入情况或者故障恢复情况。

本申请所提供的存储故障注入方法中,控制主机向待测试主机发送存储故障注入命令;所述待测试主机依据所述存储故障注入命令,模拟出存储故障环境,以便进行故障测试。

可见,相比于现有技术,本申请所提供的存储故障注入方法中,通过利用控制主机对待测试主机下达各类存储故障注入命令,可以令待测试主机根据所述存储故障注入命令,自行实现存储故障的注入,对各类存储故障环境进行模拟,以便于在故障环境下进行产品测试。因此,相比于人力操作,本申请所提供的方法大大简化了存储故障注入的操作过程,提高了存储故障测试的效率,同时还节约了人力成本。本申请所提供的存储故障注入系统可以实现上述存储故障注入方法,同样具有上述有益效果。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。

图1为本申请实施例所提供的一种存储故障注入方法的流程图;

图2为本申请实施例所提供的另一种存储故障注入方法的流程图;

图3为本申请实施例所提供的一种存储故障注入系统的结构框图;

图4为本申请实施例所提供的又一种存储故障注入系统的结构框图。

具体实施方式

为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例所提供的一种存储故障注入方法的流程图,主要包括以下步骤:

步骤101:控制主机向待测试主机发送存储故障注入命令。

本申请实施例所提供的存储故障注入方法,为了避免对存储故障的人工注入,通过由控制主机运行相关控制程序,向待测试主机发送存储故障注入命令,以便待测试主机执行该存储故障注入命令,完成对存储故障环境的模拟。具体的,控制主机可以通过远程登录的方式,实现与待测试主机间的数据通信;当然在远程登录时,一般需要用户提供待测试主机用于远程登录的用户名和密码,以保证远程登录操作的安全性。

本申请对控制主机并不进行限定,只要其能够通过运行该控制程序,向待测试主机发送存储故障注入命令即可;此外,本申请对待测试主机也不进行限定,只要其能通过远程登录,实现与控制主机间的通信即可。

需要说明的是,本申请实施例对该控制程序采用何种编程语言进行编写也不进行限定,本领域技术人员可以根据具体使用情况采用如python等程序语言进行编写;并且,针对待测试主机上的不同待测试平台,可以根据测试平台所适用的打包规则,将该控制程序打包成在该测试平台下可以使用的工具包,以便安装在控制主机上,方便使用。

这里所说的存储故障注入命令具体可以为磁盘故障注入命令、网络故障注入命令、电源故障注入命令、文件系统故障注入命令中的任一项,分别可以令待测试主机模拟出磁盘故障、网络故障、电源故障、文件系统故障。由于在进行故障测试时,要避免多种存储故障之间的相互干扰,因此,在单次故障测试时,控制主机一般只发送一项存储故障注入命令,使得待测试主机无其他存储故障问题出现,以便保证故障测试结果的有效性和准确性。

当所要进行的存储故障测试为电源故障测试,即所述存储故障注入命令为电源故障注入命令时,控制主机向待测试主机所发送的电源故障注入命令具体可以发送到待测试主机的基板管理控制器(baseboardmanagementcontroller,bmc),以便基板管理控制器在接下来的步骤中对待测试主机的电源进行控制,从而模拟出电源故障。当然,在此之前,在进行远程连接待测试主机时,具体需要通过ipmitool工具,并利用用户输入的用户名和密码,连接到待测试主机的基板管理控制器。

此外,为了进一步保证对待测试主机进行故障注入操作的安全性,在每次向待测试主机发送存储故障注入命令前,还可以要求用户进行存储故障注入操作权限的校验,例如指纹验证或者用户名和密码验证等,当然也可以不进行此项校验。这里所说的用于校验存储故障注入操作权限的用户名和密码,可以但不推荐设置为和前文所述远程登录时相同的用户名密码,优选设为不同的用户名和密码;并且,还可以进一步为每一种存储故障注入命令都设置一套独用的用户名密码,以便进一步提高操作的安全性。

值得一提的是,控制主机还可以启用对待测试主机的监控功能,通过采集并显示该待测试主机的相关状态数据,以便直观地监控该待测试主机的故障注入情况等。同样地,也可以对当前用户的监控操作权限进行校验。当然,也可以不启用对待测试主机的监控功能,本领域技术人员可以自行选择并设置。

步骤102:待测试主机依据存储故障注入命令,模拟出存储故障环境,以便进行故障测试。

当待测试主机接收到所述存储故障注入命令之后,即可通过执行该存储故障注入命令,实现对指定存储故障的模拟,以便测试员在该模拟的故障环境下进行测试,从而发现产品的安全性漏洞。

在进行各类存储故障的注入时,可以采用多种方式。例如,在进行磁盘故障注入时,可以采用命令磁盘弹出的方式,也可以采用通过修改磁盘配置参数导致磁盘不可读取等方式;在进行网络故障注入时,可以采用断开网络端口的方式,也可以采用设置网络延迟时间或抖动值等方式;在进行文件系统故障注入时,可以采用拦截或修改文件操作函数跳转表等方式。本申请实施例对存储故障的具体注入方式和内容并不进行限定,本领域技术人员可根据具体的测试环境进行选择,并通过具体的程序语言进行编程实现。

可见,本申请实施例所提供的存储故障注入方法,通过控制主机对待测试主机发送存储故障注入命令,使得待测试主机可以自行执行各类存储故障的注入,省却了人力操作,极大地提高了存储故障注入的效率,同时还节省了人力成本。

请参考图2,图2为本申请实施例所提供的另一种存储故障注入方法的流程图。在本申请图1所提供的存储故障注入方法的基础上,图2所示的方法增加了对注入的存储故障进行修复的步骤,以及对待测试主机进行状态监控的步骤,同时还对当前用户对存储故障注入或修复等操作的权限进行了校验。

步骤201:对用户的监控权限进行校验,若校验通过,则进入步骤202。

如前所述,当控制主机通过远程登录连接到待测试主机之后,可以首先启动对待测试主机的监控功能,以便在后续的故障注入等操作过程中实时获取待测试主机的情况。考虑到安全性问题,在开启监控功能之前,可以对当前的用户身份进行验证。具体的,可以采用指纹或声纹验证的方式;也可以采用较为简单的用户名密码验证,即若当前用户输入的用户名密码符合系统预先保存的用户名密码信息,则说明当前用户具有对待测试主机的监控权限,则可以进入步骤202。当然,这里所说的用于校验监控权限的用户名密码可以但不推荐设置为与远程登录时相同的用户名密码。

步骤202:控制主机采集并显示待测试主机的状态数据。

当经过步骤201验证了当前用户的监控权限之后,控制主机便可以采集待测试主机的状态数据,包括磁盘运行状态数据、网络信号状态数据、电源状态数据、文件系统状态数据,并可以在控制界面通过图表等形式显示出来,以便监控该待测试主机的故障注入情况或者故障恢复情况等。具体的,可以对状态数据的采集设置一定的间隔时间,一般可选在0~5s范围内,例如3s;本领域技术人员可以自行选择并设置,本申请实施例不进行限定。

步骤203:对用户的存储故障注入权限进行校验,若校验通过,则进入步骤204。

对用户的存储故障注入权限的校验同样是为了系统通信的安全性。同样地,如步骤201中所述,有多种校验方式可以选择。需要说明的是,当采用鉴别用户名和密码的校验方式时,可以但不推荐设置为之前步骤中所使用过的用户名和密码;更特别地,还可以为每一种存储故障注入命令都设置一个独用的用户名和密码,以进一步提高系统的安全性。

步骤204:控制主机向待测试主机发送存储故障注入命令。

经过步骤203中的存储故障注入权限校验之后,控制主机可以向待测试主机发送存储故障注入命令。该部分具体内容可参考步骤101,相似内容这里就不再赘述。

步骤205:待测试主机依据存储故障注入命令,模拟出存储故障环境,以便进行故障测试。

同样的,步骤205中的相关内容请参考步骤102,相似内容这里就不再赘述。所不同的是,这里可以通过控制主机所采集到的待测试主机的状态数据,监控存储故障的注入情况,以便用户清楚地了解待测试主机的当前情况,并在监测到待测试主机的存储故障成功注入后,进行故障测试。

步骤206:对用户的存储故障恢复权限进行校验,若校验通过,则进入步骤207。

在待测试主机完成了某项故障测试之后,可以将该待测试主机恢复到故障测试之前的状态,以便待测试主机接下来能够正常运行或者进行下一项故障测试。同样地,在进行存储故障恢复之前,可以再次进行当前用户的权限校验,校验方式仍有多种选择,这里不再赘述,本申请实施例对此不进行限定,本领域技术人员可以根据实际使用情况自行进行选择和设置。

步骤207:控制主机向待测试主机发送存储故障恢复命令。

当经过了步骤206中的存储故障恢复权限的校验之后,控制主机可以向待测试主机发送存储故障恢复命令,将待测试主机注入的存储故障进行恢复。

这里所说的存储故障恢复命令包括磁盘故障恢复命令、网络故障恢复命令、电源故障恢复命令、文件系统故障恢复命令中的任一项,并且容易理解的是,其与在步骤204中所说的存储故障注入命令是相对应的。相似地,当存储故障恢复命令为电源故障恢复命令时,控制主机具体是通过ipmitool工具,向待测试主机的基板管理控制器发送电源故障恢复命令的,以便基板管理控制器对待测试主机的电源进行修复。

步骤208:待测试主机依据存储故障恢复命令,进行存储故障恢复。

当待测试主机接收到控制主机发送的存储故障恢复命令之后,便可以进行存储故障恢复操作。存储故障的恢复操作与步骤205中存储故障的注入操作是相反的过程。例如,若待测试主机在步骤205中执行磁盘故障注入操作时是将磁盘弹出,则其在步骤208中执行磁盘故障恢复操作时是将磁盘进仓;再例如,若待测试主机在步骤205中执行网络故障注入操作时是将网络端口断开,则其在步骤208中执行网络故障恢复操作时是将网络断口连接。

如前所述,待测试主机的具体恢复情况可以通过控制主机采集的状态数据进行监控,直到待测试主机恢复到故障测试之前的状态,以便待测试主机进行正常运行或者进行下一项故障测试。

步骤209:对用户的监控取消权限进行校验,若校验成功,则进入步骤210。

当对待测试主机的故障测试工作结束后,或者其他不需要监控待测试主机状态的情况时,可以进行监控功能的取消操作。出于安全考虑,此时依旧可以对用户的监控取消权限进行校验。具体校验的方式仍可有多种选择,这里不再赘述。

步骤210:控制主机停止采集和显示待测试主机的状态数据。

可见,本申请实施例所提供的存储故障注入方法,在本申请所提供的第一种存储故障注入方法的基础上,增加了对存储故障的恢复操作,使得待测试主机经可以进行多次故障测试,并且并不影响待测试主机在故障测试结束之后的正常使用和运行;本申请实施例还增加了对待测试主机的监控操作,可以方便地监测到待测试主机存储故障的注入情况和恢复情况;除此之外,本申请实施例还增加了对用户各项操作的权限校验,充分保证了系统的安全性。

下面对本申请实施例所提供的存储故障注入系统进行介绍。下文描述的存储故障注入系统与上文描述的存储故障注入方法可相互对应参照。

请参阅图3,图3为本申请所提供的一种存储故障注入系统的结构框图;包括控制主机301、待测试主机302;其中,控制主机301又包括磁盘故障模块3011、网络故障模块3012、电源故障模块3013、文件系统故障模块3014。

控制主机301主要用于向待测试主机302发送存储故障注入命令;所说的存储故障注入命令具体可以为磁盘故障注入命令、网络故障注入命令、电源故障注入命令、文件系统故障注入命令中的任一项,分别可以令待测试主机模拟出磁盘故障、网络故障、电源故障、文件系统故障。具体的,控制主机301可以通过远程登录的方式实现与待测试主机间的数据通信,其磁盘故障模块3011用于向待测试主机302发送磁盘故障注入命令;网络故障模块3012用于向待测试主机302发送网络故障注入命令;电源故障模块3013用于向待测试主机302发送电源故障注入命令;文件系统故障模块3014用于向待测试主机302发送文件系统故障注入命令。并且,当存储故障注入命令为电源故障注入命令时,电源故障模块3013具体是通过ipmitool工具,向待测试主机302的基板管理控制器发送电源故障注入命令的。

待测试主机302主要用于根据控制主机301发送的存储故障注入命令模拟出存储故障环境,以便进行故障测试。

可见,本申请所提供的存储故障注入系统,利用控制主机301向待测试主机302发送各类存储故障注入命令,使得待测试主机302能够根据指令操作,模拟出各类存储故障的环境,因而相比于人工模拟,大大简化了存储故障的注入操作,提高了效率又减少了人力成本。

请参阅图4,图4为本申请所提供的又一种存储故障注入系统的结构框图。

在图3所示的存储故障注入系统的基础上,本申请实施例中的控制主机301增加了监控模块3015和校验模块3016;并且,本申请实施例中,控制主机301还用于在每项故障测试结束后,向待测试主机302发送存储故障恢复命令,使待测试主机恢复到故障测试之前的状态,以便其接下来进行正常运行或者下一项故障测试。

具体的,磁盘故障模块3011还用于向待测试主机302发送磁盘故障恢复命令;网络故障模块3012还用于向待测试主机302发送网络故障恢复命令;电源故障模块3013还用于向待测试主机302发送电源故障恢复命令;文件系统故障模块3014还用于向待测试主机302发送文件系统故障恢复命令。并且,当存储故障恢复命令为电源故障恢复命令时,电源故障模块3013具体是通过ipmitool工具向待测试主机302的基板管理控制器发送电源故障恢复命令的,以便基板管理控制器对待测试主机302的电源进行修复。

监控模块3015用于采集并显示待测试主机302的各项状态数据,包括磁盘运行状态数据、网络信号状态数据、电源状态数据和文件系统状态数据,以便用户可以直观地监控待测试主机的存储故障注入情况或者恢复情况。

校验模块3016用于在向待测试主机302进行监控、存储故障注入或者存储故障恢复之前,对用户的操作权限进行校验,若校验通过,则控制主机301继续执行操作。所说的权限校验可以有多种方式,例如指纹验证、声纹验证、用户名密码验证等。其中最简单常用的是用户名密码验证的方式,并且,对于不同的操作类型,甚至同一操作类型中的不同操作内容,都可以设置一套专用的用户名密码,以进一步提高系统的安全性。

本申请实施例所提供的存储故障注入系统中的其他模块,请参考图3中所示的相同部分,这里就不再赘述。

可见,本申请所提供的存储故障注入系统,在图3所示的存储故障注入系统的基础上,还可以实现对存储故障的修复操作,方便待测试主机302的正常使用或者下一项故障测试的进行;同时本申请实施例还可以对待测试主机302的各类状态数据进行监控,以便直观地监测存储故障的注入情况或者修复情况;此外,本申请实施例还增加了对用户各项操作的权限校验,大大增强了系统的通信安全。

本申请中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

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