崔德龍,夏曼
(航空工業(yè)第一飛機設(shè)計研究院飛控系統(tǒng)設(shè)計研究所,西安710089)
虛擬化技術(shù)是充分挖掘和利用計算機硬件計算能力的手段?,F(xiàn)代計算機硬件發(fā)展迅速,多核、異構(gòu)融合計算等技術(shù)的商用化使得處理器的綜合計算能力持續(xù)快速發(fā)展,傳統(tǒng)的使用方式很難充分發(fā)揮硬件的綜合計算能力。而虛擬化技術(shù)可以將計算機硬件資源虛擬化為多個相互隔離的資源組,每個資源組可以作為一個獨立的計算資源支撐對應(yīng)軟件的應(yīng)用和運行,通過對虛擬資源組的合理劃分與部署,可以提升計算機硬件的利用率,達(dá)到對計算機硬件綜合計算能力充分利用的目的。
虛擬化技術(shù)為計算處理的分布形式和管理帶來了新的發(fā)展,采用虛擬化技術(shù)后,可以通過軟件靈活地對計算機資源進(jìn)行分配和使用,對應(yīng)用軟件進(jìn)行便捷的部署和管理,由此支撐集中計算和云計算技術(shù)的實現(xiàn),為計算機服務(wù)架構(gòu)和軟件開發(fā)模式的發(fā)展帶來了巨大的推動作用。
虛擬機和容器等虛擬化技術(shù)允許軍事武器系統(tǒng)最大限度地利用機載計算能力,以滿足更為復(fù)雜的系統(tǒng)需求和軟件需求??梢灶A(yù)見,在通過嚴(yán)格的航空機載領(lǐng)域驗證后,基于虛擬化技術(shù)的開發(fā)平臺和機載系統(tǒng)將在航空計算領(lǐng)域發(fā)揮巨大的作用。
本文描述虛擬化技術(shù)的基本原理,對比虛擬機和容器技術(shù)特點,介紹虛擬化技術(shù)國內(nèi)外應(yīng)用現(xiàn)狀,分析可虛擬化操作系統(tǒng)在多核處理器上的應(yīng)用、混合容器計算架構(gòu)和DevOps 軟件持續(xù)交付過程;結(jié)合理論研究和工程經(jīng)驗,提出機載軟件DevOps 綜合開發(fā)環(huán)境、多核高性能計算單元。
將任何一種形式的資源抽象成另一種形式的技術(shù)就是虛擬化,虛擬化技術(shù)的實現(xiàn)形式是在系統(tǒng)中加入虛擬化層,將下層的資源抽象成另一形式的資源,提供給上層使用。通過空間分割、時間分時和模擬,將一份資源抽象成多份,或者將多份資源抽象成一份。虛擬化的抽象層次如圖1所示。
圖1 虛擬化抽象層次Fig.1 Abstraction layers of virtualization
虛擬化就是由位于下層的軟件模塊,向上一層軟件模塊提供一個與它原先運行環(huán)境完全一致的接口,從而抽象出一個虛擬的軟件或硬件接口,使得上層軟件可以直接運行在虛擬環(huán)境中。因此,虛擬化可以發(fā)生在現(xiàn)代計算機系統(tǒng)的各個層次上。在硬件與操作系統(tǒng)之間的是硬件抽象層,以一類虛擬機(Virtual Machine,簡稱VM)為代表,是重量級虛擬化技術(shù)的應(yīng)用。在操作系統(tǒng)與應(yīng)用程序之間的是操作系統(tǒng)抽象層,以容器(Container)為代表,是輕量級虛擬化技術(shù)的應(yīng)用[10]。
虛擬機是對一個計算機系統(tǒng)的仿真,它將硬件進(jìn)行虛擬化,架構(gòu)如圖2 所示。虛擬機監(jiān)控器運行在硬件之上,完成硬件虛擬化,連接硬件和虛擬機,創(chuàng)建并運行虛擬機。虛擬機中的操作系統(tǒng)和應(yīng)用共享一臺或多臺主機的硬件資源。
圖2 虛擬機架構(gòu)Fig.2 Virtual machine's framework
采用虛擬機架構(gòu)需要在每個虛擬機中安裝完整的操作系統(tǒng),為應(yīng)用部署運行環(huán)境,再將服務(wù)部署在虛擬機系統(tǒng)中,應(yīng)用部署耗時,且繁瑣。
容器中不需要安裝操作系統(tǒng),只需要將代碼和依賴關(guān)系打包在一起,其架構(gòu)如圖3 所示。容器引擎運行在操作系統(tǒng)之上,為容器實例分配資源。
圖3 容器架構(gòu)Fig.3 Container's framework
容器是一種輕量級、可移植、自包含的軟件打包技術(shù),通過將應(yīng)用程序本身和其依賴容器化,操作系統(tǒng)版本和其他基礎(chǔ)環(huán)境造成的差異,都被抽象掉,使應(yīng)用程序可以在絕大多數(shù)地方以相同的方式運行。容器是一種基于操作系統(tǒng)能力的隔離技術(shù),運行輕量,并且啟動時間短。
容器和虛擬機作為虛擬化技術(shù)的兩種典型應(yīng)用,如何選擇應(yīng)用方式需要結(jié)合使用場景并參考容器和虛擬機的技術(shù)特點。容器與虛擬機之間的主要技術(shù)區(qū)別如表1 所示。
表1 容器與虛擬機特點對比Table 1 Features comparison between VM and container
傳統(tǒng)的虛擬機技術(shù),需要在每個虛擬機上安裝操作系統(tǒng),增加系統(tǒng)的管理負(fù)擔(dān)。容器需要在宿主機操作系統(tǒng)安裝運行服務(wù),并輔以容器引擎的支持,隔離出獨立的用戶空間,部署簡便,更加輕量化。
如何選擇虛擬機和容器取決于具體的使用需求,但有一些規(guī)則可以參考。虛擬機適合應(yīng)用在運行時需要所有操作系統(tǒng)資源和功能的場景,容器適合在相同的硬件資源上運行更多的應(yīng)用。針對航空計算領(lǐng)域而言,受限于嵌入式系統(tǒng)資源、體積和功耗的制約,輕量級的容器技術(shù)是一種更加高效的虛擬化方式,且在動態(tài)均衡負(fù)載方面的優(yōu)勢更加明顯。
在信息科技技術(shù)最為發(fā)達(dá)的美國,其軍方和主要的信息技術(shù)供應(yīng)商由美國國防部組織,在2017 年就開始了對新一代的美軍計算機硬件和軟件運行、研發(fā)架構(gòu)開展研究和應(yīng)用,對應(yīng)的軟件運行與研發(fā)架構(gòu)被命名為DoD Enterprise DevSec?Ops。這是一個基于虛擬化技術(shù)構(gòu)建的美軍軍用軟件運行、開發(fā)和運維的架構(gòu)與平臺,面向美軍軍用軟件的所有領(lǐng)域,包括辦公、C4ISR(指揮、控制、通信、計算機、情報及監(jiān)視與偵察)、武器裝備嵌入式軟件。其目的是基于最新的商業(yè)和開源信息技術(shù)構(gòu)建一個高效的軍用軟件開發(fā)體系,能夠持續(xù)跟上信息技術(shù)的快速發(fā)展趨勢,并將之前傳統(tǒng)軟件開發(fā)周期從以年為單位縮短到以周甚至以天為單位,其研究成果選擇了對軟件要求最高的航空領(lǐng)域進(jìn)行驗證。
2019 年美國空軍成功地完成了一個為期45 天的試驗,將容器和Kubernetes(容器管理)平臺運行在F-16 飛機上,并正常運作。2020 年9 月U-2 Dragon Lady 訓(xùn)練任務(wù)中使用容器和Kubernetes 作為“用于自動化計算機應(yīng)用程序的部署、擴展及管理的開源容器編排系統(tǒng)”。U-2 飛機經(jīng)過飛行認(rèn)證,在沒有增加硬件能力的情況下,利用容器和Kubernetes 運行先進(jìn)機器學(xué)習(xí)算法,且對飛機的飛行或任務(wù)系統(tǒng)沒有任何負(fù)面影響。
在國內(nèi),李昌等提出了一種基于DevOps 思想的航空軟件測試工具鏈設(shè)計方案,并在某飛機的機電系統(tǒng)軟件測試中進(jìn)行應(yīng)用,達(dá)到了提高測試效率的效果;潘皓提出并實現(xiàn)了一種適用于機載應(yīng)用的多核虛擬化分區(qū)應(yīng)用方法,增強了系統(tǒng)集成度,降低了系統(tǒng)功耗,提高了航空電子系統(tǒng)的可靠性和安全性;殷振國提出了一種基于虛擬化技術(shù)的無人機系統(tǒng)可擴展可信軟件架構(gòu),并進(jìn)行了性能測試與無人機飛行測試,證明這種軟件架構(gòu)具有較強的擴展性,還能夠推廣到其他無人機系統(tǒng)或智能系統(tǒng)中。
2015 年8 月21 日,美國AEEC 機構(gòu) 發(fā)布 的ARINC653 P1-4 標(biāo)準(zhǔn)增加了對多核處理器的支持,從國內(nèi)外主流商用操作系統(tǒng)供應(yīng)商提供的操作系統(tǒng)產(chǎn)品可以看出,嵌入式多核操作系統(tǒng)的應(yīng)用和推廣已經(jīng)是大勢所趨,同時也能促進(jìn)航空電子系統(tǒng)的綜合化。在嵌入式多核處理器上實現(xiàn)虛擬化功能,需要操作系統(tǒng)提供更多的支持。
目前較為成熟且支持多核處理器虛擬化功能的嵌入式操作系統(tǒng)有,美國WindRiver 公司的Vx?Works7 和中國科銀京城技術(shù)有限公司的道系統(tǒng)7.0。VxWorks7 操作系統(tǒng)虛擬化架構(gòu)如圖4 所示,基于非對稱多重應(yīng)用模式(Asymmetric Multi-Pro?cessing,簡稱AMP)。該模式下,每個處理器都有自己的操作系統(tǒng)映像,不同內(nèi)核上的操作系統(tǒng)可以是同一個操作系統(tǒng)的多個拷貝,也可以是不同實現(xiàn)機制的操作系統(tǒng)。
圖4 VxWorks7 多核虛擬化架構(gòu)Fig.4 VxWorks7 multi-core virtualization architecture
VxWorks7 的主要特點如下:(1)VxWorks7 具有內(nèi)建的虛擬化能力,設(shè)計人員可以通過任務(wù)、處理器或虛擬機實現(xiàn)設(shè)計邏輯;(2)虛擬化功能主要模塊由兩部分組成,即Hypervisor 和RootOS,兩者統(tǒng)一構(gòu)建為一個鏡像文件,當(dāng)該鏡像由bootloader啟動,RootOS 先啟動,然后啟動Hypervisor,之后RootOS 繼續(xù)在一個虛擬機里運行。
容器的核心支持是Linux 內(nèi)核提供的LXC(Linux Container)服務(wù),要在嵌入式實時操作系統(tǒng)上實現(xiàn)容器服務(wù)需要對操作系統(tǒng)進(jìn)行修改。
在定制的Linux 操作系統(tǒng)上運行三種容器如圖5 所示,包括非實時通用容器、實時通用容器和實時行業(yè)容器。利用混合容器技術(shù),可以實現(xiàn)通用計算、實時計算和行業(yè)實時計算在通用硬件或?qū)S闷舷到y(tǒng)平臺上的混合計算。對于掌握自主知識產(chǎn)權(quán)操作系統(tǒng)的廠商來說,可以通過修改自有操作系統(tǒng),增加LXC 服務(wù)來對容器提供支持。
圖5 基于Linux 的混合容器架構(gòu)Fig.5 Linux-based hybrid container architecture
隨著軟件規(guī)模的不斷提升與人員分工的精細(xì)化,軟件開發(fā)模型從最初的瀑布式轉(zhuǎn)變?yōu)槊艚菽P?,到如今進(jìn)化為DevOps,即將持續(xù)集成、持續(xù)交付、部署的概念引入軟件生命周期中。
DevOps 是Development(開發(fā))和Operation(運維)兩個詞的組合,是一組過程與方法的統(tǒng)稱,貫穿了軟件全生命周期,用于促進(jìn)開發(fā)、技術(shù)運營(運維)和質(zhì)量保證等部門之間的溝通、協(xié)作與交流。DevOps 目的是讓開發(fā)人員、測試人員和運維人員更好地溝通合作,通過自動化流程使得軟件生命周期過程更加快捷和可靠。
虛擬化、容器和微服務(wù)等概念,為DevOps 落地提供了良好的前提條件。在微服務(wù)架構(gòu)下,軟件被拆分為更小的應(yīng)用模塊,方便不同分工的工程師對各自負(fù)責(zé)的模塊進(jìn)行開發(fā)、測試、部署與維護(hù)。虛擬化從硬件上將系統(tǒng)細(xì)分并隔離,為微服務(wù)提供便利。容器技術(shù)則在操作系統(tǒng)層面上劃分不同的運行環(huán)境,占用資源更少,部署速度更快。因此,開發(fā)環(huán)境和部署環(huán)境都可以更好地進(jìn)行隔離,減少了應(yīng)用之間的影響。
虛擬化技術(shù)在機載系統(tǒng)的應(yīng)用還處在初步研究階段,在各個方面需要進(jìn)行實踐和評估。因此,前期研究可以選擇無人機機載軟件作為背景產(chǎn)品,驗證基于容器的虛擬化技術(shù)在機載軟件開發(fā)中的可行性,并評估其應(yīng)用效果。
本文基于文獻(xiàn)[25]提出的基于虛擬技術(shù)的飛控系統(tǒng)試驗平臺,并結(jié)合Kubernetes 容器管理工具的架構(gòu)提出機載軟件DevOps 開發(fā)環(huán)境架構(gòu)方案,共由3 個部分組成(如圖6 所示)。
圖6 DevOps 開發(fā)環(huán)境Fig.6 DevOps development environment
第一部分,國產(chǎn)SOC 仿真飛控計算機硬件。采用國產(chǎn)4 核處理器,根據(jù)機載飛控計算機的需求定制多余度仿真飛控計算機,用于無人機飛控系統(tǒng)的軟件開發(fā)和地面仿真驗證。其中的機載飛控軟件容器,在供應(yīng)商提供的容器基礎(chǔ)上進(jìn)行定制調(diào)整,形成符合飛控系統(tǒng)軟件運行需要的機載實時容器;飛控應(yīng)用基于分區(qū)技術(shù),可以移植成熟的飛控應(yīng)用軟件。
第二部分,國產(chǎn)通用服務(wù)器集群。采用國產(chǎn)處理器的小型服務(wù)器集群,作為容器集群管理中心,為飛控系統(tǒng)軟件的開發(fā)、配置管理、測試、持續(xù)集成/發(fā)布、全數(shù)字仿真提供服務(wù)支撐,具體的功能包括:
(1)Linux 操作系統(tǒng)和容器服務(wù):為上層應(yīng)用提供操作系統(tǒng)服務(wù)、容器運行和管理服務(wù);
(2)機載飛控軟件容器:在供應(yīng)商提供的ARINC653 容器基礎(chǔ)上進(jìn)行適應(yīng)性修改,形成符合無人機飛控系統(tǒng)軟件需求的機載容器;
(3)配置管理、持續(xù)集成/發(fā)布服務(wù):在Kuber?netes 框架基礎(chǔ)上,定制對應(yīng)的持續(xù)集成/發(fā)布服務(wù),實現(xiàn)軟件倉庫和版本管理功能;
(4)機載軟件測試服務(wù):根據(jù)機載軟件測試的特點實現(xiàn)自動測試的管理和執(zhí)行;
(5)全數(shù)字仿真服務(wù):實現(xiàn)仿真構(gòu)型配置與部署、仿真節(jié)點監(jiān)控與管理、仿真模型加載與運行控制、機載軟件部署與運行、仿真數(shù)據(jù)監(jiān)控與記錄等功能。
第三部分,PC 工作站。采用通用臺式計算機,提供配套機載軟件圖形化集成開發(fā)與測試工具,用于無人機飛控系統(tǒng)軟件的源代碼編輯、構(gòu)建編譯、測試和仿真等工作。
綜合開發(fā)環(huán)境的優(yōu)勢如下:
(1)通過設(shè)計、仿真與測試之間的持續(xù)交互反饋來提高軟件產(chǎn)品的質(zhì)量與安全性;
(2)使用持續(xù)集成與自動化工具提高軟件機載的開發(fā)效率。
根據(jù)未來戰(zhàn)爭對無人機的任務(wù)需求,考慮人工智能技術(shù)的發(fā)展水平,結(jié)合有人機、無人機的作戰(zhàn)特點,有人機與無人機及其他無人支援飛機的聯(lián)合編隊作戰(zhàn)將成為一種全新且主要的作戰(zhàn)模式。這種作戰(zhàn)方式將實現(xiàn)有人機、無人機之間以及整個作戰(zhàn)體系之間信息和資源的共享及作戰(zhàn)任務(wù)的協(xié)同,實施更加靈活的作戰(zhàn)戰(zhàn)術(shù),提高整個系統(tǒng)的作戰(zhàn)效能。
考慮將多核處理器和虛擬化技術(shù)應(yīng)用于有人機、無人機協(xié)同作戰(zhàn)的場景。此場景下,協(xié)同中的無人機平臺、傳感器信息、武器等作戰(zhàn)資源均需要有人機控制或處理。此外,智能決策、AI 空戰(zhàn)和態(tài)勢感知等技術(shù)也對機載系統(tǒng)的計算能力和集成化程度提出了更高的要求。
本文依據(jù)2.3 節(jié)描述的基于Linux 的混合容器架構(gòu)提出一種機載高性能計算單元方案,該方案作為某智能座艙的處理單元正在進(jìn)行原理驗證。通過在現(xiàn)有的安全關(guān)鍵操作系統(tǒng)上增加LXC 服務(wù)以實現(xiàn)非Linux 操作系統(tǒng)對容器的支持,計算單元的架構(gòu)如圖7 所示。
圖7 多核高性能計算單元Fig.7 Multi-core high performance computing unit
高性能計算單元共4 層,自底向上分別是硬件層、操作系統(tǒng)內(nèi)核層、容器層和應(yīng)用層。其中,硬件選用國產(chǎn)四核處理器或片上系統(tǒng),操作系統(tǒng)將底層物理資源進(jìn)行隔離,操作系統(tǒng)內(nèi)核與容器層協(xié)同工作,實現(xiàn)對實時與非實時容器進(jìn)行統(tǒng)一調(diào)度。安全關(guān)鍵操作系統(tǒng)運行在處理器核心1 上,Linux 操作系統(tǒng)運行于核心2 到核心4 上。實時容器引擎容器運行在安全關(guān)鍵操作系統(tǒng)上,實現(xiàn)創(chuàng)建和管理實時容器。Linux 容器引擎和容器管理工具運行于Linux 操作系統(tǒng)上,前者實現(xiàn)創(chuàng)建和管理非實時容器,后者對實時容器和非實時容器進(jìn)行統(tǒng)一編排部署。
此種計算架構(gòu)具有如下優(yōu)點:
(1)可以為安全/關(guān)鍵實時應(yīng)用提供強隔離性,保證其不受到非實時應(yīng)用的干擾,還可以根據(jù)計算負(fù)載為其他非關(guān)鍵應(yīng)用按需動態(tài)分配計算資源。
(2)該架構(gòu)支持在一個硬件平臺上混合運行實時的飛控、機電應(yīng)用和非實時的人工智能應(yīng)用。不僅方便成熟應(yīng)用的移植,還提高了機載系統(tǒng)的綜合化和智能化水平,充分利用寶貴的機載計算資源。
(1)虛擬化技術(shù)將成為航空計算領(lǐng)域的發(fā)展趨勢,結(jié)合多核計算平臺能夠提高電子系統(tǒng)的模塊化和綜合化水平,減輕機載設(shè)備重量。
(2)根據(jù)虛擬化技術(shù)構(gòu)建的機載軟件DevOps綜合開發(fā)環(huán)境,以無人機飛控軟件為研制目標(biāo),可以為軟件的開發(fā)、配置管理、測試、持續(xù)集成/持續(xù)發(fā)布、全數(shù)字仿真提供服務(wù)支撐,為后續(xù)機載系統(tǒng)軟件產(chǎn)品的工程研制厘清技術(shù)路線、明確技術(shù)可行性、建立基礎(chǔ)技術(shù)架構(gòu)。
(3)基于混合容器技術(shù)的高性能機載計算架構(gòu)可以充分發(fā)揮虛擬化技術(shù)計算能力強、資源動態(tài)分配方便且移植先進(jìn)及成熟應(yīng)用的特點,并能兼顧安全關(guān)鍵軟件應(yīng)用、非實時應(yīng)用及人工智能等應(yīng)用。
虛擬化技術(shù)在航空計算領(lǐng)域的應(yīng)用還處于研究階段,離應(yīng)用還有一段的距離,需要加大力度和加快速度,讓虛擬化技術(shù)在航空領(lǐng)域的應(yīng)用盡快達(dá)到國外的發(fā)展水平。