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