劉勇 趙亦輝
關(guān)鍵詞:云計算;物聯(lián)網(wǎng);虛擬化;容器
中圖分類號:TP311.5 文獻(xiàn)標(biāo)識碼:A 文章編號:1006-8228(2023)11-104-04
0 引言
云計算和物聯(lián)網(wǎng)(IoT)技術(shù)的結(jié)合為IT 運(yùn)營商增加了新的業(yè)務(wù)發(fā)展方向。物聯(lián)網(wǎng)的發(fā)展正在推動私云、公云和混合云提供商將其系統(tǒng)與嵌入式設(shè)備(包括傳感器和執(zhí)行器)集成,以便與傳統(tǒng)的基礎(chǔ)設(shè)施、平臺和軟件即服務(wù)(IaaS、PaaS、SaaS)一起提供一種新型的服務(wù),即物聯(lián)網(wǎng)服務(wù)(IoTaaS)。因此,將云計算解決方案與物聯(lián)網(wǎng)相結(jié)合的新型服務(wù)提供商正在崛起。我們談?wù)揑oTCloud 是指一種新型的分布式系統(tǒng),由一組物聯(lián)網(wǎng)設(shè)備組成,這些設(shè)備通過互聯(lián)網(wǎng)與遠(yuǎn)程云基礎(chǔ)設(shè)施、平臺或軟件互連,能夠提供IoTaaS[1]。
資源虛擬化是云計算的關(guān)鍵概念之一。如今,有幾種虛擬化技術(shù)可用。最流行的技術(shù)之一是虛擬機(jī)虛擬化,它需要在主機(jī)操作系統(tǒng)上安裝一個虛擬機(jī)監(jiān)視器(VMM)軟件模塊,以提供虛擬機(jī)(VM)的完整抽象。最近,管理程序的輕量級替代方案是基于容器的虛擬化,也稱為操作系統(tǒng)(OS)級虛擬化。這種虛擬化劃分物理機(jī)器資源,創(chuàng)建多個隔離的用戶空間實(shí)例。我們認(rèn)為,這樣的技術(shù)可以徹底改變未來的物聯(lián)網(wǎng)云系統(tǒng),在資源管理方面帶來管理程序虛擬化給傳統(tǒng)云系統(tǒng)帶來的相同優(yōu)勢。事實(shí)上,容器虛擬化可以讓物聯(lián)網(wǎng)云運(yùn)營商實(shí)例化、重新部署和優(yōu)化虛擬物聯(lián)網(wǎng)功能,以更靈活的方式控制IoTaaS。
1 相關(guān)工作
該研究領(lǐng)域的眾多活動證明了研究界對物聯(lián)網(wǎng)基于云的解決方案的興趣。如今,基于容器的虛擬化為云中的虛擬機(jī)提供了一種有趣的替代方案[2]。盡管容器(如名稱空間)的基本概念非常成熟,但直到最近,容器才在主流操作系統(tǒng)中被采用和標(biāo)準(zhǔn)化,這導(dǎo)致了使用容器來提供隔離和資源控制的復(fù)興。Linux是云計算的首選操作系統(tǒng),因?yàn)樗哂辛銉r格、大生態(tài)系統(tǒng)、良好的硬件支持、良好的性能和可靠性。
在Linux 中實(shí)現(xiàn)容器所需的內(nèi)核名稱空間功能,自2006 年首次討論以來,最近幾年才變得成熟[3]。有關(guān)的研究如Docker[4]是基于Linux 容器(LXC)的輕量級虛擬化,可以將應(yīng)用程序及其依賴關(guān)系完全封裝在虛擬容器中。在文獻(xiàn)[5]中,作者討論了基于Docker 的云系統(tǒng)的設(shè)計和實(shí)現(xiàn),特別是針對PaaS 平臺。正如文獻(xiàn)[6]中所述,Docker 已部署在利用先進(jìn)云服務(wù)的生物信息學(xué)計算的應(yīng)用程序中。T.Bui 通過考慮兩個主要領(lǐng)域來研究Docker 的安全級別:①Docker 的內(nèi)部安全性;②Docker如何與Linux內(nèi)核的安全功能(如SELinux和AppArmor)交互,以加強(qiáng)主機(jī)系統(tǒng)。這些研究表明,即使是使用默認(rèn)配置,Docker 也為其使用命名空間、cgroups 和copyon-write 文件系統(tǒng)的容器提供了高級別的隔離和資源限制。它還支持幾個內(nèi)核安全功能,這些功能有助于增強(qiáng)主機(jī)的安全性[7]。
2 容器虛擬化
資源虛擬化是云計算的關(guān)鍵概念之一,包括但不限于虛擬計算機(jī)硬件平臺、操作系統(tǒng)(OS)、存儲設(shè)備或計算機(jī)網(wǎng)絡(luò)資源??紤]到這些場景,虛擬化利用系統(tǒng)頂部的中間軟件層來提供多個虛擬資源的抽象。這樣的虛擬資源是被稱為虛擬機(jī)(VM)的軟件組件,它們可以被視為獨(dú)立的執(zhí)行上下文。
如今,有幾種虛擬化技術(shù)可用。其中最流行的是基于虛擬機(jī)管理程序的虛擬化,它需要一個運(yùn)行主機(jī)操作系統(tǒng)ontop 的虛擬機(jī)監(jiān)視器(VMM)來提供VM 的完整抽象。在這種情況下,每個虛擬機(jī)都有自己的操作系統(tǒng),其執(zhí)行與其他操作系統(tǒng)完全隔離。這使我們能夠在單個實(shí)際主機(jī)上執(zhí)行多個不同的操作系統(tǒng)。Hypervisor 虛擬化(HVV)工具的示例包括Xen、KVM、Virtual Box、Virtual PC 和WM Ware。
最近,管理程序的一種輕量級替代方案是基于容器的虛擬化,也稱為操作系統(tǒng)級虛擬化。這種虛擬化劃分物理機(jī)器資源,創(chuàng)建多個隔離的用戶空間實(shí)例。
LCV 是一種輕量級的虛擬化技術(shù),允許在Linux操作系統(tǒng)中創(chuàng)建容器,不同的應(yīng)用程序可以在其中運(yùn)行。此外,由于有版本管理系統(tǒng),LCV 允許以靈活的方式解決軟件依賴性問題。LCV 是操作系統(tǒng)級別的虛擬化范例,它在用戶空間啟用同一操作系統(tǒng)的多個實(shí)例,同時共享主機(jī)操作系統(tǒng)的內(nèi)核。容器有兩種通用型號:①應(yīng)用程序容器:單個應(yīng)用程序在容器中運(yùn)行。②系統(tǒng)容器:用戶空間的一個實(shí)例在一個容器中啟動。這允許用戶空間的多個獨(dú)立實(shí)例同時運(yùn)行,每個實(shí)例都有自己的Init 進(jìn)程、進(jìn)程空間、文件系統(tǒng)和網(wǎng)絡(luò)堆棧。LCV 允許提供商實(shí)現(xiàn)更靈活的設(shè)置、配置、優(yōu)化和管理傳感和驅(qū)動能力。流行的容器引擎解決方案包括Docker、LXC、lmctfy、OpenVZ。接下來,我們將分析不同的感興趣的標(biāo)準(zhǔn),以評估虛擬化技術(shù)在嵌入式設(shè)備中的適用性,并將傳統(tǒng)的HVV 方法與LCV 方法進(jìn)行了比較。
⑴ 啟動時間 該容器比可比較的HVV VM 更輕,因此在大多數(shù)情況下,LCV 在初始啟動時間和應(yīng)用程序啟動時間方面獲勝。
⑵ 動態(tài)運(yùn)行時控制 由于概念的性質(zhì),LCV 與主機(jī)系統(tǒng)的集成更加緊密,例如,允許直接從主機(jī)啟動或終止容器中的應(yīng)用程序,而在HVV 場景中,這必須通過信號量或虛擬網(wǎng)絡(luò)/串行連接來完成。
⑶ 速度 與從LCV 容器通過主機(jī)系統(tǒng)上運(yùn)行的同一驅(qū)動程序訪問HVV VM 中的設(shè)備相比,直接訪問HVV 虛擬機(jī)中的設(shè)備可能意味著顯著的加速。只有針對特定場景的測試才能顯示通信開銷(LCV)與虛擬化開銷(HVV)對延遲和吞吐量的影響程度。
⑷ 隔離 一方面,LCV 根本不能在系統(tǒng)級提供有效的隔離;另一方面,HVV 需要引導(dǎo)自己的內(nèi)核和用戶空間,因此允許在系統(tǒng)和用戶級別上進(jìn)行有效隔離。系統(tǒng)管理程序中的故障仍然可能使整個系統(tǒng)崩潰,但虛擬機(jī)中運(yùn)行的代碼將無法運(yùn)行,例如,允許主機(jī)分析崩潰并重新啟動虛擬機(jī)。
⑸ 內(nèi)存消耗 這一點(diǎn)很明顯。LCV 允許共享操作系統(tǒng)內(nèi)核和開發(fā)人員選擇共享的用戶空間的任何部分,而HVV 要求單獨(dú)存儲VM 映像,不允許共享。因此,LCV 在這方面絕對勝出。
⑹ 虛擬環(huán)境和物理環(huán)境之間的通信信道 這兩個概念都允許通過虛擬串行或網(wǎng)絡(luò)接口或可用于放置信號量或消息的共享文件系統(tǒng)進(jìn)行通信。
⑺ 動態(tài)資源分配或分離 動態(tài)資源分配功能在負(fù)載管理和故障切換場景中非常重要。例如,它允許將額外的CPU 分配給負(fù)載嚴(yán)重的虛擬機(jī),或從空閑的虛擬機(jī)或容器中刪除CPU。Bothsolutions 同樣適用于執(zhí)行故障轉(zhuǎn)移場景。
⑻ 直接硬件訪問 雖然HVV 允許通過virtio 或vfio等系統(tǒng)從虛擬機(jī)直接訪問硬件外圍設(shè)備,但這不能從LCV 容器中完成,因?yàn)長CV 容器只能訪問用戶空間,因此需要在(主機(jī))內(nèi)核中有相應(yīng)的驅(qū)動程序。
物聯(lián)網(wǎng)設(shè)備上的容器不僅僅是一個理論概念。事實(shí)上,越來越多的制造商正在研究容器工程,以簡化物聯(lián)網(wǎng)設(shè)備中復(fù)雜應(yīng)用程序的包裝、分發(fā)、安裝和執(zhí)行。
3 物聯(lián)網(wǎng)云中的虛擬資源管理
我們假設(shè)物聯(lián)網(wǎng)云提供商安排IoTaaSex 部署HVV 和LCV 概念。物聯(lián)網(wǎng)設(shè)備與遠(yuǎn)程云系統(tǒng)交互,該系統(tǒng)負(fù)責(zé)收集來自于異構(gòu)物聯(lián)網(wǎng)設(shè)備的統(tǒng)一傳感數(shù)據(jù)。通常,物聯(lián)網(wǎng)設(shè)備運(yùn)行使用特定編程語言或開發(fā)框架(例如,C、C++、Phyton、Nodejs 等)開發(fā)的定制軟件。在物聯(lián)網(wǎng)設(shè)備中可以執(zhí)行最小的處理和存儲任務(wù),但大規(guī)模的數(shù)據(jù)存儲和處理任務(wù)(數(shù)據(jù)挖掘和大數(shù)據(jù)分析)是在云系統(tǒng)中執(zhí)行的,該系統(tǒng)利用虛擬化技術(shù)來持久地擴(kuò)大/縮小存儲和處理能力。物聯(lián)網(wǎng)云的一個典型的例子,一方面管理存儲和處理功能,另一方面管理傳感和執(zhí)行功能。存儲和處理能力通過HVV 進(jìn)行管理,而傳感和驅(qū)動能力則通過直接安裝在物聯(lián)網(wǎng)設(shè)備操作系統(tǒng)上的定制軟件進(jìn)行管理。
上述方法是目前采用最多的方法,但考慮到通常需要根據(jù)環(huán)境的變化特征和用戶的要求來定制傳感和驅(qū)動服務(wù),因此不那么靈活。最近,一些舉措已經(jīng)開始考慮通過容器部署在物聯(lián)網(wǎng)設(shè)備中的應(yīng)用程序。因此,可以同時利用HVV 和LCV 的優(yōu)點(diǎn)。在物聯(lián)網(wǎng)云在物聯(lián)網(wǎng)設(shè)備中情況下,物聯(lián)網(wǎng)云系統(tǒng)負(fù)責(zé)IoTaaSG 的實(shí)例化、優(yōu)化和管理,以確??煽啃?、可擴(kuò)展性、服務(wù)質(zhì)量(QoS)和安全性。由于LCV 應(yīng)用于物聯(lián)網(wǎng)設(shè)備,可以以更靈活的方式在多個分布式容器中部署分布式基礎(chǔ)設(shè)施、平臺和應(yīng)用程序(以IoTaaS 的形式)。物聯(lián)網(wǎng)設(shè)備與遠(yuǎn)程云系統(tǒng)交互,遠(yuǎn)程云系統(tǒng)負(fù)責(zé)收集和統(tǒng)一傳感數(shù)據(jù)并觸發(fā)致動器。所有的虛擬化技術(shù)都能夠隱藏底層物理資產(chǎn),在物理基礎(chǔ)設(shè)施和服務(wù)之間引入邏輯層。為了利用這兩種虛擬化技術(shù),我們假設(shè)LCV 和HVV 都在Clouddatacenter 中使用,但只有LCV 在物聯(lián)網(wǎng)設(shè)備中使用。PrivateIoT 云擁有自己的虛擬化基礎(chǔ)架構(gòu),其中托管了幾個虛擬機(jī)和容器,為其客戶端提供服務(wù)。在靈活的場景中,每個物聯(lián)網(wǎng)云運(yùn)營商都可以動態(tài)安排、優(yōu)化和重新部署自己的虛擬化資源,包括存儲、處理、傳感和執(zhí)行功能。因此,物聯(lián)網(wǎng)云運(yùn)營商將能夠以靈活的方式滿足其客戶的任何服務(wù)分配請求。
以下我們提供了一些示例:
⑴ 分布式IoTaaS 的部署 可以安排分布式IoTaaS,將部署在屬于物聯(lián)網(wǎng)云運(yùn)營商控制的不同傳感器的幾個物聯(lián)網(wǎng)設(shè)備上的服務(wù)相結(jié)合;
⑵ IoTaaS 搬遷和優(yōu)化 實(shí)施負(fù)載平衡策略,管理不同傳感器/執(zhí)行器網(wǎng)絡(luò)的物聯(lián)網(wǎng)云可以將部署在容器中的服務(wù)和應(yīng)用程序遷移到不同的物聯(lián)網(wǎng)設(shè)備;
⑶ IoTaaS整合 IoTaaS 是結(jié)合安裝在不同物聯(lián)網(wǎng)設(shè)備中的容器構(gòu)建的,延伸到不同的物聯(lián)網(wǎng)云傳感器/執(zhí)行器網(wǎng)絡(luò),可以通過軟件整合策略應(yīng)用位置感知服務(wù)。事實(shí)上,在某些情況下,根據(jù)特定的應(yīng)用程序邏輯移動服務(wù)是有用的。
通過考慮可以安裝在物聯(lián)網(wǎng)設(shè)備中的通用Linux系統(tǒng)來支持容器虛擬化所需的軟件。Linux 主機(jī)操作系統(tǒng)通常部署在硬件系統(tǒng)之上,其內(nèi)核需要與合適的虛擬化層協(xié)同工作。這樣,操作系統(tǒng)級虛擬化就不需要額外的管理程序?qū)?,因?yàn)樘摂M化功能是主機(jī)操作系統(tǒng)的一部分。這種技術(shù)使我們能夠在主機(jī)操作系統(tǒng)本身的基礎(chǔ)上虛擬化服務(wù)器。因此,消除了通過虛擬機(jī)監(jiān)控程序中介產(chǎn)生的開銷,從而實(shí)現(xiàn)了更高的本機(jī)性能。此外,主機(jī)內(nèi)核提供進(jìn)程隔離,并執(zhí)行資源管理。這意味著即使所有容器都在同一內(nèi)核下運(yùn)行,每個容器都是一個虛擬環(huán)境,有自己的文件系統(tǒng)、進(jìn)程、內(nèi)存、設(shè)備等。Linux 內(nèi)核頂部有一些主機(jī)應(yīng)用程序:我們將注意力集中在容器引擎組件上,該組件將任何應(yīng)用程序的部署自動化為一個輕量級、可移植、自給自足的容器,幾乎可以在任何地方運(yùn)行。
我們將Docker 平臺視為容器引擎,它是一個開放平臺,供開發(fā)人員和系統(tǒng)管理員構(gòu)建、交付和運(yùn)行分布式應(yīng)用程序。Docker Engineer 提供了一種便攜式、輕量級的運(yùn)行時和打包工具。此外,由于Docker Hub可以被視為共享應(yīng)用程序和自動化工作流的云服務(wù),Docker 使應(yīng)用程序能夠從組件中快速組裝,并消除了開發(fā)和生產(chǎn)環(huán)境之間的摩擦。因此,物聯(lián)網(wǎng)云運(yùn)營商可以更快地在不同的物聯(lián)網(wǎng)設(shè)備上提供和運(yùn)行相同的服務(wù)或應(yīng)用程序。Docker 也是部署引擎的開源實(shí)現(xiàn),它為dotCloud 提供了動力,dotCloud 是一種流行的平臺即服務(wù)(PaaS),它直接受益于幾年來獲得的大規(guī)模運(yùn)營經(jīng)驗(yàn)和對數(shù)十萬應(yīng)用程序和數(shù)據(jù)庫的支持。
4 結(jié)束語
基于容器的虛擬化是智能對象上可以采用的基于管理程序的方法的輕量級替代方案,用于增強(qiáng)物聯(lián)網(wǎng)云服務(wù)供應(yīng)。考慮到不同的物聯(lián)網(wǎng)應(yīng)用場景,基于容器的虛化允許物聯(lián)網(wǎng)云提供商在智能對象上以靈活的方式部署和定制軟件。在本文中,我們從IoTCloud場景的角度研究了智能對象上基于容器的虛擬化,特別關(guān)注運(yùn)行Docker 容器引擎的Raspberry 設(shè)備。從我們的實(shí)驗(yàn)來看,容器虛擬化引入的開銷在實(shí)際場景中是可以接受的。在未來的工作中,我們計劃研究在物聯(lián)網(wǎng)設(shè)備上運(yùn)行的多個容器上部署的分布式服務(wù)的并行處理。