虛擬化技術(shù)與Hypervisor回顧

從接觸虛擬化技術(shù)到現(xiàn)在從事Openstack相關(guān)的開發(fā)已經(jīng)好幾年了,最初很多模模糊糊的概念現(xiàn)在看似也很簡單,但是總覺得欠缺些什么,好吧那就給自己上上課,溫故知新嘛。

虛擬化技術(shù)干什么的?

最早接觸虛擬化是上學(xué)的時候使用虛擬機(jī),當(dāng)時要學(xué)習(xí)Linux,又不想在自己機(jī)器上直接裝,只能用虛擬機(jī)了,當(dāng)年學(xué)生狗電腦不夠給力,只覺得虛擬機(jī)太坑啊,但是能給讓我很好的在PC中運(yùn)行另一個操作系統(tǒng),已經(jīng)很讓我吃驚了,性能的問題就不足掛齒了。
然后我開始用自己的方式慢慢的去理解虛擬化是什么,我覺得最根本的需求就是資源的合理分配,才促使虛擬化技術(shù)的誕生和發(fā)展。比如一筐梨,有10斤,有10個人,每個人都想要1斤梨,不過可能10斤梨一共是9個梨,而且大小也不一定均勻,這樣是很難公平合理的給每個人進(jìn)行分配的。但是如果有這些梨都變成梨汁的話問題就不一樣了,通過榨汁處理后的果汁基本可以做到按需分配,而且成分幾乎一樣。
同樣的道理,服務(wù)器有很多但是面對人們各種各樣或大或小的需求,傳統(tǒng)的方式是很難分配的,有的可能資源不足,有的可能資源過剩,如果能把所有的服務(wù)器中的資源進(jìn)行抽象然后池話,就可以做到按需使用,合理的進(jìn)行資源分配了。
所以虛擬化技術(shù)就相當(dāng)于一個榨汁的過程,將物理資源進(jìn)行抽象。

云計算是干什么的?

后來自己接觸了云計算,從事了Openstack,那這就容易理解很多了,虛擬化技術(shù)將作為整體的物理資源進(jìn)行“榨汁”抽象,那每一個物理服務(wù)器都做相同的處理,最后形成一個龐大的資源池,那如何從資源池中獲得資源,資源如何使用以及統(tǒng)一的調(diào)度管理,資源不夠的時候怎么辦,每個人能使用多少資源等等,說到這里可以看出來,“榨汁”雖然獲取實現(xiàn)起來有些難度,但是在整個資源分配的過程中只是最基本的一環(huán),最后想要這些資源形成生產(chǎn)力是需要一個龐大的系統(tǒng)來支撐的,這就是云計算的作用。如果說虛擬化技術(shù)是一個榨汁過程的話,云計算技術(shù)就是一整套果汁店的運(yùn)行方案了。

虛擬化技術(shù)有哪些

這里參考了一篇文章,可以點(diǎn)這里查看。
其實分類有很多種,站在不同的角度看待一個事物就會有不同的結(jié)果,那從我自己所接觸的并且容易理解的方式,我覺得可以分為三種,硬件仿真,全虛擬化以及半虛擬化。

硬件仿真

在物理機(jī)上創(chuàng)建一個模擬硬件的程序,來仿真所有的硬件,在這個程序之上運(yùn)行虛擬機(jī),最典型的就是QEMU了。

  • 優(yōu)點(diǎn):虛擬機(jī)操作系統(tǒng)(VM OS)不需要更改
  • 缺點(diǎn):由于所有的硬件都是軟件模擬的,所以性能很差

全虛擬化

虛擬機(jī)的操作系統(tǒng)與底層硬件是完全隔離的,由Hypervisor捕捉并進(jìn)行轉(zhuǎn)化由VM OS對硬件的調(diào)用代碼,比較典型的有KVM。

  • 優(yōu)點(diǎn):無需更改虛擬機(jī)操作系統(tǒng),兼容性好。
  • 缺點(diǎn):性能一般,特別是I/O性能

半虛擬化

與全虛擬化技術(shù)類似,利用Hypervisor來實現(xiàn)對底層硬件的共享訪問,但VM OS中需要集成半虛擬化相關(guān)的代碼,也就是讓虛擬機(jī)自己知道是一個虛擬機(jī),來配合Hypervisor。通過這種方式無需捕捉特權(quán)指令,所以性能非常好。最典型的的是Xen。

  • 優(yōu)點(diǎn):性能好
  • 缺點(diǎn):需要對VM OS進(jìn)行更改

這里曾經(jīng)自己有一個疑惑,不太清楚硬件仿真和全虛擬化的區(qū)別在哪里,也可能是中文名字的誘導(dǎo),現(xiàn)在還算清晰一些,硬件仿真的方式,虛擬機(jī)執(zhí)行的指令都是由仿真程序模擬的,而全虛擬化中的虛擬機(jī)的指令是經(jīng)過Hypervisor轉(zhuǎn)給底層硬件的,后者如果還算是真正的調(diào)用了底層硬件的話,前者根本就是假貨,都是仿真程序模擬的。是由根本區(qū)別的。

Hypervisor又是什么?

上面說到虛擬化技術(shù)相當(dāng)于一個榨汁的過程,更準(zhǔn)確點(diǎn)來說算是一個完整榨汁的方案,那Hypervisor就是一個榨汁機(jī)。這時候再看下準(zhǔn)確點(diǎn)的定義應(yīng)該能更清晰了,參考這里吧,這篇文章這樣寫的:

虛擬化 就是通過某種方式隱藏底層物理硬件的過程,從而讓多個操作系統(tǒng)可以透明地使用和共享它。這種架構(gòu)的另一個更常見的名稱是平臺虛擬化。在典型的分層架構(gòu)中,提供平臺虛擬化的層稱為 hypervisor (有時稱為虛擬機(jī)管理程序 或 VMM)。來賓操作系統(tǒng)稱為虛擬機(jī)(VM),因為對這些 VM 而言,硬件是專門針對它們虛擬化的。圖 1 簡單的展示了這個分層架構(gòu)。


figure1.gif

hypervisor 可以劃分為兩大類。首先是類型 1,這種 hypervisor 是直接運(yùn)行在物理硬件之上的。其次是類型 2,這種 hypervisor 運(yùn)行在另一個操作系統(tǒng)(運(yùn)行在物理硬件之上)中。類型 1 hypervisor 的一個例子是基于內(nèi)核的虛擬機(jī)(KVM —— 它本身是一個基于操作系統(tǒng)的 hypervisor)。類型 2 hypervisor 包括 QEMU 和 WINE。


type1.png

type2.png

之前也混淆過Hypervisor的分類與虛擬化的分類情況,現(xiàn)在這樣看的話就能分清了,虛擬化如果是一套榨汁理論的話,Hypervisor是真正的榨汁機(jī)的按個產(chǎn)品。

這些內(nèi)容這么長時間翻來覆去的也看了很多遍,但是放到一起的話感覺自己才看明白了,2017希望自己堅持下去,溫故知新!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容