Linux服務(wù)器虛擬化技術(shù)應(yīng)用
1、什么是虛擬化
虛擬化(Virtualization)技術(shù)最早出現(xiàn)在20世紀(jì)60年代的IBM大型機(jī)系統(tǒng),在70年代的System 370系列中逐漸流行起來,這些機(jī)器通過一種叫虛擬機(jī)監(jiān)控器(Virtual Machine Moni-tor, VMM)的程序在物理硬件之上生成許多可以運行獨立操作系統(tǒng)軟件的虛擬機(jī)(Virtual Machine)實例。
2、虛擬化技術(shù)的分類
這里的服務(wù)器虛擬化指的是通過虛擬化軟件來實現(xiàn)計算機(jī)和服務(wù)器虛擬化,通過使用控制程序(Control Program,也被稱為Virtual Machine Monitor或Hypervisor)隱藏特定計算平臺的實際物理特性,為用戶提供抽象的、統(tǒng)一的、模擬的計算環(huán)境(稱為虛擬機(jī))。虛擬機(jī)中運行的操作系統(tǒng)被稱為客戶機(jī)操作系統(tǒng)(Guest OS),運行虛擬機(jī)監(jiān)控器的操作系統(tǒng)被稱為主機(jī)操作系統(tǒng)(Host OS),當(dāng)然某些虛擬機(jī)監(jiān)控器可以脫離操作系統(tǒng)直接運行在硬件之上(如VMWARE的ESX產(chǎn)品)。
2.1全虛擬化((Full Virtualization)。
全虛擬化是指虛擬機(jī)模擬了完整的底層硬件,包括處理器、物理內(nèi)存、時鐘、外設(shè)等,使得為原始硬件設(shè)計的操作系統(tǒng)或其它系統(tǒng)軟件完全不做任何修改就可以在虛擬機(jī)中運行。操作系統(tǒng)與真實硬件之間的交互可以看成是通過一個預(yù)先規(guī)定的硬件接口進(jìn)行的。全虛擬化VMM以完整模擬硬件的方式提供全部接口(同時還必須模擬特權(quán)指令的執(zhí)行過程)。
2.2超虛擬化(Paravirtualization)。
這是一種修改Guest OS部分訪問特權(quán)狀態(tài)的代碼以便直接與VMM交'_的技術(shù)。在超虛擬化虛擬機(jī)中,部分硬件接口以軟件的形式提供給客戶機(jī)操作系統(tǒng),這可以通過Hypercall(VMM提供給Guest OS的直接調(diào)用,與系統(tǒng)調(diào)用類似)的方式來提供。
2.3部分虛擬化((Partial Virtualization)。
VMM只模擬部分底層硬件,因此客戶機(jī)操作系統(tǒng)不做修改是無法在虛擬機(jī)中運行的,其它程序可能也需要進(jìn)行修改。在歷史上,部分虛擬化是通往全虛擬化道路上的重要里程碑。
2.4操作系統(tǒng)級虛擬化(Operating System Level Virtualiza-tian)。
在傳統(tǒng)操作系統(tǒng)中,所有用戶的進(jìn)程本質(zhì)上是在同一個操作系統(tǒng)的實例中運行,因此內(nèi)核或應(yīng)用程序的缺陷可能影響到其它進(jìn)程。操作系統(tǒng)級虛擬化是一種在服務(wù)器操作系統(tǒng)中使用的輕量級的虛擬化技術(shù),內(nèi)核通過創(chuàng)建多個虛擬的操作系統(tǒng)實例(內(nèi)核和庫)來隔離不同的進(jìn)程,不同實例中的進(jìn)程完全不了解對方的存在。
3.Linux虛擬化技術(shù)解決方案
3.1 Linux-VServer(操作系統(tǒng)級虛擬化)。
Linux-VServer是一個操作系統(tǒng)級虛擬化解決方案。Linux-VServer對Linux內(nèi)核進(jìn)行虛擬化,這樣多個用戶空間環(huán)境又稱為Virtual Private server(VPS),就可以單獨運行,而不需要互相了解。Linux-VServer通過修改Linux內(nèi)核實現(xiàn)用戶空間的隔離。
3.2 Xen(超虛擬化)。#p#
Xen是一個來自于XenSource的操作系統(tǒng)級超虛擬化的免費開源解決方案。回想一下在超虛擬化中,hypervisor和操作系統(tǒng)會共同協(xié)作,雖然操作系統(tǒng)需要進(jìn)行一些更改,但卻可以帶來接近于原始系統(tǒng)的性能。就像Xen需要進(jìn)行協(xié)作(對客戶操作系統(tǒng)進(jìn)行修改)一樣,只有那些修補過的操作系統(tǒng)才可以通過Xen進(jìn)行虛擬化。
Linux本身就是開源的,所以從Linux角度來看,這是一個很合理的折衷,因為最終可以獲得比完全虛擬化更好的性能。但是從廣泛支持的角度來看(例如對其他非開源操作系統(tǒng)的支持),這顯然是一個缺點。
Windows可以在Xen上作為一個客戶操作系統(tǒng)運行,但是它只能在運行Intel Vanderpool或AMD Pacifica的系統(tǒng)上使用。支持Xen的其他操作系統(tǒng)包括NetBSD, FreeBSD和OpenSolaris。
3.3 VMware(完全虛擬化)。
VMware是完全虛擬化的一個商業(yè)解決方案。在客戶操作系統(tǒng)和裸硬件之間有一個hypervisor作為抽象層使用。這個抽象層允許任何操作系統(tǒng)在硬件上運行,而不需要了解任何其他客戶操作系統(tǒng)。VMware也會對可用的I/O硬件進(jìn)行虛擬化,并將一些高性能的設(shè)備驅(qū)動程序加入到hy-pervisor中。整個虛擬化后的環(huán)境都作為一個文件保存,這意味著整個系統(tǒng)(包括客戶操作系統(tǒng)、VM和虛擬硬件)可以很容易地快速遷移到新宿主機(jī)器上進(jìn)行負(fù)載均衡。
3.4 KVM(內(nèi)核虛擬機(jī))。
KVM是指基于Linux內(nèi)核的虛擬機(jī)(Kernel-based Virtual Machine)?;趦?nèi)核的虛擬機(jī)是針對包含虛擬化擴(kuò)展(Intel VT或AMD-V)的x86硬件上的Linux的完全原生的虛擬化解決方案。對半虛擬化(parauirtualization)的有限支持也可以通過半虛擬網(wǎng)絡(luò)驅(qū)動程序的形式用于Linux和Windows來賓系統(tǒng)。KVM目前設(shè)計為通過可加載的內(nèi)核模塊連接內(nèi)核。支持的操作系統(tǒng)版本包括廣泛的操作系統(tǒng),比如Linux, BSD, Solaris, Windows。
虛擬化是趨勢所在。它所帶來的諸多好處和利益都讓廠商和用戶為之著迷,但虛擬化也存在不少問題。當(dāng)然,我們也有理由相信,隨著時間的推移和各方的努力,這些問題都會得到不同程度的解決。也許,在這種不斷解決種種麻煩的過程中,虛擬化正迎來燦爛的明天。