為什么說 Linux 容器將顛覆虛擬化

責(zé)任編輯:editor005

作者:李毅翻譯

2015-12-04 14:18:19

摘自:dockerone

Mark Shuttleworth在十幾年前發(fā)起了Ubuntu inux項(xiàng)目,現(xiàn)在他在Canonical(一家提供Ubuntu支持服務(wù)的公司)主管戰(zhàn)略和用戶體驗(yàn)。相比于依靠硬件虛擬化的常規(guī)虛擬機(jī),LXC容器具有兩個(gè)巨大的優(yōu)勢:一臺(tái)主機(jī)上可以打包的容器數(shù)量和這些容器的啟動(dòng)速度。

Mark Shuttleworth在十幾年前發(fā)起了Ubuntu inux項(xiàng)目,現(xiàn)在他在Canonical(一家提供Ubuntu支持服務(wù)的公司)主管戰(zhàn)略和用戶體驗(yàn)。他認(rèn)為新一輪的服務(wù)器虛擬化浪潮與前一輪不太相同。

在他的指導(dǎo)下,Canonical和其他的Linux機(jī)構(gòu)一樣,在其發(fā)布版本中先是Xen Hypervisor,接著是KVM然后繼續(xù)支持Docker,成功地趕上了虛擬化的幾輪潮流。當(dāng)Eucalyptus是用的可計(jì)算云控制器時(shí)該公司成為排頭兵,而當(dāng)業(yè)界開始支持另一個(gè)開源項(xiàng)目- OpenStack而且OpenStack做為Linux的首選被部署到多個(gè)公有云上時(shí),他們也迅速地轉(zhuǎn)向OpenStack。Docker及其軟件容器方式完全類似于虛擬化并且讓云計(jì)算服務(wù)商為之癲狂,但是讓Shuttleworth興奮的是另一種稱為Linux容器 (縮寫為LXC)的技術(shù)及與之相應(yīng)的稱為LXD的Hypervisor。LXD是由Canonical開發(fā)的一個(gè)后臺(tái)進(jìn)程來管理這些容器并且提供了或多或少與開源的Xen及KVM、微軟的Hyper-V或者VMware的ESXi這些服務(wù)器虛擬化Hypervisor類似的功能。

Shuttlworth向The Next Platform表示:“我們相信這是十年來對(duì)Linux虛擬化最大的突破,你可以看到我們對(duì)此是多么興奮”。

LXC容器的想法和初期的工作都是由Google完成的,容器化應(yīng)用程序已經(jīng)在其基礎(chǔ)架構(gòu)上運(yùn)行了超過十年時(shí)間,而且據(jù)說每天會(huì)啟動(dòng)超過20億的容器。Canonical和其他大約80個(gè)組織已經(jīng)開始致力于LXC的商業(yè)化,因?yàn)長XC最初并不是一個(gè)對(duì)用戶很友好的技術(shù)。商業(yè)化是為了讓其具有常見服務(wù)器虛擬化的觀感和體驗(yàn),盡管它使用的是非常不同且簡化的技術(shù)。

“對(duì)于容器,很多人并不了解的是我們用來配置容器的系統(tǒng)其實(shí)可以用很多種方法來做虛擬或者模擬”,Shuttleworth解釋說”有時(shí)你希望模仿看起和Docker類似的東西,而有時(shí)你又想模擬其他的東西。就LXC而言,我們想要?jiǎng)?chuàng)建容器的途徑是創(chuàng)建假想的主機(jī),而不是運(yùn)行操作系統(tǒng)的主機(jī)或者構(gòu)成一個(gè)操作系統(tǒng)的所有進(jìn)程。這與Docker所作的完全不同,雖然它們都使用相同的底層原語,但是創(chuàng)建了不同的的東西。LXC的宗旨是不借助硬件虛擬化來創(chuàng)建虛擬機(jī)“

說起Docker,它在早期是基于LXC的但是現(xiàn)在它有了自己的抽象層,它更像一個(gè)運(yùn)行在文件系統(tǒng)之上的單個(gè)進(jìn)程,就好比你啟動(dòng)了主機(jī)但并沒有運(yùn)行 Init和所有構(gòu)成操作系統(tǒng)的進(jìn)程而是直接運(yùn)行數(shù)據(jù)庫或者其他的東西,然后在一臺(tái)主機(jī)上啟動(dòng)多個(gè)容器并把它們一起置于其中。通過LXC及其LXD守護(hù)進(jìn)程,Canonical希望保持擁有一個(gè)完整Debian、CentOS、Ubuntu或其他Linux操作系統(tǒng)的感觀。

“在LXC 1.0中,常見的情景是程序員說:“給我創(chuàng)建這個(gè)容器”?,F(xiàn)在我們做法接收代碼然后將其納入LXD守護(hù)進(jìn)程來管理,因此并不需要由程序員去創(chuàng)建每一個(gè)容器,我可以擁有上百個(gè)虛擬機(jī)并且與LXD守護(hù)進(jìn)程進(jìn)行通信來進(jìn)行統(tǒng)一管理,因此我所擁有的虛擬機(jī)集群與你使用VMware ESXi hypervisor所構(gòu)建的類似。把LXC打包到一個(gè)守護(hù)進(jìn)程中就使得它變成了一個(gè)hypervisor。什么是ESXi?它基本上是一個(gè)操作系統(tǒng),你可以通過網(wǎng)絡(luò)跟它通信并且讓它給你創(chuàng)建一個(gè)虛擬機(jī)。通過LXD,你可以跟一個(gè)運(yùn)行LXC的主機(jī)說給我創(chuàng)建一個(gè)運(yùn)行CentOS的新容器。這成為一個(gè)集群的導(dǎo)引機(jī)制。”

LXD也提供了另一個(gè)重要功能:它是運(yùn)行的在兩臺(tái)不同物理主機(jī)上的一個(gè)軟件,從而使得LXC實(shí)例能夠在主機(jī)間在線地遷移。

程序員都追求簡潔而且他們喜歡保持事物有序和整潔。在某種程度上,只是因?yàn)橛布摂M化的成本很高就不得不把程序部署到多個(gè)主機(jī)上已經(jīng)成了一個(gè)痛點(diǎn)?,F(xiàn)在,你可以快速地在一臺(tái)主機(jī)上運(yùn)行多個(gè)程序而沒有這些開銷并且始終保持他們的原始狀態(tài)和隔離。

本周,Canonical發(fā)布了首次包括LXD hypervisor的LXC 2.0 beta版本。在本月將要發(fā)布的Ubuntu Server 15.10的更新中就包括這兩個(gè)組件,而Canonical也通過統(tǒng)一步驟把LXC 2.0反推入U(xiǎn)buntu Server 14.04 LTS(LTS是Long Term Support的縮寫)的服務(wù)器版本。LTS版本每兩年發(fā)布一次而且具有五年的支持生命期。由于它的穩(wěn)定性有保證,所以70%的客戶都在生產(chǎn)環(huán)境中運(yùn)行 Ubuntu服務(wù)器的LTS版本。據(jù)Shuttleworth說,包含LXD hypervisor的LXC 2.0生產(chǎn)級(jí)別版本將在明年亮相,根據(jù)命名方案的建議可能就在二月或者三月最遲到4月就與新的企業(yè)級(jí)版本 – Ubuntu Server 16.04 LTS一同發(fā)布。負(fù)責(zé)Ubuntu產(chǎn)品和戰(zhàn)略的Dustin Kirklan對(duì)TheNext Platform說,從下一個(gè)LTS版本開始,在每一個(gè)Ubuntu Server中就會(huì)缺省安裝LXC和LXD組件,這樣每個(gè)主機(jī)都可以運(yùn)行幾十到幾百個(gè)容器 –IBM在最大的使用POWER處理器的服務(wù)器上甚至可以運(yùn)行數(shù)千個(gè)容器。

相比于依靠硬件虛擬化的常規(guī)虛擬機(jī),LXC容器具有兩個(gè)巨大的優(yōu)勢:一臺(tái)主機(jī)上可以打包的容器數(shù)量和這些容器的啟動(dòng)速度。盡管為了在一臺(tái)硬件上用不同的容器運(yùn)行不同的Linux需要一些額外的工作,但是由于LXC其實(shí)就是用Linux運(yùn)行Linux,所以不需要虛擬什么。

“這在性能方面前進(jìn)了一步,而在密度方面的改進(jìn)則是巨大的”,Shuttleworth無不得意地說:“而這對(duì)于低延遲、實(shí)時(shí)型的應(yīng)用程序具有顯著的改善。在云計(jì)算環(huán)境中這類事情都變得容易處理了,當(dāng)然過去他們可不是這樣。如果你的云平臺(tái)運(yùn)行了LXC,很快高性能計(jì)算可以搞定了、云計(jì)算平臺(tái)上的實(shí)時(shí)計(jì)算也可以搞定了,而且如果你是一個(gè)需要低傳輸延遲的電信運(yùn)營商的話,那么NFV(網(wǎng)絡(luò)功能虛擬化)也可以搞定了。在這些需要巨大資金投入的領(lǐng)域,人們真的希望使用云計(jì)算和虛擬化,而LXC使其成為可能。這是非常令人振奮的”

Shuttleworth說LXC容器在密度方面可以達(dá)到諸如EXSi、Xen或KVM這類使用虛擬機(jī)的hypervisor的14倍,而且 LXC和LXD組合在開銷方面卻只占基于硬件虛擬化的Hypervisor的20%不到。對(duì)于空閑的負(fù)載而言,VM和LXC容器就和大多數(shù)VM和物理主機(jī)所作的一樣大部分時(shí)間在等待。對(duì)于繁忙的VM而言,LXC容器則能夠提供明顯要好得多的I/O吞吐量和更低的延遲。因此,對(duì)于空閑的主機(jī)你專注于整合,而對(duì)于繁忙的主機(jī)你專注于吞吐量和延遲。而且由于Hypervisor和VM的特定開銷可以釋放出來用于實(shí)際工作,所以你可以得到大約20%的性能提升。

現(xiàn)在已經(jīng)開始對(duì)LXC及LXD組合進(jìn)行基準(zhǔn)測試。在上周東京召開的OpenStack峰會(huì)上,Canonical LXD開發(fā)團(tuán)隊(duì)的Tycho Andersen展示了一些在虛擬化環(huán)境中的測試基準(zhǔn),其中一個(gè)是使用Hadoop TeraSort測試而另一個(gè)是對(duì)Cassandra NoSQL數(shù)據(jù)存儲(chǔ)的壓力測試。這兩個(gè)測試中,主機(jī)運(yùn)行的是在峰會(huì)期間發(fā)布的最新OpenStack “Liberty”云控制器和同樣剛發(fā)布的Ubuntu 15.10. 15.10,它既有KVM也有LXD hypervisor和各自的虛擬機(jī)和容器。這些服務(wù)器配備了24核和48GB內(nèi)存,一個(gè)控制器負(fù)責(zé)管理OpenStack而其他三臺(tái)用作基本的計(jì)算節(jié)點(diǎn)。

在TeraSort測試開始的時(shí)候,在三臺(tái)主機(jī)上LXC和KVM的表現(xiàn)基本一致,但是當(dāng)OpenStack/Hadoop集群中的主機(jī)數(shù)量隨著數(shù)據(jù)集的規(guī)模增長后,兩種不同的虛擬化手段在性能方面的差異開始顯現(xiàn)。

  你可以看到LXC/LXD同KVM在延遲和吞吐量上的差異是非常明顯的。

愛立信研究院和阿爾托大學(xué)發(fā)表了一篇很有意思的論文,它表明主機(jī)在運(yùn)行LXD和Docker時(shí)比運(yùn)行Xen和KVM能節(jié)省更多的能耗,你可以點(diǎn)擊這里查看。在CPU和內(nèi)存的基準(zhǔn)測試結(jié)果中,隨著更多的VM或者容器加到主機(jī)上,服務(wù)器的功率隨之消耗上升而且兩者之間的差距并不明顯,但是當(dāng)他們處理網(wǎng)絡(luò)流量時(shí),Docker和LXC在完成相同的工作時(shí)要少消耗10%的能耗。

由于容器的輕便特性,使得LXC容器毫無意外地用于很多云計(jì)算平臺(tái),而且極有可能成為未來基礎(chǔ)架構(gòu)云的基礎(chǔ) – 至少是那些只運(yùn)行Linux的云基礎(chǔ)架構(gòu)平臺(tái),因?yàn)長XC不能運(yùn)行在數(shù)據(jù)中心中的另一種重要操作系統(tǒng) – Windows server上。但盡管如此,大多數(shù)重要的新軟件是在Linux之上開發(fā)的 – Hadoop、Spark、NoSQL數(shù)據(jù)庫、多種文件系統(tǒng)等等,所以這不會(huì)受限于人們所構(gòu)建的平臺(tái)的特定部分。

有意思的是正如那句俗話“吃自家的狗食”所言,現(xiàn)在Canonical也在用LXC容器部署他們的Ubuntu OpenStack。這使得管理員能夠分步地升級(jí)OpenStack或者把部分負(fù)載從硬件上移走來發(fā)揮硬件的性能。Shuttleworth說,在一個(gè)典型的小規(guī)模OpenStack云中你可以用八臺(tái)管理節(jié)點(diǎn)來運(yùn)行管理平臺(tái)的所有組件,而且你希望以一式三份的方式來運(yùn)行它,這樣即使有你失去了一個(gè)節(jié)點(diǎn),還能通過另外兩個(gè)來保持高可用。這就需要32臺(tái)物理服務(wù)器。通過把這些組件打包到LXC容器并通過LXD hypervisor進(jìn)行管理,這些管理平臺(tái)的大部分組件都可以打包到同一個(gè)物理服務(wù)器上從而縮減了OpenStack管理平臺(tái)的物理服務(wù)器規(guī)模卻不會(huì)犧牲性能和可用性。

“程序員都追求簡潔而且他們喜歡保持事物有序和整潔。“Shuttleworth解釋道,”在某種程度上,只是因?yàn)橛布摂M化的成本很高就不得不把程序部署到多個(gè)主機(jī)上已經(jīng)成了一個(gè)痛點(diǎn)。現(xiàn)在,你可以立刻在一臺(tái)主機(jī)上運(yùn)行多個(gè)程序而沒有這些開銷并且始終保持他們的原生態(tài)和隔離。很開心的是可以看到當(dāng)LXD出現(xiàn)時(shí)是如何改變了他們的行為。它在感覺上很像一個(gè)虛擬機(jī)但是卻更加輕量”

談起LXC,Shuttleworth告訴我們”紅帽很難忽視我們而且他們最終把LXC加到了RHEL 7當(dāng)中“,而Kirklan說盡管Canonical做了很多努力使得KVM管理工具libvirt支持LXC,但是libvirt的維護(hù)者還是專注于 KVM虛擬機(jī)而非容器。”所以他認(rèn)為這事兒有點(diǎn)棘手。而Shuttleworth說:”紅帽一直以來想試圖把容器的想法曲解為輕量級(jí)的VM,因?yàn)樗麄冊?KVM投入了大量的資金,而這就扭曲了他們的世界觀”

推動(dòng)LXC和LXD普及的關(guān)鍵因素是這樣的一個(gè)事實(shí),即企業(yè)(超大規(guī)模的)和高性能計(jì)算(HPC – High Performance Computing)中心里的大量負(fù)載都是運(yùn)行在Linux之上,而且這些組織希望在遷移基礎(chǔ)架構(gòu)的時(shí)候能夠保留這些應(yīng)用程序。恰恰是這個(gè)需求使得 VMware成為企業(yè)數(shù)據(jù)中心領(lǐng)域60億美元的巨頭。

作為一個(gè)例證,Shuttleworth說Canonical已經(jīng)與Intel和其他一些不具名的HPC中心在LXC容器基礎(chǔ)上利用LXD hypervisor以近乎裸機(jī)的性能來測試以前的仿真和建模代碼。”想一想這是怎樣的場景?,F(xiàn)在一個(gè)超級(jí)計(jì)算機(jī)運(yùn)行著管理員最喜歡的操作系統(tǒng),而科學(xué)家們能夠獲得裸機(jī)的性能同時(shí)還可以訪問他們最熟悉的操作環(huán)境。這一切都得益于虛擬化而且兩者獲得了所期望的東西而沒有任何物理主機(jī)虛擬化帶來的困惑。

私有云先行,而后公有云

LXC和LXD都不需要使用OpenStack云控制器,但是在數(shù)據(jù)中心里這三者將極有可能要在一起配合。 Shuttleworth說根據(jù)OpenStack社區(qū)的最新統(tǒng)計(jì),Ubuntu server支撐著全世界一半以上已安裝的OpenStack云而且它也占據(jù)了最大的OpenStack集群中百分之六十五的份額。Canonical的 Ubuntu OpenStack發(fā)行版本已經(jīng)被沃爾瑪、AT&T、Verizon、NTT、彭博社及德國電信所采用 – 都是成功的大單。此外,上周在東京的OpenStack峰會(huì)上,Shuttleworth補(bǔ)充說他看到?jīng)]有一個(gè)在Ubuntu上運(yùn)行OpenStack的企業(yè)客戶對(duì)LXD不感興趣,因?yàn)槠浣?jīng)濟(jì)性和密度實(shí)在是太棒了。

總體而言,這些都是私有云的成功案例。Shuttleworth認(rèn)為長期目標(biāo)是使公有云服務(wù)商把LXC和LXD作為其基礎(chǔ)架構(gòu)和平臺(tái)服務(wù)的基礎(chǔ),但是要實(shí)現(xiàn)這個(gè)目標(biāo)大多數(shù)公有云服務(wù)商可能要等到X86、Power及ARM服務(wù)器擁有虛擬化專用電路來為LXC和LXD提供與KVM、Xen或者 Hyper-V等同的硬件安全(當(dāng)然,這和平臺(tái)有關(guān))。當(dāng)前,Linux社區(qū)能夠?yàn)長XC容器提供Linux內(nèi)核內(nèi)的安全防護(hù),但是這對(duì)于云服務(wù)提供商而言是不夠的。至于這些功能合適會(huì)加入到至強(qiáng)、Opteron、Power和ARM芯片中還不得而知,而且Shuttleworth也沒有透漏 Canonical的硬件合作伙伴的路線圖。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)