KVM簡介:
KVM是Kernel-based Virtual Machine的簡稱,是一個開源的系統虛擬化模塊,自Linux 2.6.20之後集成在Linux的各個主要發行版本中。KVM的虛擬化需要硬件支持(如Intel VT技術或者AMD V技術),是基於硬件的完全虛擬化。
KVM的模式:
內核模式:原Linux系統內核使用的模式空間;
用戶模式:用戶的應用程序進程使用的模式空間;
來賓模式:虛擬機實例使用的模式空間;
檢測硬件平臺是否支持KVM的使用:
1、KVM需要CPU支持硬件虛擬化,這是前提,如果在虛擬機中使用KVM需要在虛擬機的CPU屬性中將支持CPU虛擬化的選項選中:
2、裝載KVM模塊:
# modprobe kvm
# modprobe kvm_intel
查看模塊的裝載情況:
3、在前兩步操作基礎上,可以查看到/proc/cpuinfo文件中CPU標誌位中有vmx(intel)和svm(amd)的相關信息,具體的信息只顯示其中的一種,與物理機的CPU廠商保持一致。
只有能夠查看到vmx或者svm信息時,才能使用KVM。如果當前主機的硬件上支持使用KVM的話,裝載模塊的操作可以不做,在使用qemu命令創建虛擬機的時候就會自動加載模塊。
KVM的基本應用:
KVM虛擬機的創建於管理有兩套管理工具,qemu和libvirt兩種。
1、qemu-kvm命令創建管理虛擬機的使用:
安裝工具:
# yum -y install qemu-kvm qemu-kvm-tools
安裝後生成的qemu-kvm工具在/usr/libexec/目錄下,爲了便於使用,可以創建鏈接的以方便使用。
# ln -sv /usr/libexec/qemu-kvm /usr/sbin/
創建一個虛擬機:通常常見一個虛擬機需要指定的參數選項有:CPU、內存、磁盤映像文件、網卡、顯示設備有時候還有可能用到光驅,通常使用率最多的是前4項。
創建一個虛擬機,先要準備虛擬機使用的磁盤設備文件:
# mkdir -pv /p_w_picpaths/vm1 # qemu-img create -f qcow2 -o size=100G /p_w_picpaths/vm1/ubuntu.qcow2
準備系統安裝的iso文件,實驗中這個iso文件放在了管理員家目錄下,安裝虛擬機的方式如下:
# qemu-kvm -name "ubuntu" -m 512 -smp 2 -hda /p_w_picpaths/vm1/ubuntu.qcow2 -cdrom ubuntu-12.04.1-desktop-i386.iso -boot order=dc
此時虛擬機已經啓動並監聽在5900端口上,可以使用vncviewer軟件連接5900端口查看系統啓動安裝的效果:
# yum -y install tigervnc # vncviewer :5900
現在就可以按照系統安裝的提示一步步完成系統的安裝工作了。
上面的安裝方式是使用iso文件的方式來安裝虛擬機系統的,我們還可以使用網絡的方式來引導安裝,這個時候需要將虛擬機的網卡關聯到網橋上,然後再將虛擬出來的網橋與物理機的網橋關聯起來才能實現虛擬機與外界通訊的效果。這個時候就需要先設定hypervisor上的橋。
# cd /etc/sysconfig/network-script/ # cp ifcfg-eth0 ifcfg-br0
# vim ifcfg-br0 DEVICE=br0 BOOTPROTO=none HWADDR=00:0c:29:e1:37:51 NM_CONTROLLED=no ONBOOT=yes TYPE=Bridge IPADDR=172.16.103.2 NETMASK=255.255.0.0 IPV6INIT=no USERCTL=no
# vim ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none HWADDR=00:0c:29:e1:37:51 NM_CONTROLLED=no ONBOOT=yes TYPE=Ethernet IPV6INIT=no USERCTL=no BRIDGE=br0
虛擬機要創建其內部使用的虛擬橋,這個橋的創建需要藉助於外部的腳本來完成,在創建時指定這個腳本就可以完成橋的創建工作,腳本的定義如下:
#/bin/bash # switch=br0 if [ -n "$1" ];then ifconfig $1 up sleep 0.5s brctl addif $switch $1 exit 0 else echo "Error:no specified interface." exit 1 fi
將這個腳本文件放在/etc/qemu-ifup路徑下,默認位置,方便使用。給腳本執行權限:
# chmod +x /etc/qemu-ifup
這個時候在創建虛擬機之前還要在局域網內準備pxe或者cobbler安裝環境,虛擬機實例可以訪問到就能實現系統的安裝工作了,具體的操作可以使用如下方式:
# qemu-kvm -name "rhel5" -m 768 -smp 4 -drive file=/p_w_picpaths/vm1/ubuntu.qcow2,if=ide,index=0,media=disk,format=qcow2 -boot order=n -net nic -net tap,ifname="vnet0",downscript=no
2、使用libvirt系列工具實現虛擬機的管理
安裝工具軟件:
# yum -y install libvirt virt-manager virt-viewer python-virtinst
啓動服務:
# service libvirtd start
使用virt-install工具安裝虛擬機的示例:
# mkdir -pv /p_w_picpaths/vm3
# virt-install -n "centos6" --vcpus 2 -r 512 -l http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64 --disk path=/p_w_picpaths/vm3/centos6.qcow2,bus=virtio,size=120G,sparse --network bridge=br0,model=virtio --force
這種方式就創建了一個基於網絡安裝的centos6的虛擬機實例。要注意這種安裝環境由於需要於外部局域網內的主機通信,所以都要先在hypervisor上創建橋設備的,然後將虛擬機的網卡關聯到這個橋設備上才能正常與外部通信。