過去幾年間,許多工業自動化產品導入了云計算中的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年起獲國務院特殊津貼。