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