成本是永恒的話題。
虛擬化的目標(biāo)也是降低成本,體現(xiàn)為對(duì)IT資源的充分利用。
一、虛擬化發(fā)展脈絡(luò)
20世紀(jì)50~70年代,大型機(jī)應(yīng)用廣泛。但也比較貴,如何節(jié)省成本成為考慮的因素。一種簡(jiǎn)單的想法,多個(gè)終端用戶能夠共享同一大型機(jī)。
從時(shí)間的角度來考慮,就是將CPU時(shí)間劃分成非常小的時(shí)間片,每個(gè)時(shí)間片執(zhí)行不同用戶的工作任務(wù),并通過輪詢的方式進(jìn)行調(diào)度。這樣,表面上不同用戶的任務(wù)在同一硬件資源上都得到了執(zhí)行,本質(zhì)上是后臺(tái)是“分時(shí)共享”大型機(jī)。20世紀(jì)60年代,IBM在其System/360中實(shí)現(xiàn)了該分時(shí)系統(tǒng),并在System/370正式命名為虛擬機(jī)。
20世紀(jì)80年代,硬件成本降低,虛擬化技術(shù)逐步被放棄。
20世紀(jì)90年代,Win-Intel聯(lián)盟、Linux操作系統(tǒng)的發(fā)展,x86服務(wù)器架構(gòu)應(yīng)用廣泛,成為服務(wù)器硬件設(shè)施的主流。但X86計(jì)算機(jī)架構(gòu),最早著眼于性能要求不高的場(chǎng)景,沒有考慮對(duì)虛擬化技術(shù)的支持。
人們?cè)谑褂脁86服務(wù)器時(shí),為了滿足業(yè)務(wù)的需求,通常會(huì)對(duì)業(yè)務(wù)流程進(jìn)行壓測(cè),得到業(yè)務(wù)所需的x86服務(wù)器配置,這種配置往往采用按照業(yè)務(wù)最高的要求。這樣,在日常運(yùn)行中,就會(huì)導(dǎo)致服務(wù)器的CPU利用率比較低,處于10%~30%之間,也就是服務(wù)器資源沒有得到充分利用。
隨后,各個(gè)公司推出了各種虛擬化解決方案:
- VMware將虛擬化技術(shù)引入到x86服務(wù)器中,發(fā)布了ESX產(chǎn)品。
- Xen虛擬化平臺(tái)由劍橋大學(xué)研究,成為開源虛擬化資源的代表。
- 微軟推出Hyper-V。
- Intel硬件虛擬化VT-x方案。
二、虛擬化概念與架構(gòu)
虛擬化是什么?
IBM公司給出的定義比較有代表性:“虛擬化是資源的邏輯表示,它不受物理限制的約束?!?/p>
簡(jiǎn)單地說,就將X86服務(wù)器硬件資源進(jìn)行抽象,在其上構(gòu)建一臺(tái)臺(tái)虛擬機(jī)。虛擬機(jī)與X86服務(wù)器沒有什么不同,可以安裝操作系統(tǒng),部署用戶APP并運(yùn)行。
那么,如何實(shí)現(xiàn)虛擬化呢?
在硬件資源和虛擬機(jī)之間,需要有一個(gè)抽象層,向下對(duì)硬件進(jìn)行抽象,向上提供人虛擬機(jī),并確保這些虛擬機(jī)之間是獨(dú)立且隔離的。這個(gè)抽象層稱為虛擬機(jī)監(jiān)控器(Virtual Machine Monitor,VMM)。
通常情況下,將X86服務(wù)器上的操作系統(tǒng)稱為Host OS(宿主),將虛擬機(jī)的操作系統(tǒng)稱為Guest OS(客戶)。
根據(jù)VMM是否直接部署在硬件上,又分為宿主型、裸機(jī)型和混合型。
- 宿主型:硬件資源仍由Host OS來管理,VMM是OS的內(nèi)核,體現(xiàn)為一個(gè)進(jìn)程。
- 裸機(jī)型:VMM直接部署并運(yùn)行在硬件上。
- 混合型:宿主型和裸機(jī)型的融合。
根據(jù)虛擬的資源類型來劃分,虛擬化又可以分為計(jì)算虛擬化、存儲(chǔ)虛擬化和網(wǎng)絡(luò)虛擬化。
三、實(shí)現(xiàn)機(jī)制
前面提到,X86架構(gòu)在初始設(shè)計(jì)時(shí),并未考慮虛擬化的情況。這意味著后續(xù)硬件支持虛擬化時(shí),必然采用打補(bǔ)丁的方式。
這里僅討論CPU虛擬化。
在x86架構(gòu)的CPU指令集中,有Ring0、Ring2、Ring2、Ring3四個(gè)狀態(tài),其中,Ring0權(quán)限最高,操作系統(tǒng)擁有此權(quán)限,能夠直接管控所有資源。Ring3權(quán)限最低,應(yīng)用程序擁有此權(quán)限。應(yīng)用程序可以訪問自己權(quán)限內(nèi)的硬件資源,不能訪問Ring0權(quán)限內(nèi)的硬件資源。
從運(yùn)行態(tài)上來看,虛擬機(jī)是x86服務(wù)器上的進(jìn)程,擁有Ring3權(quán)限。不具有Host OS的Ring0權(quán)限,無法訪問整個(gè)硬件資源,此時(shí)如果直接訪問,則會(huì)被Host OS捕捉到并觸發(fā)異常,彈出警告窗口。
那么,如何才能Guest OS擁有Ring0權(quán)限呢?從x86架構(gòu)的原始設(shè)計(jì)來看,不可能。
退一步,讓Guest OS自認(rèn)為的擁有Ring0權(quán)限。這就需要底層VMM或者硬件做到“Guest OS自認(rèn)為的權(quán)限”,以此來欺騙Guest OS。
先來看看VMM如何做?
一種方法是將欺騙進(jìn)行到底。
Guest OS不做任何修改,依然是那個(gè)追風(fēng)少年,VMM依然變成一個(gè)保姆,有求必應(yīng)。但VMM也是有策略的:
針對(duì)一些不敏感的指令,VMM直接進(jìn)行“翻譯”,調(diào)用Host OS,為Guest OS模擬出它所需要的包括CPU、磁盤、內(nèi)存、網(wǎng)卡、顯卡等抽象硬件資源。
針對(duì)一些敏感指令,如reboot,VMM考慮到會(huì)影響整個(gè)x86服務(wù)器,則將進(jìn)行“模擬”,轉(zhuǎn)換為只針對(duì)特定Guest OS 的reboot指令。
另一種是認(rèn)清現(xiàn)實(shí),就是一個(gè)虛擬機(jī)。
告知Guest OS一些細(xì)節(jié),Guest OS自身做一些調(diào)整,修改指令集中的敏感指令和核心態(tài)指令,使得Host OS能夠判斷出是誰要訪問硬件資源,從而提供相應(yīng)的硬件抽象。
再來看看,硬件如何做?
原來x86架構(gòu)包含4個(gè)權(quán)限的指令集,現(xiàn)在打補(bǔ)丁。引入VMX新模式:也就是Virtual Machine eXtension,包括根操作模式(VMX Root Operation)和非根操作模式(VMX Non-Root Operation)。
VMM運(yùn)行在根操作模式,Guest OS運(yùn)行在非根操作模式,具有Ring 0權(quán)限,可直接訪問硬件資源,同時(shí),對(duì)于reboot等敏感指令,則由硬件輔助,直接切換到 VMM 執(zhí)行,轉(zhuǎn)換為只針對(duì)特定Guest OS 的指令。
這就是Intel的VT-x方案基本思想。
四、實(shí)現(xiàn)技術(shù)
虛擬化有很多實(shí)現(xiàn)技術(shù),如KVM、Xen、VMware、Virtual Box、Hyper-V 等,這里僅介紹KVM。
KVM(Kernal-based Virtual Machine)是基于Linux內(nèi)核的開源虛擬化方案。KVM提供CPU虛擬化、內(nèi)存虛擬化,而I/O部分,則借助于QEMU實(shí)現(xiàn)( QEMU早于KVM )。
KVM虛擬化方案使用的是VT-x的VMX模式。其技術(shù)架構(gòu)如下:
五、工具
針對(duì)眾多的虛擬化實(shí)現(xiàn)技術(shù),云計(jì)算IaaS平臺(tái)通常采用兼容并包的策略,為了簡(jiǎn)化處理,引入了中間適配層:libvirt。libvirt支持界面和CLI命令行的方式,如virsh、virt-manager。
事實(shí)上,現(xiàn)有的云計(jì)算框架平臺(tái)使用了libvirt的API 來管理虛擬機(jī),如 OpenStack。
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7056瀏覽量
124864 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
962瀏覽量
28966 -
x86服務(wù)器
+關(guān)注
關(guān)注
0文章
6瀏覽量
4280
發(fā)布評(píng)論請(qǐng)先 登錄
解密VST2.0交換機(jī)虛擬化技術(shù)
Linux上的虛擬化技術(shù)歷史回顧
幾種主要的虛擬化技術(shù)有什么不同?
ARM的虛擬化技術(shù)是什么?如何去實(shí)現(xiàn)呢
有關(guān)虛擬機(jī)及虛擬化技術(shù)的幾點(diǎn)詮注
虛擬機(jī)及虛擬化技術(shù)
虛擬化技術(shù)在云計(jì)算中的發(fā)展

評(píng)論