过去几年间,许多工业自动化产品导入了云计算中的Docker和Linux容器技术。除此而外,一种正在云执行平台上出现、并被称为“单内核”与嵌入式软件开发的小计算资源专业组合的云技术,也因其独特的云“实时性”和天生的信息安全特性,引起了人们的关注。目前在许多研究领域中对单内核技术的讨论十分活跃,而且风险投资已经在单内核产品开发方向注入了不少投资,其应用主要聚焦在工业互联网和工业物联网市场以及企业应用市场。
单内核技术的概念
内核是操作系统的一个重要概念。为了让各种各样的应用软件运行,又不必直接去操作硬件,在应用软件与硬件之间用内核对底层硬件加以抽象。譬如把进程管理抽象成一个文件,于是便可以通过这一文件系统对进程进行管理。传统内核会把所有的硬件都抽象在内(例如Linux操作系统),这种内核被称为宏内核,其内包括了CPU调度、进程管理、内存管理、硬盘文件系统、网络I/O、I/O例行程序等所有的模块。
将操作系统设计成模块化的库,让用户可以按需配置客制化的操作系统,单内核(unikernel)的概念便应运而生。因此,有人又把单内核称为库操作系统(library OS)。这是一种在最小计算资源环境下用于单一目的(最低限度内核的功能性)、使用单一语言、单一地址空间且可以自启动的虚拟机。图1给出其基本概念。在一个硬件架构中,可以设置多个单内核虚拟机,每个虚拟机由某种单一目的的操作系统(即单内核)和若干个APP组成,其中单一目的的操作系统是由操作系统库中选出的特定的功能性模块构成。由图2可以看出,与传统架构相比,单内核虚拟机的操作系统是模块化定制的,在同一个硬件中可以有许多个不同功能性的操作系统。而在传统架构中,同一个硬件只有一个功能性齐全的宏内核操作系统。
图1 单内核虚拟机的基本概念
图2 传统架构与单内核虚拟架构的比较
我们可以这样来认识单内核技术:它实质上就是为特定的应用软件配备最必要的操作系统的功能性,将操作系统与应用软件合为一体,实现了以最少的代码完成所赋予的计算和服务功能。大家知道,云计算已经成为在大型数据中心借用计算资源给多个租用用户的先锋。其基本的使能技术就是操作系统的虚拟化,例如Xen或VMWare,它们允许客户在物理机的共享集群上实现多个虚拟机VMs。单内核技术遵循了同样的理念。单内核实现的微服务由于所需的计算资源很小,工作量不大,因而响应快、受外来信息攻击的暴露面小,特别适合于嵌入式系统、对信息安全要求高的设备、轻量级的应用、要求高度灵活和频繁移动的设备等应用场景,例如工业自动化的边缘设备和现场设备等等。
单内核技术的优点显而易见:首先是占用尽可能少的内存资源,例如由 MirageOS实现的DNS server 只要 184KB,实现的 web server 也仅占674 KB,极大地减少了对盘空间的需求;其次减少计算工作量,不占用CPU处理外来的代码,中断调度尽可能地少,因而具有更快的加载时间和更低的时延,其起停都是毫秒级的;单内核还能够显著减少程序容量,用尽可能少的代码完成该做的处理,尽可能地按照客制化要求设计应用程序,例如在相互无关的部件之间构筑潜在的强有力的防火墙;最后,单内核面对一般的攻击暴露很少,大大减少了被攻击面。
对于网络的信息安全,用防火墙固然很不错,但防火墙可能会被外来的攻击绕开或者被击破,怎么能迅速地检测出网络出现问题又能快速作出响应呢?单内核用来搞定这些问题很容易,因为它属于轻量级的技术又反应迅速。还有,运用单内核可以在项目进行到一半时进行改变,所花费的成本很小,因为它们是专门针对单一特定问题设计的,作出改变对其它的节点影响很小。
单内核依靠专门的编译系统将应用软件与操作系统的支持功能在编译期间合并,以此来替代在运行时合并的传统做法。其结果是在一个单一的应用镜像中容纳了应用软件运行所必须的环境及应用软件本身。所有的驱动程序、所有的I/O例行程序以及操作系统支持的库功能全都包括在可执行代码中,没有了成百上千的公用程序和不需要的驱动,没有了不必要的I/O例行程序,或不用的库功能。这种单一的轻量级的虚拟机镜像,其中除了单内核之外,没有任何其他的软件存在,于是应用程序可以轻而易举地启动和运行。
单内核技术的发展路线
从单内核技术发展的初期开始,就存在着两种不同的路线,但它们都是以重构包括所有的内核和用户空间代码在内的虚拟机为目的,使虚拟机由更模块化的部件构成,既灵活又安全,还能重复使用。这两种技术路线是:①采用全新的设计方案(Clean-slate)的单内核,通常使用专门的语言如MirageOS (OCaml) 和HaLVM (Haskell);②采用在现有技术基础上较为渐进的单内核方案,以库的形式提升现有的操作系统技术,如Rump Kernel 可用来创建 Rumprun unikernels。
但是最近有人认为单内核技术过去采用的两种方法,并没有带来单内核技术的广泛采用,其根源在于这两种单内核技术都不能继承在过去许多年来成功地用于云计算领域的Linux的海量APP积累,而需要对APP进行修改或重新编写。因此提出一种有社群支持的基于Linux 的内核和glibc(GNU C Library)的单内核UKL。尽管这一技术路线还形成不久,但非常值得关注其发展动态。
单内核技术与Docker容器化的结合
单内核是一种正在发展中的技术,它在紧凑且用于单一目的的应用程序方面,增强了现有的虚拟机和容器部署。剑桥大学计算机实验室的Richard Mortier 和Docker公司的 Anil Madhavapeddy在将单内核与现有的部署集成方面取得了巨大的进展,特别是使用Rumprun 和 MirageOS两种不同的单内核去部署软件栈LAMP,而且都用普通的Docker工具链即Docker build、Docker run和Docker Hub进行管理。 结果是单内核可以用来增强和逐步推进现有的Linux容器部署和基于虚拟机VM的部署,同时提供各种微服务。这样我们就不再需要一种颠覆,只要采用这些已在应用、同时又在不断发展中的技术就可以了。
由图3可知,运用Linux的容器时,在一个硬件架构上只有一个管理程序、一个内核和若干个容器;由内核和若干个容器所构成一台虚拟机(见图中红色虚线所框出)。这就是所谓的Linux共享内核。如果我们采用单内核技术加以隔离和专用化,则在一个硬件架构上用一个管理程序,形成若干个虚拟机,每个虚拟机有一个专用的单内核和一个容器。
图3 Linux容器共享内核和单内核技术的专用内核
单内核已是一种正在快速发展的操作系统加应用程序(OS-plus-application)的技术。Docker使得运用现成的容器技术就可以轻易实现单内核的汇集和运行,也就是说Docker开始了单内核革命。Docker公司已经并购了剑桥大学计算机实验室的Unikernel Systems公司,目的在于运用Docker工作流建立最小化的、按需构建的操作系统,这种操作系统具有足够的功能性来运行专门的应用程序,同时可以运行来自数据中心服务器的微小型物联网设备中的任意软件。
单内核技术对工业自动化软件的影响及展望
开放式的通信和互操作性标准将会促使工业自动化系统成为一个敏捷灵活的生态系统,其实现途径就是加快吸收这些年来发展迅速、而且行之有效的I T技术,尤其是云计算技术的各种成果。工业自动化沿用至今的系统架构还是在二十多年前建立的,而且作为工业自动化设备主力军的DCS/PLC,其开放性、信息安全以及互操作性远远滞后于市场要求。这几年来各种IT技术滲入工业自动化的进程和工业自动化自身谋求突破的努力已经开始(例如OPAF积极倡导的开放型流程自动化和工业自动化各类软件容器化),并已取得一定的进展,特别是工业互联网深入制造业的努力以及智能制造与工业互联网的结合正在加速;边缘计算和分析受到了前所未有的重视。通过在需要的地点和时间高效地采集数据和提供虚拟化,使处于工业边缘的计算设备占据了关键的地位。图4形象地表达了边缘计算在IoT/智能设备和云数据中心之间的位置。
图4 工业边缘计算的关键地位
单内核技术非常适合于开发运用于边缘的数据采集、处理和分析设备,这是因为它是一种实现单一服务部件(单元)轻量级的机制。它对硬件资源的要求较低,易于快速配置和替代。它具有APP服务的灵活性,像HMI这样的远程设备就可以利用单内核技术和有关的APP,快速构成专用的有针对性的数据采集分析和显示。它又易于开发,在工厂内的开发和测试活动可以在虚拟机环境中进行,而不论主机在何地,因而对实际现场部署的硬件设备要求不高。
上述这些特点对于OEM厂商和系统集成商很有意义。运用单内核技术可加速集成的进度,将开发组态转换为生产系统的瘦客户端方便而快速,特别是与多台服务器和PC机方案的组态相比;单内核大大简化了系统维护,集中控制的虚拟机的维护远比分布式资产的维护来得容易,尤其是在软件升级和为信息安全打补丁的时候更是如此;以单内核为基础形成瘦客户端的架构,系统可扩展性好,这得益于集中的标准化和良好的复用性;另外,通过建立和部署以单内核为基础的设备,可为实现一致性、可靠性以及再现性的最佳实践打下坚实基础。图5是采用Stratus虚拟操作系统的瘦客户端架构的方案,易于用任务专用的虚拟化和移动软件来构成。
图5 用虚拟机和移动软件构成瘦客户端的架构
单内核对云、边缘、局域网、底层信息安全服务和底层数据分析计算的设计者来说都十分有用。它可以用于实现轻量级服务或对信息安全敏感的服务,取得信息安全或快速部署的效果。在那些与单内核相比开发成本过高的场合,单内核的优点毕露无疑,因为可显著节省成本,显著改善开发效率,且显著改善信息安全。除了具有敏捷灵活、反应快速的特点之外,单内核运用于云计算有还有很好的一个优点:规模可做得很大,也可以量体裁衣,按需确定规模。
由于工业自动化对于可靠性、可用性、安全性和功能性都有其特定的严格要求,所以对于引入单内核技术,在采取积极进取的态度的同时,开展谨慎和严格的实验和测试,尤其是工业现场的检验和认证是必不可少的。
作者简介:彭瑜,1960年毕业于清华大学动力系。上海工业自动化仪表研究院教授级高级工程师、PLC open中国组织名誉主席、中国智能制造综合标准化工作组专家、工信部智能制造标准化体系建设工作组专家、中国科技自动化联盟首席专家顾问。长期从事工业过程控制系统的研究开发工作。自1996年后,研究领域集中在PC控制、现场总线、工业以太网、MES,以及现场设备的无线通信;近些年主要研究智能制造相关的自动化技术。凭借在发展我国工程技术事业方面做出的特殊贡献,1993年起获国务院特殊津贴。