/dev/kvm簡單理解

/dev/kvm到底是什麼?

1./dev/kvm設備是kvm(kernel-based virtual machine)虛擬機出來的一個設備文件

2.說到kvm,不得不提qemu,qemu是一個模擬軟件,運行於linux的用戶空間。qemu可以模擬我們能見到的所有操作系統,如在x86平臺上模擬andrio,ios等,當然也可以模擬windows,linux(gnu),BSD。由於是通過模擬的方法來實現系統虛擬化,它產生的所有CPU指令都翻譯轉換一次,因此其性能非常低。

3.那麼問題來了,kvm提供了什麼呢?其實,kvm只提供了三個模塊,分別是kvm.ko,kvm_intel.ko,kvm_amd.ko,後兩個模塊是根據物理主機的CPU所屬廠家自動匹配的。

4.由上可知,qemu是一個用戶空間的程序,kvm是一個運行於內核空間的程序。爲了提供一個整體的解決方案(包括用戶空間工具集[由qemu提供],管理各種設備(由kvm內核模塊提供)),kvm開發團隊借用了qemu代碼,並作了一些修改,形成了一套工具,也就是qemu-kvm(不是linux中的命令)

5.如何讓qemu與kvm內核模塊結合起來,這時,/dev/kvm就起作用了。/dev/kvm是一個字符設備,當qemu打開這個設備後,通過ioctl這個系統調用就可以獲得kvm模塊提供的三個抽象對象:

kvm:代表kvm模塊本身,用來管理kvm版本信息,創建一個vm(通過)

vm:代表一個虛擬機。通過vm的io_ctl接口,可以爲虛擬機創建vcpu,設置內存區間,創建中斷控制芯片,分配中斷等等

vcpu:代表一個vcpu。通過vcpu的io_ctl接口,可以啓動或者暫停vcpu,設置vcpu的寄存器,爲vcpu注入中斷等等

Qemu的使用方式:

1.打開/dev/kvm設備

2.通過KVM_CREATE_VM創建一個虛擬機對象

3.通過KVM_CREATE_VCPU爲虛擬機創建vcpu對象

4.通過KVM_RUN設置vcpu運行起來

6.So,/dev/kvm只是kvm內核模塊提供給用戶空間的一個接口,這個接口被qemu-kvm調用,通過ioctl系統調用就可以給用戶提供一個工具用以創建,刪除,管理虛擬機等


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章