国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于KVM虛擬機的故障分析和注入

2014-12-25 08:58:37徐紹飛
電腦知識與技術 2014年33期
關鍵詞:虛擬機故障注入云計算

徐紹飛

摘要:云計算作為未來計算機網(wǎng)絡發(fā)展的趨勢,其可靠性越來越受到重視。Kernel-based virtual machine作為Linux下一種內核虛擬機實現(xiàn)的方式,其故障危害性也越來越受到關注。該文運用源碼分析的方式進行虛擬機故障獲取分析,通過故障注入進行故障激活,根據(jù)KVM虛擬機的響應行為來判斷故障對其功能的影響,從而為云計算下KVM虛擬機故障危害性分析提供一定的參考。

關鍵詞:云計算;Linux;KVM;虛擬機;故障注入

中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2014)33-8051-04

Abstract: With the development of computer technology, cloud computing is a new trend of computer network, and the reliability of it is becoming more and more important. As a mean of virtualization in Linux, kernel-based virtual machine plays an important role in cloud computing. This paper uses the approach of source code analysis to acquire the faults in KVM, and it uses fault injection to make the faults activate. Based on the response in KVM, it is possible to determine the effects of the functions in KVM. And it is one way to make the reference of fault criticality analysis of KVM in cloud computing.

Key words: cloud computing;Linux;KVM;virtual machine;fault injection

近年來,云計算這個新的IT概念在全球迅速普及。云計算是由Google提出的嶄新的網(wǎng)絡應用模式,在誕生之日起便決定它對網(wǎng)絡生產(chǎn)、生活可能的革命性影響,也會因此對人的思維方式、判斷方式及對世界的看法,產(chǎn)生可能的根本性變化。由于它是多種技術混合演進的結果,其成熟度較高,又有大公司推動,發(fā)展極為迅速,產(chǎn)業(yè)形態(tài)逐步完善,成為IT產(chǎn)業(yè)發(fā)展的又一大動力和趨勢。

虛擬化技術是云計算的關鍵技術之一。虛擬化技術不僅降低了IT成本,而且還增強了系統(tǒng)安全性和可靠性,虛擬化的概念也逐漸深入到人們日常的工作與生活中。硬件輔助虛擬化技術彌補了軟件虛擬機技術性能上的缺陷,使得虛擬機具有接近物理機的性能表現(xiàn),并促成了kernel-based virtual machine(KVM)等新的虛擬機技術解決方案。

任何計算機系統(tǒng)都有出現(xiàn)故障的時候,可能發(fā)生在測試階段,也可能發(fā)生在系統(tǒng)剛剛上線,還可能發(fā)生在已經(jīng)穩(wěn)定運行很多年的系統(tǒng)上,又可能發(fā)生在系統(tǒng)一個小小的升級之后。而這些系統(tǒng)出現(xiàn)故障所帶來的負面影響則可大可小,小到一個終端的軟件無法使用,大到整個系統(tǒng)癱瘓,所有程序不能運行。確定有哪些系統(tǒng)出現(xiàn)問題,會波及到核心業(yè)務的停滯范圍,以及理解并確定如何在出現(xiàn)故障的時候按照緊急度權衡,從而避免影響面最大的災難事件發(fā)生。因此,在云計算背景下,分析虛擬機的故障也變得尤其重要。

1 KVM虛擬機分析與故障獲取分析及其注入

1.1 KVM結構及原理分析

KVM是Linux下x86 硬件平臺上的全功能虛擬化解決方案。KVM 基本結構有兩部分組成。KVM基本結構有兩部分組成[1]。這兩部分一個是KVM Driver ,它已經(jīng)成為Linux 內核的一個模塊,負責虛擬機的創(chuàng)建,虛擬內存的分配,虛擬CPU寄存器的讀寫以及虛擬CPU的運行等。另外一個是修改過的Qemu,用于模擬PC硬件的用戶空間組件,提供I/O設備模型以及訪問外設的途徑。

KVM的基本結構如圖1所示。

KVM虛擬機的基本工作原理是,用戶模式的Qemu利用接口libkvm通過ioctl系統(tǒng)調用進入內核模式。KVM Driver為虛擬機創(chuàng)建虛擬內存和虛擬CPU后執(zhí)行vmlaunch指令進入客戶模式,然后裝載Guest OS執(zhí)行。如果Guest OS發(fā)生外部中斷或者影子頁表缺頁之類的事件,暫停Guest OS的執(zhí)行,退出客戶模式進行一些必要的處理。然后重新進入客戶模式,執(zhí)行客戶代碼。如果發(fā)生I/O事件或者信號隊列中有信號到達,就會進入用戶模式處理。

1.2 KVM虛擬機創(chuàng)建和運行的流程

KVM虛擬機創(chuàng)建和運行的大致流程如下[2]:

1) 申明一個kvm_context_t變量,用以描述用戶態(tài)虛擬機上下文信息。

2) 調用kvm_init()函數(shù),該函數(shù)完成虛擬機上下文信息的初始化。

3) 調用函數(shù)kvm_create()創(chuàng)建虛擬機實例,該函數(shù)通過ioctl系統(tǒng)調用創(chuàng)建虛擬機相關的內核數(shù)據(jù)結構并且返回文件描述符給用戶態(tài)kvm_context_t數(shù)據(jù)結構。

4) 創(chuàng)建內核pit以及mmio等外設模擬設備。

5) 調用kvm_create_vcpu()函數(shù)來創(chuàng)建虛擬處理器,該函數(shù)通過ioctl系統(tǒng)調用向由vm_fd文件描述符指向的虛擬文件創(chuàng)建虛擬處理器,并將虛擬處理器的文件描述符返回給用戶態(tài)程序。

6) 用戶態(tài)的Qemu程序申請客戶機用戶空間,用以加載和運行客戶機代碼。

7) 為了使得客戶虛擬機正確執(zhí)行,必須要在內核中為客戶機建立正確的內存映射關系,即影子頁表信息。調用函數(shù)kvm_create_phys_mem()創(chuàng)建客戶機內存映射關系,該函數(shù)主要通過ioctl系統(tǒng)調用向vm_fd文件描述符指向的虛擬文件建立影子頁表信息。

8) 當創(chuàng)建好虛擬處理器和影子頁表后,即可讀取客戶機到指定分配的空間中,然后調度虛擬處理器運行。調用函數(shù)kvm_run(),該函數(shù)通過ioctl系統(tǒng)調用由虛擬處理器文件描述符指向的虛擬文件來調度虛擬處理器的執(zhí)行,將虛擬處理器vcpu信息加載到物理處理器中,通過vm_entry執(zhí)行進入客戶機執(zhí)行。

1.3 KVM故障獲取原理

KVM作為Linux中的一個模塊,與Linux非常相似,可以分為內核空間和用戶空間兩部分。內核空間主要負責對虛擬機的實際操作、系統(tǒng)資源的管理等,而用戶空間主要用于實現(xiàn)用戶所需要的各種功能。內核空間中的相關操作是需要關注的。然而,直接研究KVM內核的故障,數(shù)量龐大而且復雜性較高。KVM所有API都以ioctl( )系統(tǒng)調用的形式出現(xiàn)[3]。因此,我們將KVM內核可能存在的故障抽象到KVM的API上,使用KVM的系統(tǒng)調用產(chǎn)生的錯誤來反映KVM行為上的故障(覆蓋率不是100%,約60%)。在KVM開發(fā)過程和使用過程中,會遇到很多軟件錯誤。經(jīng)驗豐富的開發(fā)人員為這些易出錯的代碼點增加了保護,即異常處理機制,方式是通過C語言中的判斷語句+跳轉出錯處理。但是,該故障的發(fā)生頻率可能會降低,但是故障確實存在并且會在一定情況下暴露出來,可能對虛擬機功能產(chǎn)生影響。

1.4 KVM故障獲取分析過程

從圖6可以看到,虛擬機創(chuàng)建失敗,錯誤信息為KVM_GET_SUPPORTED_CPUID failed: Bad address。結合對所注入的變異體二進制代碼分析,在判斷完地址的跳轉指令JZ變異為NOP,導致存放CPUID的地址指向錯誤。KVM虛擬機創(chuàng)建時,在創(chuàng)建虛擬機體系結構的信息時,由于用戶態(tài)無法獲取虛擬機所支持的KVM虛擬機CPUID信息,導致虛擬機創(chuàng)建失敗。則2.2.2節(jié)中的故障得到了激活驗證,該故障確實存在,并且會影響到KVM虛擬機創(chuàng)建。

2 結論

第1章中,該文描述了KVM虛擬機工作原理和一種故障獲取的方法,并設計了故障注入實驗實現(xiàn)了故障的激活驗證。通過實驗表明,某些故障雖然有相應的異常處理機制,但是仍然會暴露出來,導致KVM虛擬機的核心功能失效,引發(fā)故障,這樣,就為故障危害性的分析提供了一定的參考依據(jù)。

但是,該文仍然存在一些不足和改進之處,例如:

1) 文中故障的獲取主要依托于源代碼的分析,其實質是對于異常處理機制中的故障分析來獲取故障,對于沒有設置異常處理機制的故障,可以采用以下方法獲取:長期運行收集的實驗結果;經(jīng)驗收集;網(wǎng)絡數(shù)據(jù)收集等等,此外,還可以采用大量的故障注入實驗來尋找暫時沒有異常處理機制的故障。

2) 對于文中所描述的采用二進制代碼級的變異所實現(xiàn)的故障注入,只能實現(xiàn)ODC缺陷分類中的部分故障(賦值類故障中的賦值缺失和以表達式為賦值缺失,算法類故障中的缺失了函數(shù)調用和部分校驗類故障),對于其他類的故障,文中所描述的故障注入系統(tǒng)暫時無法實現(xiàn)。

3) 對于注入故障的激活驗證,其進一步工作則是結合風險優(yōu)先級評估方法,實現(xiàn)對故障危害性的分析與評價,這樣,就可以針對高危害性的故障進行相應的容錯分析和處理。

參考文獻:

[1] 任永杰,單海濤.KVM虛擬化技術:實戰(zhàn)與原理解析[M].北京:機械工業(yè)出版社,2013:21-43.

[2] 張海峰.KVM虛擬化技術在AMD平臺上的實現(xiàn) [DB/OL]. http://www.ibm.com/developerworks/cn/linux/l-cn-amd-virt/index.html,2012.

[3] KVM API Documentation. The Definitive KVM (Kernel-based Virtual Machine) API Documentation [DB/OL].http://blog.chinaunix.net/uid-26000137-id-3766499.html,2013.

[4] 胡嘉偉.Linux下基于PIN的永久和瞬時故障注入方案及實現(xiàn)[J].電腦知識與技術, 2011,7(1):242-244.

[5] Ang Jin, Jian-hui Jiang. "Fault Injection Scheme for Embedded Systems at Machine Code Level and Verification." [C].15th IEEE Pacific Rim International Symposium on Dependable Computing, 2009:55-62.

猜你喜歡
虛擬機故障注入云計算
模擬訓練裝備故障注入系統(tǒng)研究
SM4算法前四輪約減輪故障注入分析
采用修改-回放原理的1553B故障注入方法
測控技術(2018年7期)2018-12-09 08:58:10
淺談計算機系統(tǒng)虛擬化網(wǎng)絡設置方案
基于虛擬機的軟件保護系統(tǒng)研究與設計
任務驅動教學法在《網(wǎng)絡應用服務管理》教學中的應用
基于云計算的移動學習平臺的設計
虛擬機局域網(wǎng)組建技術應用初探
實驗云:理論教學與實驗教學深度融合的助推器
大學教育(2016年9期)2016-10-09 08:54:03
云計算中的存儲虛擬化技術應用
科技視界(2016年20期)2016-09-29 13:34:06
米脂县| 子洲县| 托克托县| 通山县| 吕梁市| 大竹县| 泌阳县| 都江堰市| 彰武县| 双柏县| 樟树市| 漾濞| 长春市| 靖西县| 新源县| 睢宁县| 孟津县| 老河口市| 宣威市| 江门市| 徐闻县| 赤壁市| 茶陵县| 永定县| 锡林郭勒盟| 无锡市| 夏河县| 晋江市| 静宁县| 厦门市| 南澳县| 深水埗区| 深圳市| 兴化市| 永新县| 射阳县| 梨树县| 七台河市| 辽中县| 鹿泉市| 昭苏县|