◆夏奕
基于故障注入的虛擬化平臺可靠性測試
◆夏奕
(湖北交通職業(yè)技術(shù)學(xué)院 信息中心 湖北 430079)
虛擬化平臺作為信息基礎(chǔ)環(huán)境,承載了大量用戶環(huán)境,其可靠性直接影響到大量用戶的安全運(yùn)行。在可靠性測試技術(shù)中,故障注入技術(shù)應(yīng)用十分廣泛。通過故障仿真和故障注入的方式,解決虛擬化平臺故障驗(yàn)證不全、低頻和低重現(xiàn)故障難以檢驗(yàn)分析驗(yàn)證的問題。本文設(shè)計(jì)了一個基于故障注入的虛擬化平臺測試環(huán)境,通過構(gòu)建故障探針環(huán)境、故障注入框架、容錯測試模型、日志分析機(jī)制,實(shí)現(xiàn)虛擬化平臺的故障模型構(gòu)建、故障注入、容錯機(jī)制檢驗(yàn)、故障日志分析,支撐對虛擬化平臺的可靠性測試驗(yàn)證和可靠性機(jī)制優(yōu)化。
可靠性;故障注入;可靠性測試
隨著計(jì)算機(jī)技術(shù)的發(fā)展,云計(jì)算技術(shù)在各行各業(yè)的應(yīng)用普及,基于云計(jì)算的應(yīng)用軟件的種類也越來越多。虛擬化平臺作為云計(jì)算的信息基礎(chǔ)環(huán)境,承載了大量用戶的應(yīng)用環(huán)境,虛擬化平臺在使用過程中出現(xiàn)故障、崩潰或失效,將導(dǎo)致一系列嚴(yán)重的事故與后果[1]。軟件測試階段不僅需要進(jìn)行軟件的功能、性能測試,還需要對軟件進(jìn)行可靠性測試,以確保新開發(fā)的軟件上線后能夠正常運(yùn)行。在可靠性測試技術(shù)中,故障注入技術(shù)應(yīng)用十分廣泛,與傳統(tǒng)可靠性評測技術(shù)相比,它具有無需建立和求解復(fù)雜的系統(tǒng)模型、實(shí)驗(yàn)時(shí)間短、結(jié)果精度高等優(yōu)點(diǎn),已引起眾多學(xué)者和研究人員的重視[2]。同時(shí),故障注入在解決虛擬化平臺的故障驗(yàn)證不全、低頻和低重現(xiàn)故障難以檢驗(yàn)分析驗(yàn)證的問題也有較大的優(yōu)勢,目前對故障注入技術(shù)應(yīng)用非常成功的領(lǐng)域之一是容錯系統(tǒng)的可靠性驗(yàn)證[2]。
本文介紹了可靠性測試的基本概念,設(shè)計(jì)了一個基于故障注入的虛擬化平臺測試環(huán)境,通過構(gòu)建故障探針環(huán)境、故障注入框架、容錯測試模型、日志分析機(jī)制,實(shí)現(xiàn)虛擬化平臺的故障模型構(gòu)建、故障注入、容錯機(jī)制檢驗(yàn)、故障日志分析,支撐對虛擬化平臺的可靠性測試驗(yàn)證和可靠性機(jī)制優(yōu)化。
可靠性是指軟件在所規(guī)定的環(huán)境條件下和規(guī)定的時(shí)間內(nèi)正確地完成任務(wù)的能力。1983年,美國IEEE計(jì)算機(jī)學(xué)會對軟件可靠性[3]給出如下的定義:(1)在規(guī)定的條件下,在規(guī)定的時(shí)間內(nèi),軟件不引起系統(tǒng)失效的概率。該概率是系統(tǒng)輸入和系統(tǒng)使用的函數(shù),也是軟件中存在的缺陷的函數(shù)。(2)在規(guī)定的時(shí)間周期內(nèi),在所述條件下程序執(zhí)行所要求的功能的能力[3]。
可靠性測試方法主要有兩種類型:(1)基于操作剖面開展測試,按照軟件操作剖面對軟件進(jìn)行隨機(jī)測試的測試方法[4]。根據(jù)軟件在客戶實(shí)際使用過程的各種操作的使用概率選擇操作剖面,對軟件系統(tǒng)進(jìn)行可靠性測試。(2)基于故障注入開展測試。故障注入是按照選定的故障模型,采用人工的方法將故障注入到特定的目標(biāo)系統(tǒng)中,同時(shí)采集系統(tǒng)對所注入故障的反應(yīng)信息,通過這些信息對系統(tǒng)進(jìn)行可靠性分析[5]。
軟件故障注入技術(shù)與其他可靠性評價(jià)技術(shù)相比,故障注入方法能方便靈活、便捷有效地處理各種可靠性問題。故障注入技術(shù)有模擬實(shí)現(xiàn)的故障注入、硬件實(shí)現(xiàn)的故障注入和軟件實(shí)現(xiàn)的故障注入三種[6]。軟件故障注入是通過修改硬件或軟件的狀態(tài)變量或相關(guān)數(shù)據(jù)來模擬故障的產(chǎn)生、加速系統(tǒng)的失效,分為靜態(tài)注入和動態(tài)注入兩種類型[7]。靜態(tài)故障注入主要通過程序變異的方法,通過改變原程序,使被測系統(tǒng)文件靜態(tài)的存在錯誤,從而使其運(yùn)行時(shí)出現(xiàn)故障[8]。靜態(tài)注入占用很少的系統(tǒng)資源,能夠較好地保持系統(tǒng)原來的時(shí)序,這種注入法有很好的優(yōu)化性[9]。動態(tài)注入是在被測系統(tǒng)正常運(yùn)行過程中,實(shí)現(xiàn)故障注入,該種方式是根據(jù)被測系統(tǒng)的運(yùn)行狀態(tài)或條件注入故障的,具有靈活性[10]。
虛擬化平臺網(wǎng)絡(luò)安全測試系統(tǒng)組成如圖1所示。該系統(tǒng)由探針管理、故障注入管理、容錯測試管理、日志管理模塊組成。
圖1 系統(tǒng)組成
探針管理模塊通過插件式探針的配置,能夠?qū)崿F(xiàn)對虛擬機(jī)安裝、查看、運(yùn)行和卸載探針等功能,進(jìn)而實(shí)現(xiàn)對虛擬機(jī)進(jìn)行故障注入和測試用例輸入等。
故障注入管理模塊通過配置和調(diào)用多種不同類型的探針,實(shí)現(xiàn)對事件通道機(jī)制、超級調(diào)用機(jī)制、虛擬機(jī)遷移機(jī)制、訪問控制機(jī)制、內(nèi)存管理機(jī)制、硬件資源分配機(jī)制、狀態(tài)查詢機(jī)制、虛擬機(jī)在底層CPU故障時(shí)的機(jī)制、虛擬機(jī)在內(nèi)存故障時(shí)的機(jī)制、虛擬機(jī)在底層文件故障時(shí)的機(jī)制、虛擬機(jī)在網(wǎng)絡(luò)中斷時(shí)機(jī)制的注入和容錯性測評。
容錯測試管理模塊通過對節(jié)點(diǎn)和進(jìn)程容錯能力、本地文件和目錄容錯能力、網(wǎng)絡(luò)容錯能力等進(jìn)行測試,實(shí)現(xiàn)在虛擬化系統(tǒng)底層遇到故障時(shí)的健壯性和可靠性測評,并對各項(xiàng)測試結(jié)果的匯總、展示、實(shí)驗(yàn)結(jié)果分析和報(bào)告導(dǎo)出,支持通過可視化圖表的形式進(jìn)行導(dǎo)出。
日志管理模塊實(shí)現(xiàn)對各模塊不同操作的記錄,從而實(shí)現(xiàn)對錯誤的精準(zhǔn)定位,以便于問題修復(fù)。各系統(tǒng)的操作日志信息將準(zhǔn)實(shí)時(shí)地展示在系統(tǒng)界面。
系統(tǒng)采用標(biāo)準(zhǔn)的虛擬化體系架構(gòu)設(shè)計(jì),具有明晰的分層結(jié)構(gòu),各層次之間通過接口實(shí)現(xiàn)數(shù)據(jù)交互,支持插件式的工具新增、刪除和更新等操作,降低了系統(tǒng)耦合度的同時(shí)提升了系統(tǒng)的可靠性和健壯性。
系統(tǒng)層次結(jié)構(gòu)如圖2所示,共分為硬件資源層、虛擬化層、核心業(yè)務(wù)層和系統(tǒng)展示層四個層次:
(1)硬件資源層
硬件資源層提供平臺運(yùn)行所需的各類硬件資源,包括計(jì)算資源、網(wǎng)絡(luò)資源、數(shù)據(jù)資源和安全設(shè)備等。計(jì)算資源包括計(jì)算服務(wù)器、主機(jī)等;網(wǎng)絡(luò)資源包括交換機(jī)、路由器及帶寬等;數(shù)據(jù)資源包括存儲設(shè)備、數(shù)據(jù)庫等;安全設(shè)備包括防火墻、入侵檢測、入侵防御、審計(jì)等。
(2)虛擬化層
虛擬化層提供節(jié)點(diǎn)虛擬化支撐、網(wǎng)絡(luò)虛擬化支撐和虛實(shí)互聯(lián)的接口。虛擬化層支持基于KVM和XEN虛擬化技術(shù)的節(jié)點(diǎn)生成,各類節(jié)點(diǎn)將作為目標(biāo)待測機(jī),被部署故障注入工具以及負(fù)載工具,用于進(jìn)行容錯性測試與評估。虛擬化層實(shí)現(xiàn)了控制端和待測端的物理部署分離,避免了待測端因故障而崩潰宕機(jī)影響控制端的正常工作??刂茩C(jī)與各待測節(jié)點(diǎn)之間使用SSH遠(yuǎn)程連接進(jìn)行通信,無需在控制機(jī)與待測節(jié)點(diǎn)上部署額外的通信程序,能夠?qū)崿F(xiàn)各節(jié)點(diǎn)和平臺的輕量化,也能保證整個故障注入實(shí)驗(yàn)的順利實(shí)施。
圖2 系統(tǒng)架構(gòu)圖
(3)核心業(yè)務(wù)層
核心業(yè)務(wù)層實(shí)現(xiàn)對故障注入工具、容錯測試工具、負(fù)載工具的實(shí)際調(diào)用。通過對不同種類工具的調(diào)用,實(shí)現(xiàn)對事件通道機(jī)制、超級調(diào)用機(jī)制、虛擬機(jī)遷移機(jī)制、訪問控制機(jī)制、內(nèi)存管理機(jī)制、硬件資源分配機(jī)制、狀態(tài)查詢機(jī)制、虛擬機(jī)在底層CPU故障時(shí)的機(jī)制、虛擬機(jī)在內(nèi)存故障時(shí)的機(jī)制、虛擬機(jī)在底層文件故障時(shí)的機(jī)制、虛擬機(jī)在網(wǎng)絡(luò)中斷時(shí)機(jī)制、節(jié)點(diǎn)和進(jìn)程容錯能力、本地文件和目錄容錯能力、網(wǎng)絡(luò)容錯能力等進(jìn)行評估測試,并實(shí)現(xiàn)工具運(yùn)行過程中實(shí)驗(yàn)數(shù)據(jù)的采集和反饋。
(4)系統(tǒng)展示層
系統(tǒng)展示層通過可視化的人機(jī)交互界面,提供各種可視化組件和展示方式,將采集、分析的數(shù)據(jù)以各種維度進(jìn)行可視化展示,提供可視化的配置和管理。此外,還提供測評結(jié)果導(dǎo)出和日志查看等人機(jī)接口,便于用戶對實(shí)驗(yàn)結(jié)果和系統(tǒng)狀態(tài)的分析。
基于以上故障注入架構(gòu)設(shè)計(jì),本文實(shí)現(xiàn)了對虛擬化平臺的事件故障模擬注入、超級調(diào)用故障模擬注入、虛擬機(jī)遷移故障注入、訪問控制故障注入、內(nèi)存故障注入、硬件資源分配故障注入、網(wǎng)絡(luò)故障注入、文件故障注入、網(wǎng)絡(luò)中斷故障注入等多種類型的故障模型注入,通過故障注入驗(yàn)證虛擬化平臺的可靠性保障機(jī)制。
基于對故障現(xiàn)象的分析,同時(shí)對虛擬化化平臺中容錯機(jī)制和容錯能力進(jìn)行測試,評估虛擬化系統(tǒng)底層遇到故障時(shí)的健壯性和可靠性,并對各項(xiàng)測試結(jié)果的匯總、展示、實(shí)驗(yàn)結(jié)果分析和報(bào)告導(dǎo)出。
通過基于故障注入的測試環(huán)境對虛擬化平臺進(jìn)行全面的人工模擬故障測試,檢驗(yàn)和優(yōu)化了虛擬化平臺的可靠性保障機(jī)制。
為驗(yàn)證虛擬化平臺可靠性機(jī)制及容錯機(jī)制,保障虛擬化平臺的高可靠性需求,本文主要針對虛擬化平臺故障驗(yàn)證不全面、低頻和低重現(xiàn)故障難以檢驗(yàn)分析驗(yàn)證的問題,設(shè)計(jì)了一個基于故障注入的虛擬化平臺測試環(huán)境,通過構(gòu)建故障探針環(huán)境、故障注入框架、容錯測試模型、日志分析機(jī)制,實(shí)現(xiàn)虛擬化平臺的故障模型構(gòu)建、故障注入、容錯機(jī)制檢驗(yàn)、故障日志分析,支撐對虛擬化平臺的可靠性測試驗(yàn)證和可靠性機(jī)制優(yōu)化。最后,通過對虛擬化平臺的故障注入測試,表明其能有效檢測虛擬化平臺存在的可靠性和容錯性漏洞,較好的支撐了虛擬化平臺的可靠性驗(yàn)證和優(yōu)化。
[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]. 哈爾濱:哈爾濱工業(yè)大學(xué),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]劉縉,朱家稷,張海勇.大規(guī)模云計(jì)算平臺的技術(shù)挑戰(zhàn)[J].程序員,2012(2):I0007-I0009.
[9]馮剛.面向云計(jì)算平臺的虛擬機(jī)故障注入工具研究與設(shè)計(jì)[D].哈爾濱工業(yè)大學(xué),2013.
[10]麻彥東.面向虛擬化系統(tǒng)的故障注入平臺的研究與設(shè)計(jì)[D]. 哈爾濱工業(yè)大學(xué),2015.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2021年11期