從接觸虛擬化技術(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希望自己堅持下去,溫故知新!


