kvm 是基於虛擬化擴充套件(intel vt 或者 amd-v)的
x86 硬體
的開源的 linux 原生的
全虛擬化解決方案
。kvm 中,虛擬機器被實現為常規的 linux 程序,由標準 linux 排程程式進行排程;
虛擬機器的每個虛擬 cpu 被實現為乙個常規的 linux 程序
。這使得 kmv 能夠使用 linux 核心的已有功能。
但是,kvm 本身不執行任何硬體模擬
qemu
。kernel-based virtual machine,基於linux核心的虛擬機器,kvm.ko負責cpu和記憶體虛擬化。io虛擬化由linux核心和qemu實現。kvm的管理工具為libvirt,
openstack底層也使用libvirt。
kvm安裝:直接在linux系統上安裝kvm所需包。其中qemu-kvm、qemu-systerm負責cpu、記憶體和io虛擬化,libvirt-bin為libvirt,virt-manager為kvm圖形管理工具,網路虛擬化由bridge-utils、vlan實現。
使用virt-manager啟動虛擬機器,
/var/lib/libvirt/images/ 目錄為kvm預設存放映象檔案的地方。virt-manager也可以用來管理其他宿主機上的虛擬機器,注意此處需要配置被管理宿主機中的兩個檔案。
virsh list 命令用於檢視宿主機上的虛擬機器,還可以使用其他virsh命令管理虛擬機器。 注:
乙個kvm虛擬機器在宿主機中作為乙個qemu-kvm程序執行,與其他linux程序一樣被排程。
cpu虛擬化
由vmx 或 svm 實現。虛擬機器中每乙個vcpu對應qemu-kvm程序中的每乙個執行緒。因此虛擬機器中vcpu總數可以超過物理cpu總數,這個叫cpu超配。
記憶體虛擬化
實現客戶機物理記憶體到宿主機機器記憶體的轉化,客戶機作業系統負責客戶機虛擬位址到客戶機實體地址的轉化,也可以實現超配。kvm實現記憶體虛擬化的方式有兩種:
影子頁表
和ept
頁表,可參考
儲存虛擬化
由儲存池(storage pool)和volume卷實現,儲存池為宿主機中可見的一塊記憶體,volume為儲存池中分配給虛擬機器的一塊空間。
kvm 將宿主機目錄 /var/lib/libvirt/images/ 作為預設的 storage pool,是一種目錄型別的儲存池,而volume則為該目錄下的檔案,如乙個映象檔案則為乙個volume,volume有多種型別,包括raw,qcow,vmdk,vdl。
網路虛擬化
通過linux bridge實現vnet br0 eth0之間的資料傳輸。
kvm虛擬化學習筆記 八 之kvm虛擬機器vnc配置
kvm虛擬化學習筆記系列文章列表 kvm虛擬化學習筆記 一 之kvm虛擬化環境安裝 kvm虛擬化學習筆記 二 之linux kvm虛擬機器安裝 kvm虛擬化學習筆記 三 之windows kvm虛擬機器安裝 kvm虛擬化學習筆記 四 之kvm虛擬機器日常管理與配置 kvm虛擬化學習筆記 五 之win...
kvm虛擬化學習筆記 八 之kvm虛擬機器vnc配置
原始出處 作者資訊和本宣告。否則將追究法律責任。kvm虛擬化學習筆記系列文章列表 kvm虛擬化學習筆記 一 之kvm虛擬化環境安裝 kvm虛擬化學習筆記 二 之linux kvm虛擬機器安裝 kvm虛擬化學習筆記 三 之windows kvm虛擬機器安裝 kvm虛擬化學習筆記 四 之kvm虛擬機器日...
KVM學習1 安裝編譯測試kvm模組
kernel 3.10.0 327.el7.src.rpm,kvm 位置arch x86 kvm下 參考how to recompile just a single kernel module?編譯完核心後,如果想單獨編譯kvm模組 make modules subdirs arch x86 kvm...