一、什么是虛擬化
在計算機技術中,虛擬化(技術)或虛擬技術(英語:Virtualization)是一種資源管理技術,是將計算機的各種實體資源(CPU、內存、磁盤空間、網絡適配器等),予以抽象、轉換后呈現出來並可供分區、組合為一個或多個電腦配置環境。
虛擬化,也就是指通過虛擬化技術將一台計算機虛擬為多台邏輯計算機。在一台計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,並且應用程序都可以在相互獨立的空間內運行而互相不影響,從而顯著提高計算機的工作效率。
虛擬化使用軟件的方法重新定義划分 IT 資源,可以實現 IT 資源的動態分配、靈活調度、跨域共享,提高 IT 資源利用率,使 IT 資源能夠真正成為社會基礎設施,服務於各行各業中靈活多變的應用需求。
為什么要用虛擬化:
(1)同一台物理機運行多個不同版本應用軟件
(2)硬件依賴性較低和便於數據遷移
二、虛擬化技術的趨勢
1.降低運營成本
服務器虛擬化降低了IT基礎設施的運營成本,令系統管理員擺脫了繁重的物理服務器、OS、中間件及兼容性的管理工作,減少人工干預頻率,使管理更加強大、便捷。
2.提高應用兼容性
服務器虛擬化提供的封裝性和隔離性使大量應用獨立運行於各種環境中,管理人員不需頻繁根據底層環境調整應用,只需構建一個應用版本並將其發布到虛擬化后的不同類型平台上即可。
3.加速應用部署
采用服務器虛擬化技術只需輸入激活配置參數、拷貝虛擬機、啟動虛擬機、激活虛擬機即可完成部署,大大縮短了部署時間,免除人工干預,降低了部署成本。
4.提高服務可用性
用戶可以方便地備份虛擬機,在進行虛擬機動態遷移后,可以方便的恢復備份,或者在其他物理機上運行備份,大大提高了服務的可用性。
5.提升資源利用率
通過服務器虛擬化的整合,提高了CPU、內存、存儲、網絡等設備的利用率,同時保證原有服務的可用性,使其安全性及性能不受影響。
6.動態調度資源
在服務器虛擬化技術中,數據中心從傳統的單一服務器變成了統一的資源池,用戶可以即時地調整虛擬機資源,同時數據中心管理程序和數據中心管理員可以靈活根據虛擬機內部資源使用情況靈活分配調整給虛擬機的資源。
7.降低能源消耗
通過減少運行的物理服務器數量,減少CPU以外各單元的耗電量,達到節能減排的目的。
三、虛擬化分類
1、虛擬化層次種類:
(1)完全虛擬化
最流行的虛擬化方法使用名為 hypervisor 的一種軟件,在虛擬服務器和底層硬件之間建立一個抽象層。 VMware vsPhere和微軟的VirtualPC 是代表該方法的兩個商用產品,而基於核心的虛擬機 (KVM) 是面向 Linux 系統的開源產品hypervisor 可以捕獲 CPU 指令,為指令訪問硬件控制器和外設充當中介。因而,完全虛擬化技術幾乎能讓任何一款操作系統不用改動就能安裝到虛擬服務器上,而它們不知道自己運行在虛擬化環境下。主要缺點是, hypervisor 給處理器帶來開銷。
(2)准虛擬化
完全虛擬化是處理器密集型技術,因為它要求 hypervisor管理各個虛擬服務器,並讓它們彼此獨立。減輕這種負擔的一種方法就是,改動客戶端操作系統,讓它以為自己運行在虛擬環境下,能夠與hypervisor 協同工作。這種方法就叫准虛擬化 (para-virtualization)Xen 是開源准虛擬化技術的一個例子。操作系統作為虛擬服務器在 Xen hypervisor 上運行之前,它必須在核心層面進行某些改變。因此, Xen 適用於 BSD 、 Linux 、 Solaris 及其他開源操作系統,但不適合對像Windows 這些專有的操作系統進行虛擬化處理,因為它們無法改動。准虛擬化技術的優點是性能高。經過准虛擬化處理的服務器可與hypervisor 協同工作,其響應能力幾乎不亞於未經過虛擬化處理的服務器。准虛擬化與完全虛擬化相比優點明顯,以至於微軟和 VMware vsPhere都在開發這項技術,以完善各自的產品。
(3)系統虛擬化
就操作系統層的虛擬化而言,沒有獨立的hypervisor 層。相反,主機操作系統本身就負責在多個虛擬服務器之間分配硬件資源,並且讓這些服務器彼此獨立。一個明顯的區別是,如果使用操作系統層虛擬化,所有虛擬服務器必須運行同一操作系統 ( 不過每個實例有各自的應用程序和用戶賬戶 ) 。雖然操作系統層虛擬化的靈活性比較差,但本機速度性能比較高。此外,由於架構在所有虛擬服務器上使用單一、標准的操作系統,管理起來比異構環境要容易。
(4)桌面虛擬化
服務器虛擬化主要針對服務器而言,而虛擬化最接近用戶的還是要算的上桌面虛擬化了,桌面虛擬化主要功能是將分散的桌面環境集中保存並管理起來,包括桌面環境的集中下發,集中更新,集中管理。桌面虛擬化使得桌面管理變得簡單,不用每台終端單獨進行維護,每台終端進行更新。終端數據可以集中存儲在中心機房里,安全性相對傳統桌面應用要高很多。桌面虛擬化可以使得一個人擁有多個桌面環境,也可以把一個桌面環境供多人使用。
2、虛擬化架構分類:
(1)1型虛擬化
Hypervisor 直接安裝在物理機上,多個虛擬機在 Hypervisor 上運行。Hypervisor 實現方式一般是一個特殊定制的 Linux 系統。Xen 和 VMWare vsPhere的 ESXi 都屬於這個類型。
(2)2型虛擬化
物理機上首先安裝常規的操作系統,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作為 OS 上的一個程序模塊運行,並對管理虛擬機進行管理。KVM、VirtualBox 和 VMWare Workstation 都屬於這個類型。
四、虛擬化 --- KVM
1、虛擬化kvm發展
2006 年 10 月由以色列的 Qumranet 組織開發的一種新的“虛擬機”方案,並將其貢獻給開源世界 2007 年 2 月於 Linux Kernel-2.6.20 中第一次包含了 KVM 2008 年 9 月,紅帽收購了 Qumranet ,由此入手了 KVM 的虛擬化技術。在之前紅帽決是將Xen 加入到自己的默認特性當中——那是 2006 年,因為當時Xen技術脫離了內核的維護方式,也許是因為采用 Xen 的 RHEL 在企業級虛擬化方面沒有贏得太多的市場,也許是因為思傑跟微軟走的太近了,種種原因,導致其萌生了放棄 Xen。而且在正式采用 KVM 一年后,就宣布在新的產品線中徹底放棄 Xen ,集中資源和精力進行 KVM 的工作。 2009 年 9 月,紅帽發布其企業級 Linux 的 5.4 版本( RHEL5.4 ),在原先的 Xen 虛擬化機制之上,將 KVM 添加了進來 2010 年 11 月,紅帽發布其企業級 Linux 的 6.0 版本( RHEL6.0 ),這個版本將默認安裝的 Xen 虛擬化機制徹底去除,僅提供 KVM 虛擬化機制 2011 年初,紅帽的老搭檔 IBM 找上紅帽,表示 KVM 這個東西值得加大力度去做。於是到了 5 月, IBM 和紅帽,聯合惠普和英特爾一起,成立了開放虛擬化聯盟( Open Virtualization Alliance ),一起聲明要提升 KVM 的形象,加速 KVM 投入市場的速度,由此避免 VMware 一家獨大的情況出現。聯盟成立之時,紅帽的發言人表示, 大家都希望除 “ VMware 之外還有一種開源選擇。未來的雲基礎設施一定會基於開源 自 Linux 2.6.20 之后逐步取代 Xen 被集成在Linux 的各個主要發行版本中,使用 Linux 自身的調度器進行管理。
2、KVM --- 全稱是基於內核的虛擬機(Kernel-based Vritual Machine)
是一個開源軟件,基於內核的虛擬化技術,實際是嵌入系統的一個虛擬化模塊,通過優化內核來使用虛擬技術,該內核模塊使得 Linux 變成了一個Hypervisor,虛擬機使用 Linux 自身的調度器進行管理。
KVM 是基於虛擬化擴展(Intel VT 或者 AMD-V)的 X86 硬件的開源的 Linux 原生的全虛擬化解決方案。KVM 中,虛擬機被實現為常規的 Linux 進程,由標准 Linux 調度程序進行調度;虛機的每個虛擬 CPU 被實現為一個常規的 Linux 進程。這使得 KMV 能夠使用 Linux 內核的已有功能。但是,KVM 本身不執行任何硬件模擬,需要客戶空間程序通過 /dev/kvm 接口設置一個客戶機虛擬服務器的地址空間,向它提供模擬的 I/O,並將它的視頻顯示映射回宿主的顯示屏。目前這個應用程序是 QEMU。
3、Linux上的用戶空間、內核空間、虛擬機:
Guest:客戶機系統,包括CPU(vCPU)、內存、驅動(Console、網卡、I/O 設備驅動等),被 KVM 置於一種受限制的 CPU 模式下運行。
KVM:運行在內核空間,提供CPU 和內存的虛級化,以及客戶機的 I/O 攔截。Guest 的 I/O 被 KVM 攔截后,交給 QEMU 處理。
QEMU:修改過的為 KVM 虛機使用的 QEMU 代碼,運行在用戶空間,提供硬件 I/O 虛擬化,通過IOCTL /dev/kvm 設備和 KVM 交互。
4、KVM有一個內核模塊叫 kvm.ko ,只用於管理虛擬CPU和內存。IO的虛擬化,就交給Linux內核和qemu來實現。
Libvirt:是 KVM 的管理工具。Libvirt 除了能管理 KVM 這種 Hypervisor,還能管理 Xen,VirtualBox 等。OpenStack 底層也使用 Libvirt。
Libvirt 包含 3 個東西:后台 daemon 程序 libvirtd、API 庫和命令行工具 virsh
(1)libvirtd是服務程序,接收和處理 API 請求;
(2)API 庫使得其他人可以開發基於 Libvirt 的高級工具,比如 virt-manager,這是個圖形化的 KVM 管理工具;
(3)virsh 是我們經常要用的 KVM 命令行工具。作為 KVM 和 OpenStack 的實施人員,virsh 和 virt-manager 是一定要會用的。
5、其他虛擬化軟件
(1)Xen
Xen是一個開放源代碼虛擬機監視器,由XenProject開發。它打算在單個計算機上運行多達128個有完全功能的操作系統。
在舊(無虛擬硬件)的處理器上執行Xen,操作系統必須進行顯式地修改(“移植”)以在Xen上運行(但是提供對用戶應用的兼容性)。這使得Xen無需特殊硬件支持,就能達到高性能的虛擬化。
(2)QEMU
QEMU是一套由Fabrice Bellard所編寫的模擬處理器的自由軟件。它與Bochs,PearPC近似,但其具有某些后兩者所不具備的特性,如高速度及跨平台的特性。經由KVM(早期為kqemu加速器,現在kqemu已被KVM取代)這個開源的加速器,QEMU能模擬至接近真實電腦的速度。QEMU有兩種主要運作模式:
[1] User mode模擬模式,亦即是用戶模式。
QEMU能引導那些為不同中央處理器編譯的Linux程序。而Wine及Dosemu是其主要目標。
[2] System mode模擬模式,亦即是系統模式。
QEMU能模擬整個電腦系統,包括中央處理器及其他周邊設備。它使得為系統源代碼進行測試及除錯工作變得容易。其亦能用來在一部主機上模擬數部不同虛擬電腦。