虚拟化技术在航空计算领域的应用
2022-04-24崔德龙夏曼
崔德龙,夏曼
(航空工业第一飞机设计研究院飞控系统设计研究所,西安710089)
0 引言
虚拟化技术是充分挖掘和利用计算机硬件计算能力的手段。现代计算机硬件发展迅速,多核、异构融合计算等技术的商用化使得处理器的综合计算能力持续快速发展,传统的使用方式很难充分发挥硬件的综合计算能力。而虚拟化技术可以将计算机硬件资源虚拟化为多个相互隔离的资源组,每个资源组可以作为一个独立的计算资源支撑对应软件的应用和运行,通过对虚拟资源组的合理划分与部署,可以提升计算机硬件的利用率,达到对计算机硬件综合计算能力充分利用的目的。
虚拟化技术为计算处理的分布形式和管理带来了新的发展,采用虚拟化技术后,可以通过软件灵活地对计算机资源进行分配和使用,对应用软件进行便捷的部署和管理,由此支撑集中计算和云计算技术的实现,为计算机服务架构和软件开发模式的发展带来了巨大的推动作用。
虚拟机和容器等虚拟化技术允许军事武器系统最大限度地利用机载计算能力,以满足更为复杂的系统需求和软件需求。可以预见,在通过严格的航空机载领域验证后,基于虚拟化技术的开发平台和机载系统将在航空计算领域发挥巨大的作用。
本文描述虚拟化技术的基本原理,对比虚拟机和容器技术特点,介绍虚拟化技术国内外应用现状,分析可虚拟化操作系统在多核处理器上的应用、混合容器计算架构和DevOps 软件持续交付过程;结合理论研究和工程经验,提出机载软件DevOps 综合开发环境、多核高性能计算单元。
1 虚拟化技术概述
将任何一种形式的资源抽象成另一种形式的技术就是虚拟化,虚拟化技术的实现形式是在系统中加入虚拟化层,将下层的资源抽象成另一形式的资源,提供给上层使用。通过空间分割、时间分时和模拟,将一份资源抽象成多份,或者将多份资源抽象成一份。虚拟化的抽象层次如图1所示。
图1 虚拟化抽象层次Fig.1 Abstraction layers of virtualization
虚拟化就是由位于下层的软件模块,向上一层软件模块提供一个与它原先运行环境完全一致的接口,从而抽象出一个虚拟的软件或硬件接口,使得上层软件可以直接运行在虚拟环境中。因此,虚拟化可以发生在现代计算机系统的各个层次上。在硬件与操作系统之间的是硬件抽象层,以一类虚拟机(Virtual Machine,简称VM)为代表,是重量级虚拟化技术的应用。在操作系统与应用程序之间的是操作系统抽象层,以容器(Container)为代表,是轻量级虚拟化技术的应用[10]。
1.1 虚拟机
虚拟机是对一个计算机系统的仿真,它将硬件进行虚拟化,架构如图2 所示。虚拟机监控器运行在硬件之上,完成硬件虚拟化,连接硬件和虚拟机,创建并运行虚拟机。虚拟机中的操作系统和应用共享一台或多台主机的硬件资源。
图2 虚拟机架构Fig.2 Virtual machine's framework
采用虚拟机架构需要在每个虚拟机中安装完整的操作系统,为应用部署运行环境,再将服务部署在虚拟机系统中,应用部署耗时,且繁琐。
1.2 容器
容器中不需要安装操作系统,只需要将代码和依赖关系打包在一起,其架构如图3 所示。容器引擎运行在操作系统之上,为容器实例分配资源。
图3 容器架构Fig.3 Container's framework
容器是一种轻量级、可移植、自包含的软件打包技术,通过将应用程序本身和其依赖容器化,操作系统版本和其他基础环境造成的差异,都被抽象掉,使应用程序可以在绝大多数地方以相同的方式运行。容器是一种基于操作系统能力的隔离技术,运行轻量,并且启动时间短。
1.3 虚拟机和容器技术对比
容器和虚拟机作为虚拟化技术的两种典型应用,如何选择应用方式需要结合使用场景并参考容器和虚拟机的技术特点。容器与虚拟机之间的主要技术区别如表1 所示。
表1 容器与虚拟机特点对比Table 1 Features comparison between VM and container
传统的虚拟机技术,需要在每个虚拟机上安装操作系统,增加系统的管理负担。容器需要在宿主机操作系统安装运行服务,并辅以容器引擎的支持,隔离出独立的用户空间,部署简便,更加轻量化。
如何选择虚拟机和容器取决于具体的使用需求,但有一些规则可以参考。虚拟机适合应用在运行时需要所有操作系统资源和功能的场景,容器适合在相同的硬件资源上运行更多的应用。针对航空计算领域而言,受限于嵌入式系统资源、体积和功耗的制约,轻量级的容器技术是一种更加高效的虚拟化方式,且在动态均衡负载方面的优势更加明显。
2 虚拟化技术应用
2.1 国内外应用现状
在信息科技技术最为发达的美国,其军方和主要的信息技术供应商由美国国防部组织,在2017 年就开始了对新一代的美军计算机硬件和软件运行、研发架构开展研究和应用,对应的软件运行与研发架构被命名为DoD Enterprise DevSec‑Ops。这是一个基于虚拟化技术构建的美军军用软件运行、开发和运维的架构与平台,面向美军军用软件的所有领域,包括办公、C4ISR(指挥、控制、通信、计算机、情报及监视与侦察)、武器装备嵌入式软件。其目的是基于最新的商业和开源信息技术构建一个高效的军用软件开发体系,能够持续跟上信息技术的快速发展趋势,并将之前传统软件开发周期从以年为单位缩短到以周甚至以天为单位,其研究成果选择了对软件要求最高的航空领域进行验证。
2019 年美国空军成功地完成了一个为期45 天的试验,将容器和Kubernetes(容器管理)平台运行在F-16 飞机上,并正常运作。2020 年9 月U-2 Dragon Lady 训练任务中使用容器和Kubernetes 作为“用于自动化计算机应用程序的部署、扩展及管理的开源容器编排系统”。U-2 飞机经过飞行认证,在没有增加硬件能力的情况下,利用容器和Kubernetes 运行先进机器学习算法,且对飞机的飞行或任务系统没有任何负面影响。
在国内,李昌等提出了一种基于DevOps 思想的航空软件测试工具链设计方案,并在某飞机的机电系统软件测试中进行应用,达到了提高测试效率的效果;潘皓提出并实现了一种适用于机载应用的多核虚拟化分区应用方法,增强了系统集成度,降低了系统功耗,提高了航空电子系统的可靠性和安全性;殷振国提出了一种基于虚拟化技术的无人机系统可扩展可信软件架构,并进行了性能测试与无人机飞行测试,证明这种软件架构具有较强的扩展性,还能够推广到其他无人机系统或智能系统中。
2.2 虚拟化操作系统在多核处理器上的应用
2015 年8 月21 日,美国AEEC 机构 发布 的ARINC653 P1-4 标准增加了对多核处理器的支持,从国内外主流商用操作系统供应商提供的操作系统产品可以看出,嵌入式多核操作系统的应用和推广已经是大势所趋,同时也能促进航空电子系统的综合化。在嵌入式多核处理器上实现虚拟化功能,需要操作系统提供更多的支持。
目前较为成熟且支持多核处理器虚拟化功能的嵌入式操作系统有,美国WindRiver 公司的Vx‑Works7 和中国科银京城技术有限公司的道系统7.0。VxWorks7 操作系统虚拟化架构如图4 所示,基于非对称多重应用模式(Asymmetric Multi-Pro‑cessing,简称AMP)。该模式下,每个处理器都有自己的操作系统映像,不同内核上的操作系统可以是同一个操作系统的多个拷贝,也可以是不同实现机制的操作系统。
图4 VxWorks7 多核虚拟化架构Fig.4 VxWorks7 multi-core virtualization architecture
VxWorks7 的主要特点如下:(1)VxWorks7 具有内建的虚拟化能力,设计人员可以通过任务、处理器或虚拟机实现设计逻辑;(2)虚拟化功能主要模块由两部分组成,即Hypervisor 和RootOS,两者统一构建为一个镜像文件,当该镜像由bootloader启动,RootOS 先启动,然后启动Hypervisor,之后RootOS 继续在一个虚拟机里运行。
2.3 混合容器计算架构
容器的核心支持是Linux 内核提供的LXC(Linux Container)服务,要在嵌入式实时操作系统上实现容器服务需要对操作系统进行修改。
在定制的Linux 操作系统上运行三种容器如图5 所示,包括非实时通用容器、实时通用容器和实时行业容器。利用混合容器技术,可以实现通用计算、实时计算和行业实时计算在通用硬件或专用片上系统平台上的混合计算。对于掌握自主知识产权操作系统的厂商来说,可以通过修改自有操作系统,增加LXC 服务来对容器提供支持。
图5 基于Linux 的混合容器架构Fig.5 Linux-based hybrid container architecture
2.4 DevOps 软件持续交付过程
随着软件规模的不断提升与人员分工的精细化,软件开发模型从最初的瀑布式转变为敏捷模型,到如今进化为DevOps,即将持续集成、持续交付、部署的概念引入软件生命周期中。
DevOps 是Development(开发)和Operation(运维)两个词的组合,是一组过程与方法的统称,贯穿了软件全生命周期,用于促进开发、技术运营(运维)和质量保证等部门之间的沟通、协作与交流。DevOps 目的是让开发人员、测试人员和运维人员更好地沟通合作,通过自动化流程使得软件生命周期过程更加快捷和可靠。
虚拟化、容器和微服务等概念,为DevOps 落地提供了良好的前提条件。在微服务架构下,软件被拆分为更小的应用模块,方便不同分工的工程师对各自负责的模块进行开发、测试、部署与维护。虚拟化从硬件上将系统细分并隔离,为微服务提供便利。容器技术则在操作系统层面上划分不同的运行环境,占用资源更少,部署速度更快。因此,开发环境和部署环境都可以更好地进行隔离,减少了应用之间的影响。
3 在机载系统上的应用构想
3.1 机载软件DevOps 综合开发环境
虚拟化技术在机载系统的应用还处在初步研究阶段,在各个方面需要进行实践和评估。因此,前期研究可以选择无人机机载软件作为背景产品,验证基于容器的虚拟化技术在机载软件开发中的可行性,并评估其应用效果。
本文基于文献[25]提出的基于虚拟技术的飞控系统试验平台,并结合Kubernetes 容器管理工具的架构提出机载软件DevOps 开发环境架构方案,共由3 个部分组成(如图6 所示)。
图6 DevOps 开发环境Fig.6 DevOps development environment
第一部分,国产SOC 仿真飞控计算机硬件。采用国产4 核处理器,根据机载飞控计算机的需求定制多余度仿真飞控计算机,用于无人机飞控系统的软件开发和地面仿真验证。其中的机载飞控软件容器,在供应商提供的容器基础上进行定制调整,形成符合飞控系统软件运行需要的机载实时容器;飞控应用基于分区技术,可以移植成熟的飞控应用软件。
第二部分,国产通用服务器集群。采用国产处理器的小型服务器集群,作为容器集群管理中心,为飞控系统软件的开发、配置管理、测试、持续集成/发布、全数字仿真提供服务支撑,具体的功能包括:
(1)Linux 操作系统和容器服务:为上层应用提供操作系统服务、容器运行和管理服务;
(2)机载飞控软件容器:在供应商提供的ARINC653 容器基础上进行适应性修改,形成符合无人机飞控系统软件需求的机载容器;
(3)配置管理、持续集成/发布服务:在Kuber‑netes 框架基础上,定制对应的持续集成/发布服务,实现软件仓库和版本管理功能;
(4)机载软件测试服务:根据机载软件测试的特点实现自动测试的管理和执行;
(5)全数字仿真服务:实现仿真构型配置与部署、仿真节点监控与管理、仿真模型加载与运行控制、机载软件部署与运行、仿真数据监控与记录等功能。
第三部分,PC 工作站。采用通用台式计算机,提供配套机载软件图形化集成开发与测试工具,用于无人机飞控系统软件的源代码编辑、构建编译、测试和仿真等工作。
综合开发环境的优势如下:
(1)通过设计、仿真与测试之间的持续交互反馈来提高软件产品的质量与安全性;
(2)使用持续集成与自动化工具提高软件机载的开发效率。
3.2 机载高性能计算单元
根据未来战争对无人机的任务需求,考虑人工智能技术的发展水平,结合有人机、无人机的作战特点,有人机与无人机及其他无人支援飞机的联合编队作战将成为一种全新且主要的作战模式。这种作战方式将实现有人机、无人机之间以及整个作战体系之间信息和资源的共享及作战任务的协同,实施更加灵活的作战战术,提高整个系统的作战效能。
考虑将多核处理器和虚拟化技术应用于有人机、无人机协同作战的场景。此场景下,协同中的无人机平台、传感器信息、武器等作战资源均需要有人机控制或处理。此外,智能决策、AI 空战和态势感知等技术也对机载系统的计算能力和集成化程度提出了更高的要求。
本文依据2.3 节描述的基于Linux 的混合容器架构提出一种机载高性能计算单元方案,该方案作为某智能座舱的处理单元正在进行原理验证。通过在现有的安全关键操作系统上增加LXC 服务以实现非Linux 操作系统对容器的支持,计算单元的架构如图7 所示。
图7 多核高性能计算单元Fig.7 Multi-core high performance computing unit
高性能计算单元共4 层,自底向上分别是硬件层、操作系统内核层、容器层和应用层。其中,硬件选用国产四核处理器或片上系统,操作系统将底层物理资源进行隔离,操作系统内核与容器层协同工作,实现对实时与非实时容器进行统一调度。安全关键操作系统运行在处理器核心1 上,Linux 操作系统运行于核心2 到核心4 上。实时容器引擎容器运行在安全关键操作系统上,实现创建和管理实时容器。Linux 容器引擎和容器管理工具运行于Linux 操作系统上,前者实现创建和管理非实时容器,后者对实时容器和非实时容器进行统一编排部署。
此种计算架构具有如下优点:
(1)可以为安全/关键实时应用提供强隔离性,保证其不受到非实时应用的干扰,还可以根据计算负载为其他非关键应用按需动态分配计算资源。
(2)该架构支持在一个硬件平台上混合运行实时的飞控、机电应用和非实时的人工智能应用。不仅方便成熟应用的移植,还提高了机载系统的综合化和智能化水平,充分利用宝贵的机载计算资源。
4 结论
(1)虚拟化技术将成为航空计算领域的发展趋势,结合多核计算平台能够提高电子系统的模块化和综合化水平,减轻机载设备重量。
(2)根据虚拟化技术构建的机载软件DevOps综合开发环境,以无人机飞控软件为研制目标,可以为软件的开发、配置管理、测试、持续集成/持续发布、全数字仿真提供服务支撑,为后续机载系统软件产品的工程研制厘清技术路线、明确技术可行性、建立基础技术架构。
(3)基于混合容器技术的高性能机载计算架构可以充分发挥虚拟化技术计算能力强、资源动态分配方便且移植先进及成熟应用的特点,并能兼顾安全关键软件应用、非实时应用及人工智能等应用。
虚拟化技术在航空计算领域的应用还处于研究阶段,离应用还有一段的距离,需要加大力度和加快速度,让虚拟化技术在航空领域的应用尽快达到国外的发展水平。