OpenStack雲端計算與虛擬化---KVM篇
什麼是虛擬化
首先,我們需要明白一點雲端計算並不等於虛擬化,雲端計算只是使用到了虛擬化的技術,而虛擬化的技術分為很多種,如軟體虛擬化、網路虛擬化、伺服器虛擬化等等,而KVM虛擬化是伺服器虛擬化的一種,指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機。在一臺計算機上同時執行多個邏輯計算機,每個邏輯計算機可執行不同的作業系統,並且應用程式都可以在相互獨立的空間內執行而互不影響,從而顯著提高計算機的工作效率。虛擬化使用軟體的方法重新定義劃分IT資源,可以實現IT資源的動態分配、靈活排程、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務於各行各業中靈活多變的應用需求。
什麼是KVM
KVM是Kernel-based Virtual Machine的簡稱,是一個開源的系統虛擬化模組,自Linux 2.6.20之後整合在Linux的各個主要發行版本中。它使用Linux自身的排程器進行管理,所以相對於Xen,其核心原始碼很少。KVM目前已成為學術界的主流VMM之一。
KVM的虛擬化需要硬體支援(如Intel VT技術或者AMD V技術)。是基於硬體的完全虛擬化。而Xen早期則是基於軟體模擬的Para-Virtualization,新版本則是基於硬體支援的完全虛擬化。但Xen本身有自己的程序排程器,儲存管理模組等,所以程式碼較為龐大。廣為流傳的商業系統虛擬化軟體VMware ESX系列是基於軟體模擬的Full-Virtualization。
KVM架構優勢
利用Linux的功能 – 不用重複發明輪子
構建在信任的,穩定的企業級平臺之上
排程、記憶體管理、廣泛的硬體支援等
高階特性
繼承可擴充套件性,NUMA支援,電源管理,熱拔插等
SELinux安全,實時排程,RAS支援等
獨特的hybrid-mode操作,提供了最大的靈活性
Linux的應用程式和虛擬機器同時並存在同一臺伺服器上,有效的利用系統硬體資源,高效平滑的將虛擬化整合到企業資料中心的核心
高效能,基於核心優秀的排程技術,利用硬體虛擬化特性
KVM工具
■qemu-kvma ■libvirt ■virt-install
#檢視VMX虛擬化是否開啟 [[email protected] ~]# grep -E '(vmx|svm)' /proc/cpuinfo #安裝KVM管理工具 [[email protected] ~]# yum -y install qemu-kvm libvirt virt-install #設定libvirtd開機自啟動 [[email protected] ~]# systemctl enable libvirtd #啟動libvirtd [[email protected] ~]# systemctl start libvirtd
KVM建立虛擬主機
#建立一塊10G的虛擬硬碟 [[email protected] ~]# qemu-img create -f raw /opt/RedHat-Demo.raw 10G #建立虛擬機器 [[email protected] ~]# virt-install --virt-type kvm --name RedHat-Demo --ram 1024 --cdrom=/opt/RedHat-Server-6.3.iso --disk path=/opt/RedHat-Demo.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole #列出虛擬機器 [[email protected] ~]# virsh list --all #關閉虛擬機器 [[email protected] ~]# virsh shutdown RedHat-Demo #啟動虛擬機器 [[email protected] ~]# virsh start RedHat-Demo
libvirt管理工具
後臺程序、API介面、virsh元件
CPU、記憶體配置
[[email protected] ~]# virsh edit RedHat-Demo #修改xml檔案使其支援熱新增CPU個數,最大4個,當前1個 <vcpu placement='auto' current='1'>4</vcpu> #執行cpu新增命令 [[email protected] ~]# virsh setvcpus RedHat-Demo 2 --live #檢視虛擬機器當前的記憶體大小 [[email protected] ~]# virsh qemu-monitor-command RedHat-Demo --hmp --cmd info balloon #修改虛擬機器記憶體大小(熱修改) [[email protected] ~]# virsh qemu-monitor-command RedHat-Demo --hmp --cmd balloon 512
網路配置
#建立橋接虛擬網絡卡 [[email protected] ~]# brctl addbr br0 #將真實網絡卡與橋接虛擬網絡卡互換 [[email protected] ~]# brctl addif br0 eth0 #刪除真實網絡卡的IP地址 [[email protected] ~]# ip addr del dev eth0 192.168.137.52/24 #設定橋接虛擬網絡卡的IP地址,並啟動 [[email protected] ~]# ifconfig br0 192.168.137.52/24 up #設定閘道器路由 [[email protected] ~]# route add default gw 192.168.56.1 *注:以上將網路修改為橋接網路會使網路中斷,所以建議使用指令碼進行 [[email protected] ~]# virsh edit RedHat-Demo <interface type='bridge'> <mac address='52:54:00:0b:ab:e9'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>