常用虚拟化工具介绍
文章目錄
- 一、服務(wù)器虛擬技術(shù)簡(jiǎn)介
- 二、基本概念
- 三、虛擬技術(shù)的好處
- 四、虛擬化原理簡(jiǎn)介
- 用戶(hù)/內(nèi)核空間
- 特權(quán)級(jí)
- 指令類(lèi)型
- 特權(quán)指令
- 非特權(quán)指令
- 敏感指令
- 五、服務(wù)器虛擬化的分類(lèi)
- 裸金屬/寄居
- 裸金屬
- 寄居
- 有點(diǎn)特殊的裸金屬KVM
- 有點(diǎn)特殊的裸金屬的Hyper-v和Xen
- 硬件輔助虛擬化/軟件輔助虛擬化
- 全虛擬化/半(準(zhǔn))虛擬化
- 七、主流的虛擬化軟件介紹
- VMware
- VirtualBox
- KVM
- Xen
- Hyper-V
- OpenVZ
- 八、產(chǎn)方支持
一、服務(wù)器虛擬技術(shù)簡(jiǎn)介
服務(wù)器虛擬化技術(shù)是指通過(guò)運(yùn)用虛擬化的技術(shù)充分發(fā)揮服務(wù)器的硬件性能,能夠在確保企業(yè)投入成本的同時(shí),提高運(yùn)營(yíng)效率,節(jié)約能源降低經(jīng)濟(jì)成本和空間浪費(fèi),對(duì)于發(fā)展迅速,成長(zhǎng)規(guī)模大的用戶(hù)來(lái)說(shuō),可以通過(guò)服務(wù)器虛擬化技術(shù)帶來(lái)更多的經(jīng)濟(jì)效益。
二、基本概念
如果你曾經(jīng)將硬盤(pán)劃分為不同分區(qū),那么可能會(huì)對(duì)虛擬化的概念有所理解。分區(qū)是硬盤(pán)驅(qū)動(dòng)器的邏輯劃分,實(shí)際上相當(dāng)于創(chuàng)建了兩個(gè)獨(dú)立的邏輯硬盤(pán)。本質(zhì)上有兩種主要的方法構(gòu)建Hyper-visor解決方案:微內(nèi)核和宏內(nèi)核。微內(nèi)核方法使用非常薄的一層專(zhuān)用代碼作為Hyper-visor,只執(zhí)行確保分區(qū)隔離和內(nèi)存管理的核心任務(wù)。這一層并不包括I/O軟件?;蛟O(shè)備驅(qū)動(dòng)。這是Hyper-V所用的方法。在這種架構(gòu)下,虛擬化軟件棧和特定于硬件的驅(qū)動(dòng)程序位于一個(gè)專(zhuān)用的分區(qū)中,稱(chēng)之為父分區(qū)。
三、虛擬技術(shù)的好處
為向訪客操作系統(tǒng)提供一些額外的特性,Hyper-V提供了集成組件。通過(guò)使用Hyper-V,大大提高了虛擬化平臺(tái)的可伸縮性、可用性、可管理性和性能。使用終端服務(wù)(Terminal Service)提供的顯示虛擬化(presentation virtualization),可以避免分布式應(yīng)用程序的部署問(wèn)題。終端服務(wù)可以幫助監(jiān)控網(wǎng)關(guān)連接狀態(tài)、事件和健康狀況。
Hyper-V在其虛擬機(jī)中支持兩類(lèi)設(shè)備:合成設(shè)備和模擬設(shè)備。合成設(shè)備本質(zhì)上就是把虛擬機(jī)設(shè)備發(fā)出的設(shè)備請(qǐng)求打包,然后轉(zhuǎn)發(fā)給新的VMBus,這是一個(gè)內(nèi)存中的流水線,VMBus再將設(shè)備請(qǐng)求轉(zhuǎn)發(fā)給物理設(shè)備。而在另一方面,模擬設(shè)備則使用宿主操作系統(tǒng)的軟件來(lái)模擬使用了額外的宿主操作系統(tǒng)處理功能的設(shè)備。Hyper-V的軟件設(shè)備模擬由vmwp.exe程序進(jìn)行。
Hyper-V從最初設(shè)計(jì)實(shí)現(xiàn)時(shí),就在一臺(tái)計(jì)算機(jī)上運(yùn)行的各個(gè)操作系統(tǒng)實(shí)例之間建立了強(qiáng)有力的邊界。為使訪客操作系統(tǒng)與宿主操作系統(tǒng)之間能夠交互,并向所支持的訪客操作系統(tǒng)提供一些額外的功能。Hper-V提供了集成組件(Integration Components)來(lái)支持以下特性:時(shí)間同步、心跳功能、訪客操作系統(tǒng)關(guān)閉、操作系統(tǒng)識(shí)別。
終端服務(wù)能使用戶(hù)創(chuàng)建一個(gè)集成化的系統(tǒng),允許用戶(hù)從任何有網(wǎng)絡(luò)連接的地點(diǎn)快捷而安全地提供訪問(wèn)基于Windows的應(yīng)用程序的入口。
四、虛擬化原理簡(jiǎn)介
用戶(hù)/內(nèi)核空間
Windows和Linux都將內(nèi)存分為內(nèi)核空間和用戶(hù)空間,操作系統(tǒng)內(nèi)核代碼運(yùn)行在內(nèi)核空間,應(yīng)用程序代碼運(yùn)行在用戶(hù)空間。
特權(quán)級(jí)
特權(quán)級(jí)是一種用來(lái)保護(hù)數(shù)據(jù)和阻止惡意行為的機(jī)制,x86計(jì)算機(jī)的CPU提供4個(gè)特權(quán)級(jí):ring0~3,ring0權(quán)限最高,ring3權(quán)限最低。
ring0提供給操作系統(tǒng)內(nèi)核(內(nèi)核空間代碼)使用,可以使用所有CPU指令,可以直接操作硬件(如CPU、內(nèi)存)。
ring3提供給應(yīng)用程序(用戶(hù)空間代碼)使用的,只可以調(diào)用基本的CPU指令。
ring1、ring2被設(shè)計(jì)為運(yùn)行驅(qū)動(dòng)程序,但Windows、Linux將驅(qū)動(dòng)程序運(yùn)行在ring0,未使用這兩個(gè)特權(quán)級(jí)。
Tips:CPU清除內(nèi)存數(shù)據(jù)、設(shè)置時(shí)鐘等指令是非常危險(xiǎn)的,如果用錯(cuò)了會(huì)導(dǎo)致系統(tǒng)崩潰。通過(guò)特權(quán)級(jí)這一機(jī)制,區(qū)分內(nèi)核代碼和應(yīng)用程序代碼權(quán)限,保證操作系統(tǒng)正常運(yùn)行。
指令類(lèi)型
未虛擬化時(shí),可以將CPU的指令分為特權(quán)指令和非特權(quán)指令。
特權(quán)指令
在多用戶(hù)、多任務(wù)的計(jì)算機(jī)系統(tǒng)中特權(quán)指令必不可少,它主要用于系統(tǒng)資源的分配和管理,包括改變系統(tǒng)工作方式,檢測(cè)用戶(hù)的訪問(wèn)權(quán)限,修改虛擬存儲(chǔ)器管理的段表、頁(yè)表,完成任務(wù)的創(chuàng)建和切換等。
常見(jiàn)的特權(quán)指令有以下幾種:
- 有關(guān)對(duì)I/O設(shè)備使用的指令 如啟動(dòng)I/O設(shè)備指令、測(cè)試I/O設(shè)備工作狀態(tài)和控制I/O設(shè)備動(dòng)作的指令等。
- 有關(guān)訪問(wèn)程序狀態(tài)的指令 如對(duì)程序狀態(tài)字(PSW)的指令等。
- 存取特殊寄存器指令 如存取中斷寄存器、時(shí)鐘寄存器等指令。
- 其他指令
非特權(quán)指令
非特權(quán)指令有的需要以ring0運(yùn)行,有的可以任意ring運(yùn)行。操作系統(tǒng)內(nèi)核以ring0運(yùn)行,可以使用所有指令;應(yīng)用程序以ring3運(yùn)行,所以不能使用特權(quán)指令和部分非特權(quán)指令。
Tips:特權(quán)指令必須以ring0運(yùn)行,否則會(huì)產(chǎn)生異常,將控制權(quán)交還ring0,非特權(quán)指令有的需要以ring0運(yùn)行,有的不需要。
虛擬化后,CPU的指令分為特權(quán)指令,敏感指令,普通指令。
Tips:敏感指令=特權(quán)指令+部分非特權(quán)指令,也就是說(shuō)特權(quán)指令一定是敏感指令。
敏感指令
敏感指令是指操作特權(quán)資源的指令。
1.企圖訪問(wèn)或修改虛擬機(jī)模式或機(jī)器狀態(tài)的指令。
2.企圖訪問(wèn)或修改敏感寄存器或存儲(chǔ)單元,如時(shí)鐘寄存器、中斷寄存器等的指令。
3.企圖訪問(wèn)存儲(chǔ)保護(hù)系統(tǒng)或內(nèi)存、地址分配系統(tǒng)的指令。
4.所有I/O指令。
Tips:特權(quán)指令只有ring0才能執(zhí)行,當(dāng)非ring0執(zhí)行時(shí)會(huì)產(chǎn)生異常,非特權(quán)指令有的也需要ring0才能運(yùn)行,但是它們非ring0運(yùn)行不會(huì)產(chǎn)生異常。
五、服務(wù)器虛擬化的分類(lèi)
服務(wù)器虛擬化的有多種劃分方式,可以根據(jù)虛擬化架構(gòu)劃分為裸金屬/寄居,根據(jù)虛擬化層次硬件輔助虛擬化/軟件輔助虛擬化,根據(jù)虛擬化平臺(tái)劃分為全虛擬化/半虛擬化。
裸金屬/寄居
未虛擬化的x86服務(wù)器架構(gòu),自下而上是物理硬件(Hardware)、操作系統(tǒng)(OS),應(yīng)用程序(APP)。這和我們個(gè)人計(jì)算機(jī)一樣,就是在計(jì)算機(jī)上裝操作系統(tǒng),再在操作系統(tǒng)里面安裝應(yīng)用程序。
未虛擬化的x86服務(wù)器
裸金屬
裸金屬(bare-metal)架構(gòu)也叫bare-metal hypervisor、Ⅰ型,最有代表性就是VMware ESX(i)。
VMware ESXi
ESXi是VMware的企業(yè)級(jí)服務(wù)器虛擬化技術(shù),本身是一個(gè)操作系統(tǒng),直接安裝的物理服務(wù)器上。使用ESXi需要先在物理服務(wù)器上安裝ESXi,然后在ESXi中創(chuàng)建各種虛擬硬件(相應(yīng)虛擬硬件的集合,不包括操作系統(tǒng),也可以稱(chēng)為虛擬機(jī)),再在虛擬機(jī)上安裝操作系統(tǒng),最后才能在這些操作系統(tǒng)中安裝應(yīng)用程序。
Tips:早期VMware的企業(yè)級(jí)服務(wù)器虛擬化版本稱(chēng)為ESX,后來(lái)升級(jí)版本稱(chēng)為ESXi。
寄居
寄居(hosted)架構(gòu)也叫hosted hypervisors、Ⅱ型,代表產(chǎn)品VMware workstation和VirtualBox。
Windows中使用VMware workstation實(shí)現(xiàn)服務(wù)器虛擬化
VMware workstation和VirtualBox通常用作個(gè)人學(xué)習(xí)、測(cè)試,與寄居架構(gòu)的VMware ESXi最明顯的區(qū)別在于,ESXi是操作系統(tǒng),直接安裝在物理硬件之上,而VMware workstation則是軟件,需要安裝在操作系統(tǒng)(一般是Windows,也支持Linux)中。
以Windows中安裝VMware workstation為例,先在計(jì)算機(jī)上安裝Windows,再在Windows上安裝workstations,再在workstations中創(chuàng)建虛擬機(jī),最后在虛擬機(jī)中安裝操作系統(tǒng),在操作系統(tǒng)中安裝軟件。
判斷虛擬化類(lèi)型是裸金屬還是寄居架構(gòu),取決于虛擬化層,也就是hypervisor所處的位置。寄居架構(gòu)將虛擬化層(hypervisor)以一個(gè)應(yīng)用程序的方式安裝運(yùn)行于操作系統(tǒng)之上,支持最為廣泛的各種硬件配置(只要HOST OS支持該硬件即可)。裸金屬架構(gòu)將虛擬化層(hypervisor)直接安裝到干凈的x86服務(wù)器上,裸金屬架構(gòu)相對(duì)于寄居架構(gòu)效率更高(少了Host OS這一層),且具有更好的可擴(kuò)展性、健壯性和性能。
企業(yè)級(jí)服務(wù)器虛擬化都是裸金屬架構(gòu)(效率更高),像主流的企業(yè)級(jí)服務(wù)器虛擬化ESXi、KVM、Xen、Hyper-v都是裸金屬架構(gòu)。
有點(diǎn)特殊的裸金屬KVM
KVM關(guān)于裸金屬/寄居的劃分有點(diǎn)模糊。
KVM
部署KVM,首先需要在物理服務(wù)器上安裝Linux系統(tǒng),再在Linux中“安裝KVM”。通常所說(shuō)的KVM實(shí)際上是KVM和qemu兩種技術(shù)的結(jié)合,qemu本身是一種完整的寄居架構(gòu)軟件,采用二進(jìn)制翻譯的方式虛擬化CPU,KVM則采用效率更高的硬件輔助虛擬化CPU。由于KVM只能虛擬化CPU、內(nèi)存,其它硬件(網(wǎng)卡、硬盤(pán))的虛擬化則是由qemu來(lái)負(fù)責(zé)。
qemu是寄居架構(gòu),通俗來(lái)講就是qemu是個(gè)工作在Linux上的軟件。而KVM則相當(dāng)于“給Linux內(nèi)核打了一個(gè)補(bǔ)丁”,將Linux部分內(nèi)核轉(zhuǎn)換為hypervisor,Linux內(nèi)核自然屬于操作系統(tǒng),這樣看來(lái)KVM的hypervisor既有寄居(qemu)又有裸金屬(kvm),是一種比較特殊的裸金屬。
Tips:以CentOS系統(tǒng)部署KVM為例,僅簡(jiǎn)單體驗(yàn)KVM可以通過(guò)yum安裝。因?yàn)槲覀兞?xí)慣了yum安裝各種軟件,這樣看起來(lái)KVM是yum安裝的“軟件”,應(yīng)該屬于寄居架構(gòu),實(shí)際上多把KVM劃為裸金屬架構(gòu)。因?yàn)橄裆?jí)操作系統(tǒng),可以通過(guò)yum(yum install kernel),但升級(jí)操作系統(tǒng)不能認(rèn)為是通過(guò)yum安裝kernel這個(gè)軟件,同理也不應(yīng)該認(rèn)為部署KVM是在操作系統(tǒng)中安裝了KVM這個(gè)軟件。
有點(diǎn)特殊的裸金屬的Hyper-v和Xen
把他們放在一起是因?yàn)樗麄兌加幸粋€(gè)非常相似的概念,Hyper-v叫做父分區(qū)、Xen叫做Domain 0 。Hyper-v是Windows Server的一個(gè)功能,Xen則是在原Linux上安裝新的Linux內(nèi)核。沒(méi)有開(kāi)啟Hyper-v的Windows Server和沒(méi)有部署Xen的Linux,就是普通的x86服務(wù)器結(jié)構(gòu)。
部署虛擬化之后,兩者非常相似。同樣是物理硬件位于最底層,hypervisor則分別是Xen和Hyper-v。對(duì)于Xen來(lái)說(shuō)原來(lái)的Linux將以新的Linux內(nèi)核運(yùn)行在Domain 0,對(duì)于Hyper-v來(lái)說(shuō),Windows Server運(yùn)行在父分區(qū),他們都相當(dāng)各自的于第一臺(tái)虛擬機(jī)。
hypervisor為虛擬機(jī)提供虛擬的硬件資源,負(fù)責(zé)管理和分配這些資源,但是并不一定能夠直接控制物理硬件。例如Xen和hyper-v,一般結(jié)構(gòu)圖將hypervisor位于最底層,但是最終直接控制物理硬件的驅(qū)動(dòng)程序還是安裝在Domain 0、父分區(qū)中的操作系統(tǒng)上。
Tips:KVM雖然和Xen一樣是安裝在Linux中,但是KVM沒(méi)有Domain 0的概念,在Linux部署KVM后,其hypervisor相當(dāng)于Linux的一部分,可以說(shuō)hypervisor和Linux是在同一層,而Xen則是hypervisor位于最底層,原來(lái)的Linux相當(dāng)于一臺(tái)虛擬機(jī),原來(lái)的Linux(Domain0)和其它虛擬化(Domain U)位于同一層。
硬件輔助虛擬化/軟件輔助虛擬化
通常根據(jù)CPU虛擬化的方式將服務(wù)器虛擬化技術(shù)劃分為硬件輔助虛擬化和軟件輔助虛擬化,軟件輔助虛擬化是通過(guò)hypervisor實(shí)現(xiàn)CPU虛擬化,硬件輔助虛擬化則是借助硬件(需要CPU、芯片組、BIOS、hypervisor都支持)實(shí)現(xiàn)CPU虛擬化。常見(jiàn)的硬件輔助虛擬化技術(shù):intel vt-x、AMD-v,它們和各自生產(chǎn)的CPU綁定,intel CPU只能用intel vt-x,AMD CPU只能用AMD-v。
因?yàn)橛布o助虛擬化效率更高,現(xiàn)在主流的企業(yè)級(jí)服務(wù)器虛擬化都是采用硬件輔助虛擬化技術(shù)(intel vt-x或AMD-v),KVM和Hyper-v僅支持硬件輔助虛擬化(不支持軟件輔助虛擬化),ESXi、Xen和VMware workstation是兩者都支持。
Tips:現(xiàn)在不單是CPU有硬件輔助虛擬化,網(wǎng)卡和芯片組也有硬件輔助虛擬化。比如以Intel VT虛擬化技術(shù)就包括分別針對(duì)處理器、芯片組、網(wǎng)絡(luò)的IntelVT-x、IntelVT-d和IntelVT-c技術(shù),以及顯卡虛擬化GVT,不過(guò)服務(wù)器虛擬化劃分標(biāo)準(zhǔn)還是根據(jù)CPU虛擬化的方式?jīng)Q定的。
全虛擬化/半(準(zhǔn))虛擬化
全虛擬化和半虛擬化,直觀的體現(xiàn)就是半虛擬化使用定制的Gust OS,全虛擬化則不必,使用普通適用于x86的的操作系統(tǒng)即可,具體原因見(jiàn)下文。
Tips:在主流的4種服務(wù)器虛擬化技術(shù)中,Xen全半虛擬化都支持。半虛擬化使用定制的Gust OS,這給維護(hù)帶來(lái)極大不便,但是性能比較好。全虛擬化,最開(kāi)始是使用軟件輔助虛擬化,虛擬化的損耗較大,性能較低。隨著技術(shù)發(fā)展,通過(guò)硬件輔助虛擬化實(shí)現(xiàn)的全虛擬化性能已經(jīng)極佳了。
七、主流的虛擬化軟件介紹
VMware
官網(wǎng)
這款虛擬機(jī)軟件兼容性不錯(cuò),VMware Tools也很強(qiáng)大,快照功能很快捷,方便,允許你在任意開(kāi)機(jī)時(shí)刻創(chuàng)建系統(tǒng)快照和恢復(fù),主要用于調(diào)試極易產(chǎn)生藍(lán)屏的軟件和工具,十分實(shí)用。有點(diǎn)不好的地方在于它安裝時(shí)會(huì)虛擬兩塊網(wǎng)卡,還可以在設(shè)置中虛擬更多的虛擬網(wǎng)卡,一般來(lái)說(shuō)使用橋接Bridge的方法就可以讓虛擬機(jī)上網(wǎng),基本沒(méi)有用過(guò)NAT方式。VMware和VirtualBox一樣都是會(huì)修改電腦本身的網(wǎng)卡設(shè)置的。
VMware創(chuàng)造性的提出了一個(gè)二進(jìn)制翻譯技術(shù)。VMM在虛擬機(jī)操作系統(tǒng)和宿主計(jì)算機(jī)之間扮演一個(gè)橋梁的角色,將虛擬機(jī)中的要執(zhí)行的指令“翻譯”成恰當(dāng)?shù)闹噶钤谒拗魑锢碛?jì)算機(jī)上執(zhí)行,以此來(lái)模擬執(zhí)行虛擬機(jī)中的程序。你可以簡(jiǎn)單理解成Java虛擬機(jī)執(zhí)行Java字節(jié)碼的過(guò)程,不同的是Java虛擬機(jī)執(zhí)行的是字節(jié)碼,而VMM模擬執(zhí)行的就是CPU指令。
另外值得一提的是,為了提高性能,也并非所有的指令都是模擬執(zhí)行的,VMware在這里做了不少的優(yōu)化,對(duì)一些“安全”的指令,就讓它直接執(zhí)行也未嘗不可。所以VMware的二進(jìn)制翻譯技術(shù)也融合了部分的直接執(zhí)行。
對(duì)于虛擬機(jī)中的操作系統(tǒng),VMM需要完整模擬底層的硬件設(shè)備,包括處理器、內(nèi)存、時(shí)鐘、I/O設(shè)備、中斷等等,換句話說(shuō),VMM用純軟件的形式“模擬”出一臺(tái)計(jì)算機(jī)供虛擬機(jī)中的操作系統(tǒng)使用。
這種完全模擬一臺(tái)計(jì)算機(jī)的技術(shù)也稱(chēng)為全虛擬化,這樣做的好處顯而易見(jiàn),虛擬機(jī)中的操作系統(tǒng)感知不到自己是在虛擬機(jī)中,代碼無(wú)需任何改動(dòng),直接可以安裝。而缺點(diǎn)也是可以想象:完全用軟件模擬,轉(zhuǎn)換翻譯執(zhí)行,性能堪憂!
而QEMU則是完全軟件層面的“模擬”,乍一看和VMware好像差不多,不過(guò)實(shí)際本質(zhì)是完全不同的。VMware是將原始CPU指令序列翻譯成經(jīng)過(guò)處理后的CPU指令序列來(lái)執(zhí)行。而QEMU則是完全模擬執(zhí)行整個(gè)CPU指令集,更像是“解釋執(zhí)行”,兩者的性能不可同日而語(yǔ)。
VirtualBox
官網(wǎng)
Sun公司的產(chǎn)品,屬于輕量級(jí)的虛擬機(jī)平臺(tái),而且是開(kāi)源的,完整安裝包很小,不像VMware有幾百兆,功能相對(duì)也很精簡(jiǎn),快照功能這里叫備份和快速修復(fù),在不同的快照間跳轉(zhuǎn)用起來(lái)感覺(jué)不是很方便,也不能實(shí)現(xiàn)文件拖拽的功能。文件共享方面,叫做“數(shù)據(jù)空間”,在關(guān)機(jī)的狀態(tài)下,先在設(shè)置中選擇主機(jī)的一個(gè)目錄來(lái)加入到固定分配欄中。然后在虛擬機(jī)中右鍵單擊我的電腦選擇“映射網(wǎng)絡(luò)驅(qū)動(dòng)器”,在文件夾瀏覽中整個(gè)網(wǎng)絡(luò)里的”VirtualBox Shared Foders”選擇剛才共享的那個(gè)文件夾,確定后就可以將其映射為我的電腦中的一個(gè)盤(pán)符使用了。
KVM
官網(wǎng)
KVM (全稱(chēng)是 Kernel-based Virtual Machine) 是 Linux 下 x86 硬件平臺(tái)上的全功能虛擬化解決方案,包含一個(gè)可加載的內(nèi)核模塊 kvm.ko,提供和虛擬化核心架構(gòu)和處理器規(guī)范模塊。使用 KVM 可允許多個(gè)包括 Linux 和 Windows 每個(gè)虛擬機(jī)有私有的硬件,包括網(wǎng)卡、磁盤(pán)以及圖形適配卡等。
那 IO 的虛擬化,比如存儲(chǔ)和網(wǎng)絡(luò)設(shè)備則是由 Linux 內(nèi)核與Qemu來(lái)實(shí)現(xiàn)。
作為一個(gè) Hypervisor,KVM 本身只關(guān)注虛擬機(jī)調(diào)度和內(nèi)存管理這兩個(gè)方面。IO 外設(shè)的任務(wù)交給 Linux 內(nèi)核和 Qemu。
大家在網(wǎng)上看 KVM 相關(guān)文章的時(shí)候肯定經(jīng)常會(huì)看到 Libvirt 這個(gè)東西。
Libvirt 就是 KVM 的管理工具。
其實(shí),Libvirt 除了能管理 KVM 這種 Hypervisor,還能管理 Xen,VirtualBox 等。
Libvirt 包含 3 個(gè)東西:后臺(tái) daemon 程序 libvirtd、API 庫(kù)和命令行工具 virsh
- libvirtd是服務(wù)程序,接收和處理 API 請(qǐng)求;
- API 庫(kù)使得其他人可以開(kāi)發(fā)基于 Libvirt 的高級(jí)工具,比如 virt-manager,這是個(gè)圖形化的 KVM 管理工具;
- virsh 是我們經(jīng)常要用的 KVM 命令行工具
Xen
官網(wǎng)
既然有全虛擬化,那與之相對(duì)的也就有半虛擬化,前面說(shuō)了,由于敏感指令的關(guān)系,全虛擬化的VMM需要捕獲到這些指令并完整模擬執(zhí)行這個(gè)過(guò)程,實(shí)現(xiàn)既滿足虛擬機(jī)操作系統(tǒng)的需要,又不至于影響到物理計(jì)算機(jī)。
但說(shuō)來(lái)簡(jiǎn)單,這個(gè)模擬過(guò)程實(shí)際上相當(dāng)?shù)膹?fù)雜,涉及到大量底層技術(shù),并且如此模擬費(fèi)時(shí)費(fèi)力。
而試想一下,如果把操作系統(tǒng)中所有執(zhí)行敏感指令的地方都改掉,改成一個(gè)接口調(diào)用(HyperCall),接口的提供方VMM實(shí)現(xiàn)對(duì)應(yīng)處理,省去了捕獲和模擬硬件流程等一大段工作,性能將獲得大幅度提升。
這就是半虛擬化,這項(xiàng)技術(shù)的代表就是Xen,一個(gè)誕生于2003年的開(kāi)源項(xiàng)目。
這項(xiàng)技術(shù)一個(gè)最大的問(wèn)題是:需要修改操作系統(tǒng)源碼,做相應(yīng)的適配工作。這對(duì)于像Linux這樣的開(kāi)源軟件還能接受,充其量多了些工作量罷了。但對(duì)于Windows這樣閉源的商業(yè)操作系統(tǒng),修改它的代碼,無(wú)異于癡人說(shuō)夢(mèng)。
Xen對(duì)虛擬機(jī)的虛擬化分為兩大類(lèi),半虛擬化(Para virtualization)和完全虛擬化(Hardware VirtualMachine)。
半虛擬化(PV)
1、半虛擬化
- 半虛擬化(Paravirtualization)有些資料稱(chēng)為“超虛擬化”,簡(jiǎn)稱(chēng)為PV,是Xen主導(dǎo)的虛擬化技術(shù)。這種技術(shù)允許虛擬機(jī)操作系統(tǒng)感知到 自己運(yùn)行在Xen Hypervisor上而不是直接運(yùn)行在硬件上,同時(shí)也可以識(shí)別出其他運(yùn)行在相同環(huán)境中的客戶(hù)虛擬機(jī)。
- 在Xen Hypervisor上運(yùn)行的半虛擬化的操作系統(tǒng),為了調(diào)用系統(tǒng)管理程序(Xen Hypervisor),要有選擇地修改操作系統(tǒng),然而卻不需要修改操作系統(tǒng)上運(yùn)行的應(yīng)用程序。由于 Xen 需要修改操作系統(tǒng)內(nèi)核,所以您不能直接讓當(dāng)前的 Linux 內(nèi)核在 Xen 系統(tǒng)管理程序中運(yùn)行,除非它已經(jīng)移植到了Xen 架構(gòu)。不過(guò),如果當(dāng)前系統(tǒng)可以使用新的已經(jīng)移植到 Xen 架構(gòu)的Linux 內(nèi)核,那么您就可以不加修改地運(yùn)行現(xiàn)有的系統(tǒng)。
2、完全虛擬化(HVM)
- 完全虛擬化(Hardware Virtual Machine)又稱(chēng)“硬件虛擬化”,簡(jiǎn)稱(chēng)HVM,是指運(yùn)行在虛擬環(huán)境上的虛擬機(jī)在運(yùn)行過(guò)程中始終感覺(jué)自己是直接運(yùn)行在硬件之上的,并且感知不到在相同硬件環(huán)境下運(yùn)行著其他虛擬機(jī)的虛擬技術(shù)。
- 在Xen Hypervisor運(yùn)行的完全虛擬化虛擬機(jī),所運(yùn)行的操作系統(tǒng)都是標(biāo)準(zhǔn)的操作系統(tǒng),即:無(wú)需任何修改的操作系統(tǒng)版本。同時(shí)也需要提供特殊的硬件設(shè)備。
- 值的注意的是,在Xen上虛擬的Windows虛擬機(jī)必須采用完全虛擬化技術(shù)。
Hyper-V
官網(wǎng)
Hyper-V是微軟的一款虛擬化產(chǎn)品,大部分國(guó)內(nèi)的VPS服務(wù)商使用這個(gè)架構(gòu),主要是因?yàn)槠滢D(zhuǎn)為Windows定制,管理起來(lái)較為方便。目前的Hyper-V也支持Linux,只不過(guò)性能損失比較嚴(yán)重。
Hyper-V完美支持Windows系統(tǒng),包括32位和64位。如果大家選購(gòu)Hyper-V架構(gòu)的VPS,強(qiáng)烈建議使用Windows。
Hyper-V目前不能超售內(nèi)存,但可超售硬盤(pán),硬盤(pán)是根據(jù)客戶(hù)使用情況扣除。一般來(lái)說(shuō),服務(wù)器的硬盤(pán)不會(huì)100%用完,這點(diǎn)不用擔(dān)心。
Hyper-V適用人群:Windows系統(tǒng)愛(ài)好者
Hyper-V注意事項(xiàng):Linux操作系統(tǒng)性能較低
Hyper-V可用系統(tǒng):Windows、Linux
OpenVZ
官網(wǎng)
OpenVZ(簡(jiǎn) 稱(chēng)OVZ)采用SWsoft的Virutozzo虛擬化服務(wù)器軟件產(chǎn)品的內(nèi)核,是基于Linux平臺(tái)的操作系統(tǒng)級(jí)服務(wù)器虛擬化架構(gòu)。這個(gè)架構(gòu)直接調(diào)用母服務(wù)器(母機(jī))中的內(nèi)核,模擬生成出子服務(wù)器(VPS,小機(jī)),所以,它經(jīng)過(guò)虛擬化后相對(duì)于母服務(wù)器,性能損失大概只有的1-3%。
當(dāng)然 OpenVZ可以超售,意思味著一臺(tái)服務(wù)器總共16G內(nèi)存,他可以開(kāi)出配置為1G內(nèi)存×17臺(tái)以上的子服務(wù)器。因?yàn)樗奶摂M架構(gòu)關(guān)系屬于:客戶(hù)用多少,就扣除母服務(wù)器多少,所以O(shè)penVZ架構(gòu)的VPS較為便宜。但由于存在超售因素,如果服務(wù)商毫無(wú)休止的超售會(huì)導(dǎo)致服務(wù)器的性能急劇下降。
OpenVZ另一個(gè)特點(diǎn)是,它是直接調(diào)用母服務(wù)器的內(nèi)核,所以會(huì)導(dǎo)致部分軟件無(wú)法使用,以及部分內(nèi)核文件是無(wú)法修改。
OpenVZ適用人群:新手、低預(yù)算客戶(hù)
OpenVZ注意事項(xiàng):資源不是自己獨(dú)有的,安裝VPN服務(wù)需要注意檢測(cè)虛擬網(wǎng)卡支持。
OpenVZ可用系統(tǒng):Linux(不支持Windows)
OpenVZ代表商家:Buyvm.net
八、產(chǎn)方支持
如果以上產(chǎn)品我們不打算買(mǎi)廠商支持,其中vmware和hyper-v,是不建議使用的,主要是授權(quán)問(wèn)題。
這時(shí)就剩下kvm和xen了,如果虛擬windows,建議使用 kvm,我們可以從 redhat那里免費(fèi)拿到針對(duì) windows 優(yōu)化過(guò)的磁盤(pán)和網(wǎng)絡(luò)的驅(qū)動(dòng) 程序,可以達(dá)到較高的性能(幾乎與hyper-v性能持平)。
總結(jié)
- 上一篇: 【转】使用命令行方式创建和启动andro
- 下一篇: 深圳SQL数据库823报错修复