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