KVM Qemu Libvirt三者之間的關係

2021-08-10 08:06:33 字數 1489 閱讀 3536

在所謂的kvm技術中,應用到的其實有2個東西:qemu+kvm

kvm負責cpu虛擬化+記憶體虛擬化,實現了cpu和記憶體的虛擬化,但kvm不能模擬其他裝置;

qemu是模擬io裝置(網絡卡,磁碟),kvm加上qemu之後就能實現真正意義上伺服器虛擬化。

因為用到了上面兩個東西,所以一般都稱之為qemu-kvm。

libvirt則是呼叫kvm虛擬化技術的介面用於管理的,用libvirt管理方便,直接用qemu-kvm的介面太繁瑣。

qemu

qemu是乙個模擬器,它向guest os模擬cpu和其他硬體,guest os認為自己和硬體直接打交道,其實是同qemu模擬出來的硬體打交道,qemu將這些指令轉譯給真正的硬體。

由於所有的指令都要從qemu裡面過一手,因而效能較差。

kvm是linux核心的模組,它需要cpu的支援,採用硬體輔助虛擬化技術intel-vt,amd-v,記憶體的相關如intel的ept和amd的rvi技術,guest os的cpu指令不用再經過qemu轉譯,直接執行,大大提高了速度,kvm通過/dev/kvm暴露介面,使用者態程式可以通過ioctl函式來訪問這個介面。見如下偽**:

open("/dev/kvm")

ioctl(kvm_create_vm)

ioctl(kvm_create_vcpu)

for (;;)

}

kvm核心模組本身只能提供cpu和記憶體的虛擬化,所以它必須結合qemu才能構成乙個完成的虛擬化技術,這就是下面要說的qemu-kvm。

qemu-kvm

qemu將kvm整合進來,通過ioctl呼叫/dev/kvm介面,將有關cpu指令的部分交由核心模組來做。kvm負責cpu虛擬化+記憶體虛擬化,實現了cpu和記憶體的虛擬化,但kvm不能模擬其他裝置。qemu模擬io裝置(網絡卡,磁碟等),kvm加上qemu之後就能實現真正意義上伺服器虛擬化。因為用到了上面兩個東西,所以稱之為qemu-kvm。

qemu模擬其他的硬體,如network, disk,同樣會影響這些裝置的效能,於是又產生了pass through半虛擬化裝置virtio_blk, virtio_net,提高裝置效能。

libvirt是目前使用最為廣泛的對kvm虛擬機器進行管理的工具和api。libvirtd是乙個daemon程序,可以被本地的virsh呼叫,也可以被遠端的virsh呼叫,libvirtd呼叫qemu-kvm操作虛擬機器。

KVM Qemu Libvirt三者之間的關係

原始出處 作者資訊和本宣告。否則將追究法律責任。qemu qemu 是乙個模擬器,它向 guest os 模擬cpu 和其他硬體,guest os 認為自己和硬體直接打交道,其實是同 qemu 模擬出來的硬體打交道,qemu 將這些指令轉譯給真正的硬體。由於所有的指令都要從 qemu 裡面過一手,因...

KVM Qemu Libvirt三者之間的關係

qemu qemu 是乙個模擬器,它向 guest os 模擬cpu 和其他硬體,guest os 認為自己和硬體直接打交道,其實是同 qemu 模擬出來的硬體打交道,qemu 將這些指令轉譯給真正的硬體。由於所有的指令都要從 qemu 裡面過一手,因而效能較差 kvm是linux核心的模組,它需要...

三消遊戲(三)

後面一些更改就是實現下落下標更改的方法。這個方法要在一開始檢測三色的時候呼叫 with3arr this.filterdelsame with3arr,return with3arrupdatecellfalldownnum function cell 還要刪除陣列裡的相同元素 filterdels...