懂了VMware/KVM/Docker原來(lái)是這么回事兒

云計(jì)算時(shí)代锨咙,計(jì)算資源如同小馬哥當(dāng)年所言,已經(jīng)成為了互聯(lián)網(wǎng)上的水和電挤忙。

虛擬主機(jī)辖源、web服務(wù)器郑象、數(shù)據(jù)庫(kù)抑进、對(duì)象存儲(chǔ)等等各種服務(wù)我們都可以通過(guò)各種各樣的云平臺(tái)來(lái)完成骂倘。

而在云計(jì)算欣欣向榮的背后,有一個(gè)重要的功臣赏僧,那就是虛擬化技術(shù)大猛。可以毫不客氣的說(shuō)淀零,沒(méi)有了虛擬化技術(shù)挽绩,云計(jì)算無(wú)從談起。

說(shuō)起虛擬化你會(huì)想到什么窑滞?從我們常用的虛擬機(jī)三件套VMware琼牧、VirtualPC、VirutalBox到如今大火的KVM和容器技術(shù)Docker哀卫?

這些技術(shù)是什么關(guān)系,背后的技術(shù)原理是怎樣的撬槽,又有什么樣的區(qū)別此改,各自應(yīng)用的場(chǎng)景又是什么樣的?

看完這篇文章侄柔,相信大家都能回答上面問(wèn)題共啃。

歷史背景

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

維基百科中的解釋是這樣的:

?

虛擬化(技術(shù))是一種資源管理技術(shù)暂题,是將計(jì)算機(jī)的各種實(shí)體資源(CPU移剪、內(nèi)存、磁盤(pán)空間薪者、網(wǎng)絡(luò)適配器等)纵苛,予以抽象、轉(zhuǎn)換后呈現(xiàn)出來(lái)并可供分割、組合為一個(gè)或多個(gè)電腦配置環(huán)境攻人。

對(duì)于一臺(tái)計(jì)算機(jī)取试,我們可以簡(jiǎn)單的劃分為三層:從下到上依次是物理硬件層,操作系統(tǒng)層怀吻、應(yīng)用程序?qū)?/p>

1974年瞬浓,兩位計(jì)算機(jī)科學(xué)家Gerald Popek 和 Robert Goldberg發(fā)表了一篇重要的論文?《虛擬化第三代體系結(jié)構(gòu)的正式要求》,在這篇論文中提出了虛擬化的三個(gè)基本條件:

  • 等價(jià)性:程序在本地計(jì)算機(jī)執(zhí)行和在虛擬機(jī)中執(zhí)行應(yīng)該表現(xiàn)出一樣的結(jié)果(不包括執(zhí)行時(shí)間的差異)
  • 安全性:虛擬機(jī)彼此隔離蓬坡,與宿主計(jì)算機(jī)隔離
  • 性能:絕大多數(shù)情況下虛擬機(jī)中的代碼指令應(yīng)該直接在物理CPU中執(zhí)行猿棉,少部分特殊指令可由VMM參與。

那如何實(shí)現(xiàn)對(duì)計(jì)算機(jī)底層的物理資源的虛擬化分割呢屑咳?在計(jì)算機(jī)技術(shù)的發(fā)展歷史上萨赁,出現(xiàn)了兩種著名的方案,分別是I型虛擬化和II型虛擬化

圖中的VMM意為Virtual Machine Monitor乔宿,虛擬機(jī)監(jiān)控程序位迂,或者用另一個(gè)更專(zhuān)業(yè)的名詞:HyperVisor

從圖中可以清楚的看到兩種虛擬化方案的區(qū)別:

Type I: 直接凌駕于硬件之上,構(gòu)建出多個(gè)隔離的操作系統(tǒng)環(huán)境

Type II: 依賴(lài)于宿主操作系統(tǒng)详瑞,在其上構(gòu)建出多個(gè)隔離的操作系統(tǒng)環(huán)境

我們熟知的VMware事實(shí)上有兩個(gè)產(chǎn)品線掂林,一個(gè)是VMware ESXi,直接安裝在裸金屬之上坝橡,不需要額外的操作系統(tǒng)泻帮,屬于第一類(lèi)虛擬化。另一個(gè)是我們普通用戶(hù)更加熟知的VMware WorkStation计寇,屬于第二類(lèi)虛擬化锣杂。

如何實(shí)現(xiàn)上述的虛擬化方案呢?

一個(gè)典型的做法是——陷阱 & 模擬技術(shù)

什么意思番宁?簡(jiǎn)單來(lái)說(shuō)就是正常情況下直接把虛擬機(jī)中的代碼指令放到物理的CPU上去執(zhí)行元莫,一旦執(zhí)行到一些敏感指令,就觸發(fā)異常蝶押,控制流程交給VMM踱蠢,由VMM來(lái)進(jìn)行對(duì)應(yīng)的處理,以此來(lái)營(yíng)造出一個(gè)虛擬的計(jì)算機(jī)環(huán)境棋电。

不過(guò)這一經(jīng)典的虛擬化方案在Intel x86架構(gòu)上卻遇到了問(wèn)題茎截。

全虛擬化:VMware 二進(jìn)制翻譯技術(shù)

不同于8086時(shí)代16位實(shí)地址工作模式,x86架構(gòu)進(jìn)入32位時(shí)代后赶盔,引入了保護(hù)模式企锌、虛擬內(nèi)存等一系列新的技術(shù)。同時(shí)為了安全性隔離了應(yīng)用程序代碼和操作系統(tǒng)代碼于未,其實(shí)現(xiàn)方式依賴(lài)于x86處理器的工作狀態(tài)撕攒。

這就是眾所周知的x86處理器的Ring0-Ring3四個(gè)“環(huán)”陡鹃。

操作系統(tǒng)內(nèi)核代碼運(yùn)行在最高權(quán)限的Ring0狀態(tài),應(yīng)用程序工作于最外圍權(quán)限最低的Ring3狀態(tài)打却,剩下的Ring1和Ring2主流的操作系統(tǒng)都基本上沒(méi)有使用杉适。

這里所說(shuō)的權(quán)限,有兩個(gè)層面的約束:

  • 能訪問(wèn)的內(nèi)存空間
  • 能執(zhí)行的特權(quán)指令

來(lái)關(guān)注一下第二點(diǎn)柳击,特權(quán)指令猿推。

CPU指令集中有一些特殊的指令,用于進(jìn)行硬件I/O通信捌肴、內(nèi)存管理蹬叭、中斷管理等等功能,這一些指令只能在Ring0狀態(tài)下執(zhí)行状知,被稱(chēng)為特權(quán)指令秽五。這些操作顯然是不能讓?xiě)?yīng)用程序隨便執(zhí)行的。處于Ring3工作狀態(tài)的應(yīng)用程序如果嘗試執(zhí)行這些指令饥悴,CPU將自動(dòng)檢測(cè)到并拋出異常坦喘。

回到我們的主題虛擬化技術(shù)上面來(lái),如同前面的定義所言西设,虛擬化是將計(jì)算資源進(jìn)行邏輯或物理層面的切割劃分瓣铣,構(gòu)建出一個(gè)個(gè)獨(dú)立的執(zhí)行環(huán)境。

按照我們前面所說(shuō)的陷阱 & 模擬手段贷揽,可以讓虛擬機(jī)中包含操作系統(tǒng)在內(nèi)的程序統(tǒng)一運(yùn)行在低權(quán)限的Ring3狀態(tài)下棠笑,一旦虛擬機(jī)中的操作系統(tǒng)進(jìn)行內(nèi)存管理、I/O通信禽绪、中斷等操作時(shí)蓖救,執(zhí)行特權(quán)指令,從而觸發(fā)異常印屁,物理機(jī)將異常派遣給VMM循捺,由VMM進(jìn)行對(duì)應(yīng)的模擬執(zhí)行。

這本來(lái)是一個(gè)實(shí)現(xiàn)虛擬化很理想的模式雄人,不過(guò)x86架構(gòu)的CPU在這里遇到了一個(gè)跨不過(guò)去的坎巨柒。

到底是什么問(wèn)題呢?

回顧一下前面描繪的理想模式柠衍,要這種模式能夠?qū)崿F(xiàn)的前提是執(zhí)行敏感指令的時(shí)候能夠觸發(fā)異常,讓VMM有機(jī)會(huì)介入晶乔,去模擬一個(gè)虛擬的環(huán)境出來(lái)珍坊。

但現(xiàn)實(shí)是,x86架構(gòu)的CPU指令集中有那么一部分指令正罢,它不是特權(quán)指令阵漏,Ring3狀態(tài)下也能夠執(zhí)行,但這些指令對(duì)于虛擬機(jī)來(lái)說(shuō)卻是敏感的,不能讓它們直接執(zhí)行履怯。一旦執(zhí)行回还,沒(méi)法觸發(fā)異常,VMM也就無(wú)法介入叹洲,虛擬機(jī)就露餡兒了柠硕!

這結(jié)果將導(dǎo)致虛擬機(jī)中的代碼指令出現(xiàn)無(wú)法預(yù)知的錯(cuò)誤,更嚴(yán)重的是影響到真實(shí)物理計(jì)算機(jī)的運(yùn)行运提,虛擬化所謂的安全隔離蝗柔、等價(jià)性也就無(wú)從談起。

怎么解決這個(gè)問(wèn)題民泵,讓x86架構(gòu)CPU也能支持虛擬化呢癣丧?

VMware和QEMU走出了兩條不同的路。

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ǔ)桃煎。

半虛擬化:Xen 內(nèi)核定制修改

既然有全虛擬化篮幢,那與之相對(duì)的也就有半虛擬化,前面說(shuō)了为迈,由于敏感指令的關(guān)系三椿,全虛擬化的VMM需要捕獲到這些指令并完整模擬執(zhí)行這個(gè)過(guò)程,實(shí)現(xiàn)既滿(mǎ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)循狰。

硬件輔助虛擬化 VT / AMD-v

折騰來(lái)折騰去窟社,全都是因?yàn)閤86架構(gòu)的CPU天然不支持經(jīng)典虛擬化模式,軟件廠商不得不想出其他各種辦法來(lái)在x86上實(shí)現(xiàn)虛擬化绪钥。

如果進(jìn)一步講灿里,CPU本身增加對(duì)虛擬化的支持,那又會(huì)是一番怎樣的情況呢程腹?

在軟件廠商使出渾身解數(shù)來(lái)實(shí)現(xiàn)x86平臺(tái)的虛擬化后的不久匣吊,各家處理器廠商也看到了虛擬化技術(shù)的廣闊市場(chǎng),紛紛推出了硬件層面上的虛擬化支持寸潦,正式助推了虛擬化技術(shù)的迅猛發(fā)展色鸳。

這其中為代表的就是Intel的VT系列技術(shù)和AMD的AMD-v系列技術(shù)。

硬件輔助虛擬化細(xì)節(jié)較為復(fù)雜见转,簡(jiǎn)單來(lái)說(shuō)命雀,新一代CPU在原先的Ring0-Ring3四種工作狀態(tài)之下,再引入了一個(gè)叫工作模式的概念斩箫,有VMX root operation?和?VMX non-root operation?兩種模式吏砂,每種模式都具有完整的Ring0-Ring3四種工作狀態(tài),前者是VMM運(yùn)行的模式乘客,后者是虛擬機(jī)中的OS運(yùn)行的模式狐血。

VMM運(yùn)行的層次,有些地方將其稱(chēng)為Ring -1易核,VMM可以通過(guò)CPU提供的編程接口匈织,配置對(duì)哪些指令的劫持和捕獲,從而實(shí)現(xiàn)對(duì)虛擬機(jī)操作系統(tǒng)的掌控牡直。

換句話說(shuō)缀匕,原先的VMM為了能夠掌控虛擬機(jī)中代碼的執(zhí)行,不得已采用“中間人”來(lái)進(jìn)行翻譯執(zhí)行井氢,現(xiàn)在新的CPU告訴VMM:不用那么麻煩了弦追,你提前告訴我你對(duì)哪些指令哪些事件感興趣,我在執(zhí)行這些指令和發(fā)生這些事件的時(shí)候就通知你花竞,你就可以實(shí)現(xiàn)掌控了劲件。完全由硬件層面提供支持,性能自然高了不少约急。

上面只是硬件輔助虛擬化技術(shù)的一個(gè)簡(jiǎn)單理解零远,實(shí)際上還包含更多的要素,提供了更多的便利給VMM厌蔽,包括內(nèi)存的虛擬牵辣、I/O的虛擬等等,讓VMM的設(shè)計(jì)開(kāi)發(fā)工作大大的簡(jiǎn)化奴饮,VMM不再需要付出昂貴的模擬執(zhí)行成本纬向,整體虛擬化的性能也有了大幅度的提升择浊。

VMware從5.5版本開(kāi)始引入對(duì)硬件輔助虛擬化的支持,隨后在2011年的8.0版本中正式全面支持逾条。于是乎琢岩,我們?cè)趧?chuàng)建虛擬機(jī)的時(shí)候,可以選擇要使用哪一種虛擬化引擎技術(shù)师脂,是用原先的二進(jìn)制翻譯執(zhí)行担孔,還是基于硬件輔助虛擬化的新型技術(shù)。

同一時(shí)期的XEN從3.0版本也加入對(duì)硬件輔助虛擬化的支持吃警,從此基于XEN的虛擬機(jī)中也能夠運(yùn)行Windows系統(tǒng)了糕篇。

KVM-QEMU

有了硬件輔助虛擬化的加持,虛擬化技術(shù)開(kāi)始呈現(xiàn)井噴之勢(shì)酌心。VirtualBox拌消、Hyper-V、KVM等技術(shù)如雨后春筍般接連面世谒府。這其中在云計(jì)算領(lǐng)域聲名鵲起的當(dāng)屬開(kāi)源的KVM技術(shù)了拼坎。

KVM全稱(chēng)for Kernel-based Virtual Machine,意為基于內(nèi)核的虛擬機(jī)完疫。

在虛擬化底層技術(shù)上泰鸡,KVM和VMware后續(xù)版本一樣,都是基于硬件輔助虛擬化實(shí)現(xiàn)壳鹤。不同的是VMware作為獨(dú)立的第三方軟件可以安裝在Linux盛龄、Windows、MacOS等多種不同的操作系統(tǒng)之上芳誓,而KVM作為一項(xiàng)虛擬化技術(shù)已經(jīng)集成到Linux內(nèi)核之中余舶,可以認(rèn)為L(zhǎng)inux內(nèi)核本身就是一個(gè)HyperVisor,這也是KVM名字的含義锹淌,因此該技術(shù)只能在Linux服務(wù)器上使用匿值。

KVM技術(shù)常常搭配QEMU一起使用,稱(chēng)為KVM-QEMU架構(gòu)赂摆。前面提到挟憔,在x86架構(gòu)CPU的硬件輔助虛擬化技術(shù)誕生之前,QEMU就已經(jīng)采用全套軟件模擬的辦法來(lái)實(shí)現(xiàn)虛擬化烟号,只不過(guò)這種方案下的執(zhí)行性能非常低下绊谭。

KVM本身基于硬件輔助虛擬化,僅僅實(shí)現(xiàn)CPU和內(nèi)存的虛擬化汪拥,但一臺(tái)計(jì)算機(jī)不僅僅有CPU和內(nèi)存达传,還需要各種各樣的I/O設(shè)備,不過(guò)KVM不負(fù)責(zé)這些。這個(gè)時(shí)候宪赶,QEMU就和KVM搭上了線宗弯,經(jīng)過(guò)改造后的QEMU,負(fù)責(zé)外部設(shè)備的虛擬逊朽,KVM負(fù)責(zé)底層執(zhí)行引擎和內(nèi)存的虛擬罕伯,兩者彼此互補(bǔ),成為新一代云計(jì)算虛擬化方案的寵兒叽讳。

容器技術(shù)-LXC & Docker

前面談到的無(wú)論是基于翻譯和模擬的全虛擬化技術(shù)、半虛擬化技術(shù)坟募,還是有了CPU硬件加持下的全虛擬化技術(shù)岛蚤,其虛擬化的目標(biāo)都是一臺(tái)完整的計(jì)算機(jī),擁有底層的物理硬件懈糯、操作系統(tǒng)和應(yīng)用程序執(zhí)行的完整環(huán)境涤妒。

為了讓虛擬機(jī)中的程序?qū)崿F(xiàn)像在真實(shí)物理機(jī)器上運(yùn)行“近似”的效果,背后的HyperVisor做了大量的工作赚哗,付出了“沉重”的代價(jià)她紫。

雖然HyperVisor做了這么多,但你有沒(méi)有問(wèn)過(guò)虛擬機(jī)中的程序屿储,這是它想要的嗎贿讹?或許HyperVisor給的太多,而目標(biāo)程序卻說(shuō)了一句:你其實(shí)可以不用這樣辛苦够掠。

確實(shí)存在這樣的情況民褂,虛擬機(jī)中的程序說(shuō):我只是想要一個(gè)單獨(dú)的執(zhí)行執(zhí)行環(huán)境,不需要你費(fèi)那么大勁去虛擬出一個(gè)完整的計(jì)算機(jī)來(lái)疯潭。

這樣做的好處是什么赊堪?

虛擬出一臺(tái)計(jì)算機(jī)的成本高還是只虛擬出一個(gè)隔離的程序運(yùn)行環(huán)境的成本高?答案很明顯是前者竖哩。一臺(tái)物理機(jī)可能同時(shí)虛擬出10臺(tái)虛擬機(jī)就已經(jīng)開(kāi)始感到乏力了哭廉,但同時(shí)虛擬出100個(gè)虛擬的執(zhí)行環(huán)境卻還是能夠從容應(yīng)對(duì),這對(duì)于資源的充分利用可是有巨大的好處相叁。

近幾年大火的容器技術(shù)正是在這樣的指導(dǎo)思想下誕生的遵绰。

不同于虛擬化技術(shù)要完整虛擬化一臺(tái)計(jì)算機(jī),容器技術(shù)更像是操作系統(tǒng)層面的虛擬化钝荡,它只需要虛擬出一個(gè)操作系統(tǒng)環(huán)境街立。

LXC技術(shù)就是這種方案的一個(gè)典型代表,全稱(chēng)是LinuX Container埠通,通過(guò)Linux內(nèi)核的Cgroups技術(shù)和namespace技術(shù)的支撐赎离,隔離操作系統(tǒng)文件、網(wǎng)絡(luò)等資源端辱,在原生操作系統(tǒng)上隔離出一個(gè)單獨(dú)的空間梁剔,將應(yīng)用程序置于其中運(yùn)行虽画,這個(gè)空間的形態(tài)上類(lèi)似于一個(gè)容器將應(yīng)用程序包含在其中,故取名容器技術(shù)荣病。

舉個(gè)不是太恰當(dāng)?shù)谋扔髀胱惶自瓉?lái)是三居室的房子,被二房東拿來(lái)改造成三個(gè)一居室的套間个盆,每個(gè)一居室套間里面都配備了衛(wèi)生間和廚房脖岛,對(duì)于住在里面的人來(lái)說(shuō)就是一套完整的住房。

如今各個(gè)大廠火爆的Docker技術(shù)底層原理與LXC并不本質(zhì)區(qū)別颊亮,甚至在早期Docker就是直接基于LXC的高層次封裝柴梆。Docker在LXC的基礎(chǔ)上更進(jìn)一步,將執(zhí)行執(zhí)行環(huán)境中的各個(gè)組件和依賴(lài)打包封裝成獨(dú)立的對(duì)象终惑,更便于移植和部署绍在。

容器技術(shù)的好處是輕量,所有隔離空間的程序代碼指令不需要翻譯轉(zhuǎn)換雹有,就可以直接在CPU上執(zhí)行偿渡,大家底層都是同一個(gè)操作系統(tǒng),通過(guò)軟件層面上的邏輯隔離形成一個(gè)個(gè)單獨(dú)的空間霸奕。

容器技術(shù)的缺點(diǎn)是安全性不如虛擬化技術(shù)高溜宽,畢竟軟件層面的隔離比起硬件層面的隔離要弱得多。隔離環(huán)境系統(tǒng)和外面的主機(jī)共用的是同一個(gè)操作系統(tǒng)內(nèi)核铅祸,一旦利用內(nèi)核漏洞發(fā)起攻擊坑质,程序突破容器限制,實(shí)現(xiàn)逃逸临梗,危及宿主計(jì)算機(jī)涡扼,安全也就不復(fù)存在。

超輕虛擬化 firecracker

虛擬完整的計(jì)算機(jī)隔離性好但太過(guò)笨重盟庞,簡(jiǎn)單的容器技術(shù)又因?yàn)樘^(guò)輕量純粹靠軟件隔離不夠安全吃沪,有沒(méi)有一個(gè)折中的方案同時(shí)兼具兩者的優(yōu)點(diǎn),實(shí)現(xiàn)既輕量又安全呢什猖?

近年來(lái)票彪,一種超輕虛擬化的思想開(kāi)始流行開(kāi)來(lái),亞馬遜推出的firecracker就是一個(gè)典型的代表不狮。

firecracker將虛擬化技術(shù)的強(qiáng)隔離性和容器技術(shù)的輕量性進(jìn)行融合降铸,提出了一個(gè)microVM的概念,底層通過(guò)KVM虛擬化技術(shù)實(shí)現(xiàn)各個(gè)microVM的強(qiáng)隔離摇零,而隔離的虛擬機(jī)中運(yùn)行的是一個(gè)個(gè)精簡(jiǎn)版的微型操作系統(tǒng)推掸,砍掉了大量無(wú)用的功能,專(zhuān)為容器設(shè)計(jì)的微型OS。

超輕虛擬化如今成為一個(gè)新的浪潮谅畅,除了AWS的firecracker登渣,谷歌的gVisor, Intel主導(dǎo)的NEMU也在向這個(gè)領(lǐng)域開(kāi)始發(fā)力。

總結(jié)

本文簡(jiǎn)單介紹了虛擬化技術(shù)的基本概念和基本要求毡泻。隨后引出由于早期的x86架構(gòu)不支持經(jīng)典的虛擬化方案胜茧,各家軟件廠商只能通過(guò)軟件模擬的形式來(lái)實(shí)現(xiàn)虛擬化,其代表是早期的VMware WorkStation和Xen仇味。

不過(guò)純粹依靠軟件的方式畢竟有性能的瓶頸呻顽,好在Intel和AMD及時(shí)推出了CPU硬件層面的虛擬化支持,軟件廠商迅速跟進(jìn)適配丹墨,極大的改善了虛擬化的性能體驗(yàn)芬位。這一時(shí)期的代表有新版本的VMware WorkStation、Hyper-V带到、KVM等。

近年來(lái)英染,隨著云計(jì)算和微服務(wù)的縱深發(fā)展揽惹,對(duì)虛擬化技術(shù)的虛擬粒度逐漸從粗到細(xì)。從最早的虛擬化完整的計(jì)算機(jī)四康,到后來(lái)只需虛擬出一個(gè)操作系統(tǒng)搪搏,再到后來(lái)虛擬出一個(gè)微服務(wù)需要的環(huán)境即可,以Docker為代表的容器技術(shù)在這個(gè)時(shí)期大放異彩闪金。

技術(shù)的發(fā)展總是伴隨著市場(chǎng)的發(fā)展需要而不斷演進(jìn)疯溺,虛擬化的未來(lái)是怎樣的,你有什么樣的看法呢哎垦,歡迎評(píng)論區(qū)留言交流囱嫩。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市漏设,隨后出現(xiàn)的幾起案子墨闲,更是在濱河造成了極大的恐慌,老刑警劉巖郑口,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸳碧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡犬性,警方通過(guò)查閱死者的電腦和手機(jī)瞻离,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乒裆,“玉大人套利,你說(shuō)我怎么就攤上這事。” “怎么了日裙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵吹艇,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我昂拂,道長(zhǎng)受神,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任格侯,我火速辦了婚禮鼻听,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘联四。我一直安慰自己撑碴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布朝墩。 她就那樣靜靜地躺著醉拓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪收苏。 梳的紋絲不亂的頭發(fā)上亿卤,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音鹿霸,去河邊找鬼排吴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛懦鼠,可吹牛的內(nèi)容都是我干的钻哩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼肛冶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼街氢!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起淑趾,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阳仔,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后扣泊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體近范,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年延蟹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了评矩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阱飘,死狀恐怖斥杜,靈堂內(nèi)的尸體忽然破棺而出虱颗,到底是詐尸還是另有隱情,我是刑警寧澤蔗喂,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布忘渔,位于F島的核電站,受9級(jí)特大地震影響缰儿,放射性物質(zhì)發(fā)生泄漏畦粮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一乖阵、第九天 我趴在偏房一處隱蔽的房頂上張望宣赔。 院中可真熱鬧,春花似錦瞪浸、人聲如沸儒将。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)钩蚊。三九已至,卻和暖如春蹈矮,著一層夾襖步出監(jiān)牢的瞬間两疚,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工含滴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丐巫。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓谈况,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親递胧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碑韵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354