過去幾年間,許多工業(yè)自動化產(chǎn)品導(dǎo)入了云計算中的Docker和Linux容器技術(shù)。除此而外,一種正在云執(zhí)行平臺上出現(xiàn)、并被稱為“單內(nèi)核”與嵌入式軟件開發(fā)的小計算資源專業(yè)組合的云技術(shù),也因其獨特的云“實時性”和天生的信息安全特性,引起了人們的關(guān)注。目前在許多研究領(lǐng)域中對單內(nèi)核技術(shù)的討論十分活躍,而且風(fēng)險投資已經(jīng)在單內(nèi)核產(chǎn)品開發(fā)方向注入了不少投資,其應(yīng)用主要聚焦在工業(yè)互聯(lián)網(wǎng)和工業(yè)物聯(lián)網(wǎng)市場以及企業(yè)應(yīng)用市場。
單內(nèi)核技術(shù)的概念
內(nèi)核是操作系統(tǒng)的一個重要概念。為了讓各種各樣的應(yīng)用軟件運行,又不必直接去操作硬件,在應(yīng)用軟件與硬件之間用內(nèi)核對底層硬件加以抽象。譬如把進程管理抽象成一個文件,于是便可以通過這一文件系統(tǒng)對進程進行管理。傳統(tǒng)內(nèi)核會把所有的硬件都抽象在內(nèi)(例如Linux操作系統(tǒng)),這種內(nèi)核被稱為宏內(nèi)核,其內(nèi)包括了CPU調(diào)度、進程管理、內(nèi)存管理、硬盤文件系統(tǒng)、網(wǎng)絡(luò)I/O、I/O例行程序等所有的模塊。
將操作系統(tǒng)設(shè)計成模塊化的庫,讓用戶可以按需配置客制化的操作系統(tǒng),單內(nèi)核(unikernel)的概念便應(yīng)運而生。因此,有人又把單內(nèi)核稱為庫操作系統(tǒng)(library OS)。這是一種在最小計算資源環(huán)境下用于單一目的(最低限度內(nèi)核的功能性)、使用單一語言、單一地址空間且可以自啟動的虛擬機。圖1給出其基本概念。在一個硬件架構(gòu)中,可以設(shè)置多個單內(nèi)核虛擬機,每個虛擬機由某種單一目的的操作系統(tǒng)(即單內(nèi)核)和若干個APP組成,其中單一目的的操作系統(tǒng)是由操作系統(tǒng)庫中選出的特定的功能性模塊構(gòu)成。由圖2可以看出,與傳統(tǒng)架構(gòu)相比,單內(nèi)核虛擬機的操作系統(tǒng)是模塊化定制的,在同一個硬件中可以有許多個不同功能性的操作系統(tǒng)。而在傳統(tǒng)架構(gòu)中,同一個硬件只有一個功能性齊全的宏內(nèi)核操作系統(tǒng)。
圖1 單內(nèi)核虛擬機的基本概念
圖2 傳統(tǒng)架構(gòu)與單內(nèi)核虛擬架構(gòu)的比較
我們可以這樣來認識單內(nèi)核技術(shù):它實質(zhì)上就是為特定的應(yīng)用軟件配備最必要的操作系統(tǒng)的功能性,將操作系統(tǒng)與應(yīng)用軟件合為一體,實現(xiàn)了以最少的代碼完成所賦予的計算和服務(wù)功能。大家知道,云計算已經(jīng)成為在大型數(shù)據(jù)中心借用計算資源給多個租用用戶的先鋒。其基本的使能技術(shù)就是操作系統(tǒng)的虛擬化,例如Xen或VMWare,它們允許客戶在物理機的共享集群上實現(xiàn)多個虛擬機VMs。單內(nèi)核技術(shù)遵循了同樣的理念。單內(nèi)核實現(xiàn)的微服務(wù)由于所需的計算資源很小,工作量不大,因而響應(yīng)快、受外來信息攻擊的暴露面小,特別適合于嵌入式系統(tǒng)、對信息安全要求高的設(shè)備、輕量級的應(yīng)用、要求高度靈活和頻繁移動的設(shè)備等應(yīng)用場景,例如工業(yè)自動化的邊緣設(shè)備和現(xiàn)場設(shè)備等等。
單內(nèi)核技術(shù)的優(yōu)點顯而易見:首先是占用盡可能少的內(nèi)存資源,例如由 MirageOS實現(xiàn)的DNS server 只要 184KB,實現(xiàn)的 web server 也僅占674 KB,極大地減少了對盤空間的需求;其次減少計算工作量,不占用CPU處理外來的代碼,中斷調(diào)度盡可能地少,因而具有更快的加載時間和更低的時延,其起停都是毫秒級的;單內(nèi)核還能夠顯著減少程序容量,用盡可能少的代碼完成該做的處理,盡可能地按照客制化要求設(shè)計應(yīng)用程序,例如在相互無關(guān)的部件之間構(gòu)筑潛在的強有力的防火墻;最后,單內(nèi)核面對一般的攻擊暴露很少,大大減少了被攻擊面。
對于網(wǎng)絡(luò)的信息安全,用防火墻固然很不錯,但防火墻可能會被外來的攻擊繞開或者被擊破,怎么能迅速地檢測出網(wǎng)絡(luò)出現(xiàn)問題又能快速作出響應(yīng)呢?單內(nèi)核用來搞定這些問題很容易,因為它屬于輕量級的技術(shù)又反應(yīng)迅速。還有,運用單內(nèi)核可以在項目進行到一半時進行改變,所花費的成本很小,因為它們是專門針對單一特定問題設(shè)計的,作出改變對其它的節(jié)點影響很小。
單內(nèi)核依靠專門的編譯系統(tǒng)將應(yīng)用軟件與操作系統(tǒng)的支持功能在編譯期間合并,以此來替代在運行時合并的傳統(tǒng)做法。其結(jié)果是在一個單一的應(yīng)用鏡像中容納了應(yīng)用軟件運行所必須的環(huán)境及應(yīng)用軟件本身。所有的驅(qū)動程序、所有的I/O例行程序以及操作系統(tǒng)支持的庫功能全都包括在可執(zhí)行代碼中,沒有了成百上千的公用程序和不需要的驅(qū)動,沒有了不必要的I/O例行程序,或不用的庫功能。這種單一的輕量級的虛擬機鏡像,其中除了單內(nèi)核之外,沒有任何其他的軟件存在,于是應(yīng)用程序可以輕而易舉地啟動和運行。
單內(nèi)核技術(shù)的發(fā)展路線
從單內(nèi)核技術(shù)發(fā)展的初期開始,就存在著兩種不同的路線,但它們都是以重構(gòu)包括所有的內(nèi)核和用戶空間代碼在內(nèi)的虛擬機為目的,使虛擬機由更模塊化的部件構(gòu)成,既靈活又安全,還能重復(fù)使用。這兩種技術(shù)路線是:①采用全新的設(shè)計方案(Clean-slate)的單內(nèi)核,通常使用專門的語言如MirageOS (OCaml) 和HaLVM (Haskell);②采用在現(xiàn)有技術(shù)基礎(chǔ)上較為漸進的單內(nèi)核方案,以庫的形式提升現(xiàn)有的操作系統(tǒng)技術(shù),如Rump Kernel 可用來創(chuàng)建 Rumprun unikernels。
但是最近有人認為單內(nèi)核技術(shù)過去采用的兩種方法,并沒有帶來單內(nèi)核技術(shù)的廣泛采用,其根源在于這兩種單內(nèi)核技術(shù)都不能繼承在過去許多年來成功地用于云計算領(lǐng)域的Linux的海量APP積累,而需要對APP進行修改或重新編寫。因此提出一種有社群支持的基于Linux 的內(nèi)核和glibc(GNU C Library)的單內(nèi)核UKL。盡管這一技術(shù)路線還形成不久,但非常值得關(guān)注其發(fā)展動態(tài)。
單內(nèi)核技術(shù)與Docker容器化的結(jié)合
單內(nèi)核是一種正在發(fā)展中的技術(shù),它在緊湊且用于單一目的的應(yīng)用程序方面,增強了現(xiàn)有的虛擬機和容器部署。劍橋大學(xué)計算機實驗室的Richard Mortier 和Docker公司的 Anil Madhavapeddy在將單內(nèi)核與現(xiàn)有的部署集成方面取得了巨大的進展,特別是使用Rumprun 和 MirageOS兩種不同的單內(nèi)核去部署軟件棧LAMP,而且都用普通的Docker工具鏈即Docker build、Docker run和Docker Hub進行管理。 結(jié)果是單內(nèi)核可以用來增強和逐步推進現(xiàn)有的Linux容器部署和基于虛擬機VM的部署,同時提供各種微服務(wù)。這樣我們就不再需要一種顛覆,只要采用這些已在應(yīng)用、同時又在不斷發(fā)展中的技術(shù)就可以了。
由圖3可知,運用Linux的容器時,在一個硬件架構(gòu)上只有一個管理程序、一個內(nèi)核和若干個容器;由內(nèi)核和若干個容器所構(gòu)成一臺虛擬機(見圖中紅色虛線所框出)。這就是所謂的Linux共享內(nèi)核。如果我們采用單內(nèi)核技術(shù)加以隔離和專用化,則在一個硬件架構(gòu)上用一個管理程序,形成若干個虛擬機,每個虛擬機有一個專用的單內(nèi)核和一個容器。
圖3 Linux容器共享內(nèi)核和單內(nèi)核技術(shù)的專用內(nèi)核
單內(nèi)核已是一種正在快速發(fā)展的操作系統(tǒng)加應(yīng)用程序(OS-plus-application)的技術(shù)。Docker使得運用現(xiàn)成的容器技術(shù)就可以輕易實現(xiàn)單內(nèi)核的匯集和運行,也就是說Docker開始了單內(nèi)核革命。Docker公司已經(jīng)并購了劍橋大學(xué)計算機實驗室的Unikernel Systems公司,目的在于運用Docker工作流建立最小化的、按需構(gòu)建的操作系統(tǒng),這種操作系統(tǒng)具有足夠的功能性來運行專門的應(yīng)用程序,同時可以運行來自數(shù)據(jù)中心服務(wù)器的微小型物聯(lián)網(wǎng)設(shè)備中的任意軟件。
單內(nèi)核技術(shù)對工業(yè)自動化軟件的影響及展望
開放式的通信和互操作性標準將會促使工業(yè)自動化系統(tǒng)成為一個敏捷靈活的生態(tài)系統(tǒng),其實現(xiàn)途徑就是加快吸收這些年來發(fā)展迅速、而且行之有效的I T技術(shù),尤其是云計算技術(shù)的各種成果。工業(yè)自動化沿用至今的系統(tǒng)架構(gòu)還是在二十多年前建立的,而且作為工業(yè)自動化設(shè)備主力軍的DCS/PLC,其開放性、信息安全以及互操作性遠遠滯后于市場要求。這幾年來各種IT技術(shù)滲入工業(yè)自動化的進程和工業(yè)自動化自身謀求突破的努力已經(jīng)開始(例如OPAF積極倡導(dǎo)的開放型流程自動化和工業(yè)自動化各類軟件容器化),并已取得一定的進展,特別是工業(yè)互聯(lián)網(wǎng)深入制造業(yè)的努力以及智能制造與工業(yè)互聯(lián)網(wǎng)的結(jié)合正在加速;邊緣計算和分析受到了前所未有的重視。通過在需要的地點和時間高效地采集數(shù)據(jù)和提供虛擬化,使處于工業(yè)邊緣的計算設(shè)備占據(jù)了關(guān)鍵的地位。圖4形象地表達了邊緣計算在IoT/智能設(shè)備和云數(shù)據(jù)中心之間的位置。
圖4 工業(yè)邊緣計算的關(guān)鍵地位
單內(nèi)核技術(shù)非常適合于開發(fā)運用于邊緣的數(shù)據(jù)采集、處理和分析設(shè)備,這是因為它是一種實現(xiàn)單一服務(wù)部件(單元)輕量級的機制。它對硬件資源的要求較低,易于快速配置和替代。它具有APP服務(wù)的靈活性,像HMI這樣的遠程設(shè)備就可以利用單內(nèi)核技術(shù)和有關(guān)的APP,快速構(gòu)成專用的有針對性的數(shù)據(jù)采集分析和顯示。它又易于開發(fā),在工廠內(nèi)的開發(fā)和測試活動可以在虛擬機環(huán)境中進行,而不論主機在何地,因而對實際現(xiàn)場部署的硬件設(shè)備要求不高。
上述這些特點對于OEM廠商和系統(tǒng)集成商很有意義。運用單內(nèi)核技術(shù)可加速集成的進度,將開發(fā)組態(tài)轉(zhuǎn)換為生產(chǎn)系統(tǒng)的瘦客戶端方便而快速,特別是與多臺服務(wù)器和PC機方案的組態(tài)相比;單內(nèi)核大大簡化了系統(tǒng)維護,集中控制的虛擬機的維護遠比分布式資產(chǎn)的維護來得容易,尤其是在軟件升級和為信息安全打補丁的時候更是如此;以單內(nèi)核為基礎(chǔ)形成瘦客戶端的架構(gòu),系統(tǒng)可擴展性好,這得益于集中的標準化和良好的復(fù)用性;另外,通過建立和部署以單內(nèi)核為基礎(chǔ)的設(shè)備,可為實現(xiàn)一致性、可靠性以及再現(xiàn)性的最佳實踐打下堅實基礎(chǔ)。圖5是采用Stratus虛擬操作系統(tǒng)的瘦客戶端架構(gòu)的方案,易于用任務(wù)專用的虛擬化和移動軟件來構(gòu)成。
圖5 用虛擬機和移動軟件構(gòu)成瘦客戶端的架構(gòu)
單內(nèi)核對云、邊緣、局域網(wǎng)、底層信息安全服務(wù)和底層數(shù)據(jù)分析計算的設(shè)計者來說都十分有用。它可以用于實現(xiàn)輕量級服務(wù)或?qū)π畔踩舾械姆?wù),取得信息安全或快速部署的效果。在那些與單內(nèi)核相比開發(fā)成本過高的場合,單內(nèi)核的優(yōu)點畢露無疑,因為可顯著節(jié)省成本,顯著改善開發(fā)效率,且顯著改善信息安全。除了具有敏捷靈活、反應(yīng)快速的特點之外,單內(nèi)核運用于云計算有還有很好的一個優(yōu)點:規(guī)??勺龅煤艽?,也可以量體裁衣,按需確定規(guī)模。
由于工業(yè)自動化對于可靠性、可用性、安全性和功能性都有其特定的嚴格要求,所以對于引入單內(nèi)核技術(shù),在采取積極進取的態(tài)度的同時,開展謹慎和嚴格的實驗和測試,尤其是工業(yè)現(xiàn)場的檢驗和認證是必不可少的。
作者簡介:彭瑜,1960年畢業(yè)于清華大學(xué)動力系。上海工業(yè)自動化儀表研究院教授級高級工程師、PLC open中國組織名譽主席、中國智能制造綜合標準化工作組專家、工信部智能制造標準化體系建設(shè)工作組專家、中國科技自動化聯(lián)盟首席專家顧問。長期從事工業(yè)過程控制系統(tǒng)的研究開發(fā)工作。自1996年后,研究領(lǐng)域集中在PC控制、現(xiàn)場總線、工業(yè)以太網(wǎng)、MES,以及現(xiàn)場設(shè)備的無線通信;近些年主要研究智能制造相關(guān)的自動化技術(shù)。憑借在發(fā)展我國工程技術(shù)事業(yè)方面做出的特殊貢獻,1993年起獲國務(wù)院特殊津貼。