2015年叫板Docker的7個Unikernel項目
本文作者Xen項目咨詢委員會主席Lars Kurth在上一篇文章中深入介紹了Unikernel的崛起,本文接著介紹今后幾個月值得密切關(guān)注的幾個新興項目。
Docker和Linux容器技術(shù)如今備受媒體關(guān)注,這種強(qiáng)大而簡易的方法可用來封裝應(yīng)用程序,尤其是由于云計算變得更主流。雖然這類技術(shù)仍在發(fā)展之中,但它們提供了一種簡單、干凈又精簡的方式來分配應(yīng)用程序工作負(fù)載。
隨著容器創(chuàng)新方面的熱情越來越高漲,一種名為Unikernel的相關(guān)技術(shù)也開始引起注意。Unikernel又以能夠在組件層面干凈利落地分離功能而著稱,它正帶來眾多新的方法以部署云服務(wù)。
傳統(tǒng)的操作系統(tǒng)在單一機(jī)器上運(yùn)行多個應(yīng)用程序,管理資源,并將應(yīng)用程序彼此隔離開來。Unikernel則在單一虛擬機(jī)上運(yùn)行單一應(yīng)用程序,改而依賴虛擬機(jī)管理程序(hypervisor)來隔離那些虛擬機(jī)。Unikernel通過使用“庫操作系統(tǒng)”來構(gòu)建,開發(fā)人員只要選擇應(yīng)用程序運(yùn)行所需的一組最基本的服務(wù)即可。這些密封的、用途固定的映像直接在虛擬機(jī)管理程序上運(yùn)行,沒有像Linux這種干預(yù)性的訪客操作系統(tǒng)。
Unikernel圖解(圖片來源:Xen項目)
除了改進(jìn)容器技術(shù)外,Unikernel還能夠為跨平臺環(huán)境、大數(shù)據(jù)分析和橫向擴(kuò)展型云計算帶來出色的靈活性、速度和多功能性。與基于容器的解決方案一樣,這項技術(shù)兌現(xiàn)了易于部署的承諾,但是Unikernel還提供了極其小巧的、專門的運(yùn)行時環(huán)境,受到攻擊的可能性要小得多。
今年有幾個新興的開源項目值得關(guān)注,其中包括ClickOS、Clive、HaLVM、LING、MirageOS、Rump Kernels和OSv,每一個項目都注重Unikernel方法的不同方面。比如說,MirageOS和HaLVM采取了全新設(shè)計(clean-slate)的方法,專注于安全性,ClickOS注重速度,而OSv和Rump Kernels旨在與老式軟件兼容。若使用現(xiàn)有的整體式操作系統(tǒng),不可能獲得這類靈活的方法,現(xiàn)有的整體式操作系統(tǒng)已積累了數(shù)十年的假設(shè)和取舍。
Unikernel如何能夠提供更好的安全性?各種Unikernel實現(xiàn)技術(shù)采取的方法有何不同?如今誰在使用這項技術(shù)?它給云和數(shù)據(jù)中心運(yùn)營方帶來的主要好處有哪些?虛擬機(jī)管理程序上的Unikernel會取代容器嗎,還是說企業(yè)會結(jié)合使用這三種技術(shù)?如果是這樣,如何結(jié)合使用,為何結(jié)合使用?后續(xù)文章會逐一解答這些問題,并給出這些新興項目背后的主要開發(fā)人員的真知灼見。
ClickOS
這是一種極簡、定制的虛擬化操作系統(tǒng),旨在運(yùn)行基于Click的中間設(shè)備(middlebox)。
最近的網(wǎng)絡(luò)功能虛擬化(NFV)潮流有望將中間設(shè)備處理從基于硬件的設(shè)備向在廉價的大眾化硬件(比如配備萬兆網(wǎng)卡的x86服務(wù)器)上運(yùn)行的軟件轉(zhuǎn)變。ClickOS正是為實現(xiàn)這個目的而開發(fā)的一種高性能虛擬化軟件中間設(shè)備平臺。它包括在MiniOS(一種源自Xen的極簡操作系統(tǒng))上運(yùn)行的Click模塊化路由器軟件,另外對網(wǎng)絡(luò)輸入/輸出進(jìn)行了優(yōu)化,以便為幾乎所有大小的數(shù)據(jù)包提供萬兆吞吐率。這些虛擬機(jī)很小巧(6MB),啟動速度快(大約30毫秒),增加的延遲很短(45微秒)。構(gòu)建操作系統(tǒng)映像需要工具鏈(toolchain),而工具堆棧(toolstack)可以在數(shù)毫秒內(nèi)啟動虛擬機(jī)。
相關(guān)鏈接:http://cnp.neclab.eu/clickos/
Clive
Clive的口號是:消除云中的大部分軟件堆棧。
Clive是一款操作系統(tǒng),旨在可以在分布式和云計算環(huán)境下工作。
它的主要設(shè)計準(zhǔn)則如下:
- 云中沒有軟件堆棧。應(yīng)用程序和服務(wù)連同庫一起編譯,庫允許應(yīng)用程序和服務(wù)可以在裸機(jī)硬件上運(yùn)行。
- 系統(tǒng)接口按照類似CSP的方式來設(shè)計。應(yīng)用程序和組件通過通道(channel)來對話,而通道與網(wǎng)絡(luò)、管道及其他任何輸入/輸出工件實現(xiàn)連接。
- 這種設(shè)計主要歸功于Plan 9和Nix。
- 這個項目剛開始,不過已經(jīng)有一些軟件和說明文檔。
- Clive文檔草案(http://lsub.org/export/clivesys.pdf)介紹了這個系統(tǒng)。
- 使用手冊(http://lsub.org/sys/man/)詳細(xì)記載了程序包和命令。
- 用來編譯Clive軟件的修改后的go編譯器可以使用如下命令來下載和安裝:
- git clonegit://git.lsub.org/golang.git golang
- cd golang
- git checkoutlsub
- GOROOT=`pwd`
- cd src
- all.bash
- clive軟件可以使用如下命令來下載:
- git clone git://git.lsub.org/clive.git clive
- cd clive
相關(guān)鏈接:http://lsub.org/ls/clive.html
HaLVM
Haskell輕量級虛擬機(jī)(HaLVM))是Glasgow Haskell Compiler工具套件的移植版,該工具套件讓開發(fā)人員可以編寫高級的輕量級虛擬機(jī),可在Xen虛擬機(jī)管理程序上直接運(yùn)行。
雖然Galois最初設(shè)計HaLVM的初衷是便于快速、輕松地為操作系統(tǒng)組件建立原型,但是它取得了長足發(fā)展,現(xiàn)在支持一系列廣泛得多的使用場合。比如說,如果結(jié)合適當(dāng)?shù)膸欤琀aLVM就能作為網(wǎng)絡(luò)設(shè)備來運(yùn)行。
相關(guān)鏈接:https://galois.com/project/halvm/
LING
LING是一種新的Erlang平臺,可以直接在Xen上運(yùn)行。你可以減少管理難題,提升安全和性能。
LING與Erlang/OTP高度兼容,可以理解.beam文件。
LING啟動到外殼只需不到100毫秒。實例可以在請求后啟動。LING是擴(kuò)展性超強(qiáng)的云的構(gòu)建模塊。
LING消除了大多數(shù)攻擊途徑。它只使用3個外部庫,不使用OpenSSL。文件系統(tǒng)具有只讀屬性。
相關(guān)鏈接:http://erlangonxen.org
MirageOS
MirageOS是一種庫操作系統(tǒng),它可以為跨眾多云計算和移動平臺運(yùn)行的安全、高性能的網(wǎng)絡(luò)應(yīng)用程序構(gòu)建Unikernel??梢栽贚inux和MacOS X之類的平常操作系統(tǒng)上開發(fā)代碼,然后編譯成完全獨立、專門的Unikernel,可在Xen虛擬機(jī)管理程序下運(yùn)行。
由于Xen支持大多數(shù)公有云計算基礎(chǔ)設(shè)施,比如亞馬遜EC2或Rackspace,這樣一來,相比使用全面軟件堆棧的系統(tǒng),你的服務(wù)器運(yùn)行起來成本更低、安全性更高,可以實現(xiàn)更精細(xì)化的控制。
MirageOS使用OCaml語言,代碼庫提供了開發(fā)過程中適用于Unix下的網(wǎng)絡(luò)、存儲和并發(fā)支持,但是編譯后可以變成操作系統(tǒng)驅(qū)動程序,部署到生產(chǎn)環(huán)境中。該框架完全是事件驅(qū)動型,不支持搶占式線程。
MirageOS 1.0已在2013年12月發(fā)布,隨后在2014年7月發(fā)布了MirageOS2.0。
相關(guān)鏈接:http://openmirage.org
Rump Kernels
Rump Kernels讓你能夠構(gòu)建所需的軟件堆棧,而不會迫使你重新發(fā)明輪子。軟件堆棧需要類似驅(qū)動程序的組件,它們按傳統(tǒng)方式緊密組合到操作系統(tǒng)里面――即使你不想要某個操作系統(tǒng)的限制和基礎(chǔ)設(shè)施開銷,也確實需要驅(qū)動程序。
Pump Kernels解決這個問題的辦法是,提供了免費(fèi)、可重復(fù)使用、組件化、內(nèi)核質(zhì)量的驅(qū)動程序,比如文件系統(tǒng)、POSIX系統(tǒng)調(diào)用、PCI設(shè)備驅(qū)動程序以及TCP/IP和SCSI協(xié)議堆棧。Rumprun Unikernel是一種隨時可投入到生產(chǎn)環(huán)境的技術(shù),它只有幾千行代碼,外加Rump Kernel組件,支持POSIX化的軟件直接在原始硬件和云虛擬機(jī)管理程序(比如KVM和Xen)上運(yùn)行。Rump Kernels還可以集成到第三方平臺中。
相關(guān)鏈接:http://rumpkernel.org
OSv
OSv是一種為云設(shè)計的開源操作系統(tǒng)。它是從頭開始全新設(shè)計的,旨在實現(xiàn)輕松部署和管理,性能很出眾。
OSv減少了傳統(tǒng)操作系統(tǒng)帶來的內(nèi)存和處理器開銷。調(diào)度很輕盈,應(yīng)用程序和內(nèi)核協(xié)同運(yùn)行,內(nèi)存池共享。OSv提供了無與倫比的短延遲和穩(wěn)定性能,這減少了操作系統(tǒng)實例的大小和數(shù)量,直接節(jié)省了資本開支。
語言運(yùn)行時環(huán)境、操作系統(tǒng)和虛擬機(jī)管理程序都提供了保護(hù)和抽象機(jī)制。OSv簡化了操作系統(tǒng),從而盡量減少了這幾層的冗余。
相關(guān)鏈接:http://osv.io
【本文經(jīng)授權(quán)轉(zhuǎn)載自云頭條(未經(jīng)授權(quán)謝絕轉(zhuǎn)載)】