1. 程式人生 > >OpenStack雲端計算與虛擬化---KVM篇

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>