APP下载

基于故障注入的虚拟化平台可靠性测试

2021-12-14夏奕

网络安全技术与应用 2021年11期
关键词:故障注入日志虚拟化

◆夏奕

基于故障注入的虚拟化平台可靠性测试

◆夏奕

(湖北交通职业技术学院 信息中心 湖北 430079)

虚拟化平台作为信息基础环境,承载了大量用户环境,其可靠性直接影响到大量用户的安全运行。在可靠性测试技术中,故障注入技术应用十分广泛。通过故障仿真和故障注入的方式,解决虚拟化平台故障验证不全、低频和低重现故障难以检验分析验证的问题。本文设计了一个基于故障注入的虚拟化平台测试环境,通过构建故障探针环境、故障注入框架、容错测试模型、日志分析机制,实现虚拟化平台的故障模型构建、故障注入、容错机制检验、故障日志分析,支撑对虚拟化平台的可靠性测试验证和可靠性机制优化。

可靠性;故障注入;可靠性测试

1 引言

随着计算机技术的发展,云计算技术在各行各业的应用普及,基于云计算的应用软件的种类也越来越多。虚拟化平台作为云计算的信息基础环境,承载了大量用户的应用环境,虚拟化平台在使用过程中出现故障、崩溃或失效,将导致一系列严重的事故与后果[1]。软件测试阶段不仅需要进行软件的功能、性能测试,还需要对软件进行可靠性测试,以确保新开发的软件上线后能够正常运行。在可靠性测试技术中,故障注入技术应用十分广泛,与传统可靠性评测技术相比,它具有无需建立和求解复杂的系统模型、实验时间短、结果精度高等优点,已引起众多学者和研究人员的重视[2]。同时,故障注入在解决虚拟化平台的故障验证不全、低频和低重现故障难以检验分析验证的问题也有较大的优势,目前对故障注入技术应用非常成功的领域之一是容错系统的可靠性验证[2]。

本文介绍了可靠性测试的基本概念,设计了一个基于故障注入的虚拟化平台测试环境,通过构建故障探针环境、故障注入框架、容错测试模型、日志分析机制,实现虚拟化平台的故障模型构建、故障注入、容错机制检验、故障日志分析,支撑对虚拟化平台的可靠性测试验证和可靠性机制优化。

2 软件可靠性基本概念

可靠性是指软件在所规定的环境条件下和规定的时间内正确地完成任务的能力。1983年,美国IEEE计算机学会对软件可靠性[3]给出如下的定义:(1)在规定的条件下,在规定的时间内,软件不引起系统失效的概率。该概率是系统输入和系统使用的函数,也是软件中存在的缺陷的函数。(2)在规定的时间周期内,在所述条件下程序执行所要求的功能的能力[3]。

可靠性测试方法主要有两种类型:(1)基于操作剖面开展测试,按照软件操作剖面对软件进行随机测试的测试方法[4]。根据软件在客户实际使用过程的各种操作的使用概率选择操作剖面,对软件系统进行可靠性测试。(2)基于故障注入开展测试。故障注入是按照选定的故障模型,采用人工的方法将故障注入到特定的目标系统中,同时采集系统对所注入故障的反应信息,通过这些信息对系统进行可靠性分析[5]。

软件故障注入技术与其他可靠性评价技术相比,故障注入方法能方便灵活、便捷有效地处理各种可靠性问题。故障注入技术有模拟实现的故障注入、硬件实现的故障注入和软件实现的故障注入三种[6]。软件故障注入是通过修改硬件或软件的状态变量或相关数据来模拟故障的产生、加速系统的失效,分为静态注入和动态注入两种类型[7]。静态故障注入主要通过程序变异的方法,通过改变原程序,使被测系统文件静态的存在错误,从而使其运行时出现故障[8]。静态注入占用很少的系统资源,能够较好地保持系统原来的时序,这种注入法有很好的优化性[9]。动态注入是在被测系统正常运行过程中,实现故障注入,该种方式是根据被测系统的运行状态或条件注入故障的,具有灵活性[10]。

3 系统架构

3.1 系统组成

虚拟化平台网络安全测试系统组成如图1所示。该系统由探针管理、故障注入管理、容错测试管理、日志管理模块组成。

图1 系统组成

探针管理模块通过插件式探针的配置,能够实现对虚拟机安装、查看、运行和卸载探针等功能,进而实现对虚拟机进行故障注入和测试用例输入等。

故障注入管理模块通过配置和调用多种不同类型的探针,实现对事件通道机制、超级调用机制、虚拟机迁移机制、访问控制机制、内存管理机制、硬件资源分配机制、状态查询机制、虚拟机在底层CPU故障时的机制、虚拟机在内存故障时的机制、虚拟机在底层文件故障时的机制、虚拟机在网络中断时机制的注入和容错性测评。

容错测试管理模块通过对节点和进程容错能力、本地文件和目录容错能力、网络容错能力等进行测试,实现在虚拟化系统底层遇到故障时的健壮性和可靠性测评,并对各项测试结果的汇总、展示、实验结果分析和报告导出,支持通过可视化图表的形式进行导出。

日志管理模块实现对各模块不同操作的记录,从而实现对错误的精准定位,以便于问题修复。各系统的操作日志信息将准实时地展示在系统界面。

3.2 系统架构设计

系统采用标准的虚拟化体系架构设计,具有明晰的分层结构,各层次之间通过接口实现数据交互,支持插件式的工具新增、删除和更新等操作,降低了系统耦合度的同时提升了系统的可靠性和健壮性。

系统层次结构如图2所示,共分为硬件资源层、虚拟化层、核心业务层和系统展示层四个层次:

(1)硬件资源层

硬件资源层提供平台运行所需的各类硬件资源,包括计算资源、网络资源、数据资源和安全设备等。计算资源包括计算服务器、主机等;网络资源包括交换机、路由器及带宽等;数据资源包括存储设备、数据库等;安全设备包括防火墙、入侵检测、入侵防御、审计等。

(2)虚拟化层

虚拟化层提供节点虚拟化支撑、网络虚拟化支撑和虚实互联的接口。虚拟化层支持基于KVM和XEN虚拟化技术的节点生成,各类节点将作为目标待测机,被部署故障注入工具以及负载工具,用于进行容错性测试与评估。虚拟化层实现了控制端和待测端的物理部署分离,避免了待测端因故障而崩溃宕机影响控制端的正常工作。控制机与各待测节点之间使用SSH远程连接进行通信,无需在控制机与待测节点上部署额外的通信程序,能够实现各节点和平台的轻量化,也能保证整个故障注入实验的顺利实施。

图2 系统架构图

(3)核心业务层

核心业务层实现对故障注入工具、容错测试工具、负载工具的实际调用。通过对不同种类工具的调用,实现对事件通道机制、超级调用机制、虚拟机迁移机制、访问控制机制、内存管理机制、硬件资源分配机制、状态查询机制、虚拟机在底层CPU故障时的机制、虚拟机在内存故障时的机制、虚拟机在底层文件故障时的机制、虚拟机在网络中断时机制、节点和进程容错能力、本地文件和目录容错能力、网络容错能力等进行评估测试,并实现工具运行过程中实验数据的采集和反馈。

(4)系统展示层

系统展示层通过可视化的人机交互界面,提供各种可视化组件和展示方式,将采集、分析的数据以各种维度进行可视化展示,提供可视化的配置和管理。此外,还提供测评结果导出和日志查看等人机接口,便于用户对实验结果和系统状态的分析。

4 验证与分析

基于以上故障注入架构设计,本文实现了对虚拟化平台的事件故障模拟注入、超级调用故障模拟注入、虚拟机迁移故障注入、访问控制故障注入、内存故障注入、硬件资源分配故障注入、网络故障注入、文件故障注入、网络中断故障注入等多种类型的故障模型注入,通过故障注入验证虚拟化平台的可靠性保障机制。

基于对故障现象的分析,同时对虚拟化化平台中容错机制和容错能力进行测试,评估虚拟化系统底层遇到故障时的健壮性和可靠性,并对各项测试结果的汇总、展示、实验结果分析和报告导出。

通过基于故障注入的测试环境对虚拟化平台进行全面的人工模拟故障测试,检验和优化了虚拟化平台的可靠性保障机制。

5 结束语

为验证虚拟化平台可靠性机制及容错机制,保障虚拟化平台的高可靠性需求,本文主要针对虚拟化平台故障验证不全面、低频和低重现故障难以检验分析验证的问题,设计了一个基于故障注入的虚拟化平台测试环境,通过构建故障探针环境、故障注入框架、容错测试模型、日志分析机制,实现虚拟化平台的故障模型构建、故障注入、容错机制检验、故障日志分析,支撑对虚拟化平台的可靠性测试验证和可靠性机制优化。最后,通过对虚拟化平台的故障注入测试,表明其能有效检测虚拟化平台存在的可靠性和容错性漏洞,较好的支撑了虚拟化平台的可靠性验证和优化。

[1]Kanawati G,Kanawati N,and Abraham J,“FERRARI:A Tool for the Validation of System Dependability Properties,” FTCS-22,Digest of Papers,pp. 336-344,1992.

[2]Le M,Gallagher A,and Tamir Y,“Challenges and Opportunities with Fault Injection in Virtualized Systems,” in 1st Int. Workshop on Virtualization Performance:Analysis,Characterization,and Tools,2008.

[3]Arlat J,Crouzet Y,Karlsson J,et al. Comparison of physical and software-implemented fault injection techniques[J]. Computers,IEEE Transactions on,2003,52(9):1115-1133.

[4]Segall Z,and Lin T,“FIAT:Fault Injection Based Automated Testing Environment,” Proc. 18th Int’l Symp. Fault-Tolerant Computing,pp. 102-107,June 1988.

[5]Han S,Rosenberg H,and Shin K,“DOCTOR: An Integrated Software Fault Injection Environment,” Technical Report,Univ. of Michigan,1993.

[6]王胜文.基于软件的故障注入方法研究[D]. 哈尔滨:哈尔滨工业大学,2005.

[7]Kao W,Iyer R,and Tang D,“FINE: A Fault Injection and Monitoring Environment for Tracing the UNIXSystem Behavior Under Faults,” IEEE Trans. Software Eng., vol.19. no.11,Nov. 1993.

[8]刘缙,朱家稷,张海勇.大规模云计算平台的技术挑战[J].程序员,2012(2):I0007-I0009.

[9]冯刚.面向云计算平台的虚拟机故障注入工具研究与设计[D].哈尔滨工业大学,2013.

[10]麻彦东.面向虚拟化系统的故障注入平台的研究与设计[D]. 哈尔滨工业大学,2015.

猜你喜欢

故障注入日志虚拟化
模拟训练装备故障注入系统研究
一名老党员的工作日志
扶贫日志
基于OpenStack虚拟化网络管理平台的设计与实现
SM4算法前四轮约减轮故障注入分析
面向FPGA的故障注入测试技术研究*
雅皮的心情日志
对基于Docker的虚拟化技术的几点探讨
游学日志
浅析虚拟化技术的安全保障