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