Kernel-based Virtual Machine 的簡稱,是一個開源的系統虛拟化子產品,自Linux 2.6.20 之後內建在linux 的各個主要發行版本中。
一個普通的Linux 程序有兩種運作模式:核心和使用者。KVM 增加了第三種模式:客戶模式(有自己的核心和使用者模式)
KVM 的虛拟機需要硬體支援,即如Intel VT 技術(vmx)或AMD V 技術(svm).且Linux 發行版本必須在64bit 環境中才能使用KVM
完全虛拟化和半虛拟化
在完全虛拟化中,Guest OS運作在位于實體機的 hypervisor 之上。Guest OS并不知道它已被虛拟化,并且不需要任何更改就可以在該配置下工作。
相反,在半虛拟化中,Guest OS不僅知道它運作在 hypervisor 之上,還包含讓Guest OS更高效地過渡到 hypervisor 的代碼
在完全虛拟化模式中,hypervisor 必須模拟裝置硬體,它是在會話的最低級别進行模拟的。盡管在該抽象中模拟很幹淨,但它同時也是最低效、最複雜的。在半虛拟化模式中,Guest OS和 hypervisor 能夠共同合作,讓模拟更加高效。半虛拟化方法的缺點是作業系統知道它被虛拟化,并且需要修改才能工作。
确定機器是否支援虛拟化:(必要時需要在BIOS開啟VT)
[root@rhel6 ~]# egrep "(vmx|svm)" --color=always /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt xsave avx lahf_lm arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid
安裝KVM
[root@rhel6 ~]# yum install kvm virt-manager libvirt
[root@rhel6 ~]# /etc/init.d/libvirtd start
确定正确加載KVM子產品
[root@rhel6 ~]# lsmod | grep kvm
kvm_intel 50380 0
kvm 305113 1 kvm_intel
檢查KVM 是否成功安裝
[root@rhel6 ~]# virsh -c qemu:///system list
Id 名稱 狀态
----------------------------------
綁定橋接器:
[root@rhel6 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.2.11
NETMASK=255.255.255.0
TYPE=Bridge
[root@rhel6 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BRIDGE=br0
TYPE=Ethernet
安裝Virtio實作網卡和硬碟的透寫
VirtIO 是一個用來實作"虛拟IO"的通用架構,用于實作虛拟的網卡,磁盤等虛拟裝置的透寫。
linux核心版本在2.6.25以上的,都應該內建了VirtIO的驅動,但windows需要另外安裝
Windows安裝VirtIO驅動有兩種方法:
1、使用IDE方式來安裝系統,安裝系統完成後,在guest中安裝virtio磁盤驅動,然後再修改kvm啟動參數,設定磁盤為virtio。
安裝完Windows後,建立一塊臨時的硬碟,将其設定為virtio模式添加到Windows中,并設定網卡模式為virio
開機後将提示檢查到新硬體,然後安裝驅動程式後關機
删除新添加的臨時硬碟,将原來的硬碟設定為virtio模式,開機即可識别到硬碟與網卡都為virtio模式
2、在安裝時直接加載virtio驅動。
由于XP的安裝程式隻支援從軟碟加載驅動程式,是以需要一個軟碟的鏡像檔案(virtio-win-1.1.16_1.vfd),在xp的安裝開始,按F6從軟碟加載驅動程式
為KVM虛拟機機添加virsh console支援
[root@rhel6-2 ~]# vi /etc/inittab #在/etc/inittab檔案末尾添加以下内容
co:2345:respawn:/sbin/agetty ttyS0 115200
[root@rhel6-2 ~]# vi /etc/securetty #在/etc/securetty檔案末尾添加以下内容
ttyS0
[root@rhel6-2 ~]# vi /etc/grub.conf #在/etc/grub.conf檔案添加核心參數
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/Lrhel6-root quiet rhgb console=ttyS0,115200
[root@rhel6-2 ~]# reboot #重新開機系統使其生效
[root@rhel6 ~]# virsh start rhel6-2 #開啟rhel6-2虛拟機
[root@rhel6 ~]# virsh console rhel6-2 #通過console連接配接到rhel6-2虛拟機
[root@rhel6 ~]# virsh shutdown rhel6-2 #正常關閉rhel6-2虛拟機
[root@rhel6 ~]# virsh destroy rhel6-2 #直接關閉rhel6-2虛拟機的電源
本文轉自Vnimos51CTO部落格,原文連結:http://blog.51cto.com/vnimos/1063442,如需轉載請自行聯系原作者