虛擬化技術應用越來越廣泛,虛擬化技術需求越來越強勁。KVM、XEN、Docker等比較熱門,尤其是KVM技術越來越受歡迎。
基於此背景,了解一下KVM+QEMU就有點必要了。
從網上收集了一些資料進行科普,由於篇幅太長,分開如下:
《關於Linux虛擬化技術KVM的科普 科普一(先用起來!)》
《關於Linux虛擬化技術KVM的科普 科普二(KVM虛擬機代碼揭秘)》
《關於Linux虛擬化技術KVM的科普 科普三(From OenHan)》
《關於Linux虛擬化技術KVM的科普 科普四(From humjb_1983)》
《關於Linux虛擬化技術KVM的科普 科普五(From 世民談雲計算)》
《KVM架構與原理詳解》
《KVM架構與原理詳解》是一篇簡潔明了介紹KVM的文章,有框架圖、工作原理描述等。
KVM架構,分兩部分:位於內核的kvm模塊,負責虛擬機創建,虛擬內存的分配,VCPU寄存器的讀寫以及VCPU的運行;用戶空間的QEMU,用於模擬虛擬機的用戶空間組建,提供I/O設備模型,訪問外設的途徑。
kvm模塊讓Linux主機成為一個虛擬機監視器(VMM),並且在原有的Linux兩種執行模式基礎上,新增加了客戶模式。客戶模式擁有自己的內核模式和用戶模式。
因此在虛擬機運行時,有三種模式:
客戶模式:執行非I/O的客戶代碼,虛擬機運行在這個模式下。
用戶模式:代表用戶執行I/O指令,QEMU運行在這個模式下。
內核模式:實現客戶模式的切換,處理因為I/O或者其他指令引起的從客戶模式退出(VM_EXIT)。kvm模塊運行在這個模式下。
kvm模型中,每一個Guest OS都是作為一個標准的Linux進程,都可以使用Linux進程管理命令管理。
KVM工作原理:用戶模式的QEMU通過ioctl進入內核模式,kvm模塊為虛擬機創建虛擬內存,虛擬CPU后執行VMLAUCH指令進入客戶模式。加載Guest OS並執行。如果Guest OS發生外部中斷或者影子頁表卻也之類的情況,會暫停Guest OS的執行,退出客戶模式進行異常處理,執行客戶代碼。如果發生I/O事件或者信號隊列有信號到達,就會進入用戶模式處理。
對比Xen和KVM:Linux虛擬化技術選擇,關於Xen和KVM的對比,可以看出未來的趨勢還是KVM。