Hyper:基于Hypervisor的容器化解決方案

jopen 9年前發布 | 7K 次閱讀 Hyper

近日,初創公司HyperHQ發布了他們的開源項目Hyper,Hyper是一個可以在hypervisor上運行Docker鏡像的引擎,它融合了Docker容器和虛擬機的優點,旨在打造一個性能更好、更安全的引擎。Hyper 與Docker的核心區別在于Hyper沒有使用Container技術,而是通過VM直接運行Docker鏡像,它是一個完全基于虛擬化的解決方案。

InfoQ:能簡單介紹下Hyper嗎?為什么你們要做Hyper?

王旭: Hyper是一個可以在hypervisor上,不安裝完整操作系統,直接運行Docker Image的運行引擎。Hyper可以在hypervisor上運行一組相關的Docker Image,而不是一個,也正是Kubernetes所闡述的Pod的概念——不是一個虛機,不是一個胖容器,而是一組關聯的容器。再進一步說,Hyper致力于成為一個平臺中立、hypervisor中立的執行引擎,除了支持KVM/QEMU外,接下來Hyper還將會支持Xen。

Docker的發明,給每個人以震撼,同時也有遺憾。當你看到不同的創新的時候,心境并不完全相同,對于有些,你感慨它如此卓越新穎,著實嘆服;對于有些,你感慨它工作量如此巨大,令人景仰;而對于Docker這些,我想,很多人的感慨都是——怎么不是我。

Docker的影響是如此深遠,它以一種 App-Centric的完整環境封裝,串聯了開發、測試、交付的各個環節,從此OS與應用被徹底解耦了,這絕對是開源/技術創業的一個典范。然而,Docker使用的技術卻“毫無新意”,UnionFS已經在Live CD中應用了近10年,容器,即使是LXC也比Docker早五年,一切條件都已具備,可是卻只有dotCloud的家伙們撿起了這個貝殼,讓人不禁感慨與成功失之交臂。

隨著Docker的火熱,我們也在不斷地思考——Docker對DevOps的影響,OS的本質是什么,Docker領域還有什么創新。 Mesos、Kubernetes、Novm這些項目都有不錯的發展,我們也從中得到了啟發。其實Google的非官方項目Novm就是一個使用 hypervisor的執行引擎,只是開發一直停留在業余項目的水平而已。

虛擬機的問題不在“虛擬”,而在“機”,擺脫復雜的OS,虛機也能飛;Docker的核心在于以應用為中心的鏡像封裝,而非容器,封裝改變了世界,而容器是封裝的運行時承載而已。有了這兩方面的思路,我們就取兩者的長處,成為了一個新的選擇。

</blockquote>

InfoQ:您提到,Hyper其實就是Hypervisor+Docker鏡像,而Docker是LXC+Docker鏡像。Hyper為什么會選擇Hypervisor?相比LXC,Hypervisor有什么優勢?

王旭: Hypervisor的最明顯的好處就在于,hypervisor的進程是由另一個kernel調度,系統調用由另一個kernel處理,而并非宿主機的 kernel。這樣,一方面用戶可以選擇自己的kernel,另一方面也增強了隔離性,hypervisor發生漏洞,對宿主機和其它虛擬機的威脅的概率是遠低于容器漏洞的,畢竟容器向用戶進程暴露了太多的入口點。

虛擬機的另一個優勢是,虛擬機相關的產業鏈已經非常成熟,Xen/KVM已經有十多年的歷史了,圍繞虛擬機打造的OpenStack也有五年的歷史了,和虛擬機有順暢合作的軟硬件上下游產品非常多,容器正在趕超,但虛擬機無疑是先行者。

</blockquote>

InfoQ:Docker的優勢是快、輕量,你們有對Hyper做性能測試嗎?表現如何?

王旭:對于虛擬機本身的性能,不僅我們,很多人也測試過,對于CPU/內存子系統為主要約束的應用,虛擬機的性能開銷非常低,在大多數測試中,都可以得到95%甚至99%以上的裸機性能。

而在IO層面上,虛擬機確實性能開銷相對大,但這和IO設備關系很大,一般IO設備越高速,影響越明顯。很多云場景中,高速設備是通過IOV等技術,直接透明映射給虛機,來增強性能的,而對大部分云存儲設備的性能來說,虛擬機并不構成關鍵損失。并且,對多租戶環境,如果不使用hyper這樣的技術,那么就必然還是需要把容器放入虛擬機來進行管理。

對于容器來說,啟動時間也是一項被感知的明顯指標,在第一次亮相meetup時,我使用一臺裝備超低電壓i3處理器的小盒子,1秒鐘便啟動了一個完整的ubuntu docker image,在發布的時候,這個小盒子的性能大概達到了450毫秒,而在一臺至強CPU的服務器上,能達到大約350毫秒啟動。

</blockquote>

InfoQ:Hyper為什么能有如此好的性能?

王旭:說來慚愧,其實我們只是展示了虛機本來能達到的能力,我們不生產性能,我們只是開銷的搬運工——我們簡化了硬件模型和kernel的硬件支持,這樣就不必費力去掃描和初始化一些本沒有用的設備;我們省掉了完整的OS,這樣就沒有了init任務的影響;我們還是用了qboot,降低了老舊BIOS在引導過程中消耗的空間;此外還有一些流程上的細節優化,最終呈現出了Hyper現在的性能。

</blockquote>

InfoQ:你認為Hyper最大的創新點是什么?

王旭:我們把App-Centric的理念帶回到虛機來,我們讓虛機回到了它的原本使命——承載應用,而不是完全模擬物理機,承載完整的Linux發行版。

</blockquote>

InfoQ:Hyper與前段時間因特爾發布的Clear Linux有什么區別?是不是有異曲同工之處?

王旭:我們之前確實不了解Intel的這個項目,事后才知道他們做了一年多了,確實有很多相似之處——都在跑容器鏡像,都在追求更低開銷。

當然也很多不同,兩個項目的出發點不完全相同,Intel的項目的出發點在于追求極致性能,證明硬件能力,所以使用了很多極端優化手段,確實也取得了很好的效果。

而Hyper項目一開始就致力于打造應用為中心的hypervisor,我們使用環境中已有的QEUM,利用已有的kernel feature,著重打造pod的可管理性,維持跨平臺、多hypervisor的支持。雖然沒有使用很多極端優化,但是事實證明,這種開箱即得的性能也是不錯的。

更重要的是,兩個項目都是開源的,大家可以互相借鑒,做得更好。尤其Intel OTC一直都是kernel的主要貢獻機構之一,相信很多Clear Linux的feature大家都可以用上,而Hyper由于與Clear Linux相似,所以也可以第一時間把這些好處帶給用戶,就像Hyper已經集成了qboot,來提升啟動速度一樣。

</blockquote> 來自:http://www.infoq.com/cn/news/2015/06/Hyper-Hypervisor-Docker

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!