標籤:kvm qemu qemu-kvm libvirt virt-install hypervisor
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虛擬化的選項選中:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C5/wKiom1RFRhyQAW2cAAKhpTRJKLk557.jpg" title="映像 4.png" alt="wKiom1RFRhyQAW2cAAKhpTRJKLk557.jpg" />
2、裝載KVM模組:
# modprobe kvm
# modprobe kvm_intel
查看模組的裝載情況:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/C6/wKioL1RFR42B1lKNAABy4q78M6g745.jpg" title="映像 5.png" alt="wKioL1RFR42B1lKNAABy4q78M6g745.jpg" />
3、在前兩步操作基礎上,可以查看到/proc/cpuinfo檔案中CPU標誌位中有vmx(intel)和svm(amd)的相關資訊,具體的資訊只顯示其中的一種,與物理機的CPU廠商保持一致。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/C5/wKiom1RFSAvS9Q09AAENJkvQ-4I551.jpg" title="映像 6.png" alt="wKiom1RFSAvS9Q09AAENJkvQ-4I551.jpg" />
只有能夠查看到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 /images/vm1# qemu-img create -f qcow2 -o size=100G /images/vm1/ubuntu.qcow2
準備系統安裝的iso檔案,實驗中這個iso檔案放在了管理員家目錄下,安裝虛擬機器的方式如下:
# qemu-kvm -name "ubuntu" -m 512 -smp 2 -hda /images/vm1/ubuntu.qcow2 -cdrom ubuntu-12.04.1-desktop-i386.iso -boot order=dc
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C5/wKiom1RFUBSTxHg7AACKpfNjBE4972.jpg" title="映像 12.png" alt="wKiom1RFUBSTxHg7AACKpfNjBE4972.jpg" />此時虛擬機器已經啟動並監聽在5900連接埠上,可以使用vncviewer軟體串連5900連接埠查看系統啟動安裝的效果:
# yum -y install tigervnc# vncviewer :5900
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/C6/wKioL1RFUPzRTRoSAALvWVsvFWo934.jpg" title="映像 11.png" alt="wKioL1RFUPzRTRoSAALvWVsvFWo934.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/C6/wKioL1RFUcyhr6kcAAQO0NQvJhM139.jpg" title="映像 13.png" alt="wKioL1RFUcyhr6kcAAQO0NQvJhM139.jpg" />
現在就可以按照系統安裝的提示一步步完成系統的安裝工作了。
上面的安裝方式是使用iso檔案的方式來安裝虛擬機器系統的,我們還可以使用網路的方式來引導安裝,這個時候需要將虛擬機器的網卡關聯到橋接器上,然後再將虛擬出來的橋接器與物理機的橋接器關聯起來才能實現虛擬機器與外界通訊的效果。這個時候就需要先設定hypervisor上的橋。
# cd /etc/sysconfig/network-script/# cp ifcfg-eth0 ifcfg-br0
# vim ifcfg-br0DEVICE=br0BOOTPROTO=noneHWADDR=00:0c:29:e1:37:51NM_CONTROLLED=noONBOOT=yesTYPE=BridgeIPADDR=172.16.103.2NETMASK=255.255.0.0IPV6INIT=noUSERCTL=no
# vim ifcfg-eth0DEVICE=eth0BOOTPROTO=noneHWADDR=00:0c:29:e1:37:51NM_CONTROLLED=noONBOOT=yesTYPE=EthernetIPV6INIT=noUSERCTL=noBRIDGE=br0
虛擬機器要建立其內部使用的虛擬橋,這個橋的建立需要藉助於外部的指令碼來完成,在建立時指定這個指令碼就可以完成橋的建立工作,指令碼的定義如下:
#/bin/bash# switch=br0if [ -n "$1" ];then ifconfig $1 up sleep 0.5s brctl addif $switch $1 exit 0 elseecho "Error:no specified interface."exit 1fi
將這個指令檔放在/etc/qemu-ifup路徑下,預設位置,方便使用。給指令碼執行許可權:
# chmod +x /etc/qemu-ifup
這個時候在建立虛擬機器之前還要在區域網路內準備pxe或者cobbler安裝環境,虛擬機器執行個體可以訪問到就能實現系統的安裝工作了,具體的操作可以使用如下方式:
# qemu-kvm -name "rhel5" -m 768 -smp 4 -drive file=/images/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 /images/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=/images/vm3/centos6.qcow2,bus=virtio,size=120G,sparse --network bridge=br0,model=virtio --force
這種方式就建立了一個基於網路安裝的centos6的虛擬機器執行個體。要注意這種安裝環境由於需要於外部區域網路內的主機通訊,所以都要先在hypervisor上建立橋裝置的,然後將虛擬機器的網卡關聯到這個橋裝置上才能正常與外部通訊。
KVM虛擬化技術基本應用