注:本文做者馬濤,阿里雲智能研究員、阿里巴巴集團內核團隊創始人之1、阿里雲基礎軟件部操做系統團隊負責人。前後在ORACLE、阿里巴巴負責Linux以及操做系統內核相關的研發工做。十五年以上操做系統和內核相關研發經驗,國內知名Linux內核研發人員,在文件系統、內存管理、通用塊設備層等方面均有深厚的積累,屢次受邀在國內外知名Linux操做系統以及內核相關會議上發表講座。
如今咱們在各個場合能夠看到各類各樣的「雲原生XXX」,雲原生已經成爲IT界最流行的一個定語,彷佛不談雲原生就out了。但什麼纔是真正的雲原生?把老的技術跑在雲上就能夠了麼?貌似不太行!用阿里雲高級研究員蔣江偉的一句話來定義——「因雲而生纔是雲原生」。簡單來講,一個產品或者技術要能真正加上雲原生這個定語,必定要有因雲而生的創新和演進,因此想加上雲原生這個定語可不是容易的。若是各位讀者感興趣,能夠上網搜索文章「阿里雲蔣江偉:什麼是真正的雲原生?」docker
今天,我就毛遂自薦來說講雲原生操做系統。segmentfault
你們可能比較好奇,操做系統不是全部用電腦的人天天都在使用的玩意麼?「操做系統原理」不是通常計算機系同窗的第一門艱深的專業課麼?如今最流行的操做系統Linux不是1991年就由Linus Torvalds大神創立了麼?以上問題的答案都是確定的,那麼,這麼一個頗爲傳統的系統軟件也能夠雲原生了麼?對,操做系統也要與時俱進!因此,今天我站在操做系統的角度,來談談這個頗爲傳統的系統軟件是如何因雲而生、因雲而變,成爲「雲原生操做系統」的。安全
在展開講技術以前,我先簡單介紹一下本身。我是從2006年開始與操做系統結緣的,最開始是在Oracle從事操做系統的開發工做,2010年加入淘寶核心系統作操做系統,做爲阿里最先一批作操做系統的同窗,從淘寶到阿里雲一直堅守在操做系統領域,一路參與和見證了操做系統在阿里因雲而生的演進發展。雖然淘寶也是一家互聯網公司,可是淘寶的操做系統和傳統的操做系統其實區別並不大。一切因雲而生的改變從我2012年從淘寶轉入阿里雲開始。服務器
那個時候,阿里雲的操做系統和淘寶的有區別麼?客觀來講區別不大。惟一的一點點區別:在淘寶,操做系統是淘寶的一個基礎組件;而在阿里雲,操做系統和虛擬化成爲了第一代雲計算的基石,這是操做系統和雲的第一次親密接觸。less
2000年左右,VMware和Xen虛擬化技術相繼出現,操做系統經過將物理資源虛擬化達到提升資源利用率和靈活調度的目的,最終催生了雲計算的誕生。早期的AWS、阿里雲都是利用這一技術提供虛擬主機的服務。這是雲原生麼,是因雲而生的麼?固然不是。首先這些雲廠商大都是在線下硬件上實現一個虛擬化層(hypervisor),把原來直接操控硬件的操做系統架到hypervisor上運行,而後服務器物理資源層面的抽象和管理都由hypervisor從新實現。那麼,這個事情線下能作麼?絕對能夠,因此顯然這不符合雲原生的定義。雖然說這是雲的開端,但這不是雲原生的。運維
時間來到了2013年,操做系統和雲的第二次親密接觸源於容器的誕生和發展。與虛擬機的服務器資源虛擬化不一樣,容器是操做系統虛擬化,在技術棧上上升了一層——經過內核裏實現的cgroup和namespace等技術爲不一樣應用提供輕量、隔離的運行環境。2013年docker的橫空出世,使得應用容器的打包分發變得很是簡單易用,隨後k8s等容器編排技術的出現,容器生態系統獲得了快速的普及和發展,容器也迅速成爲應用打包分發和開發測試的主流形態,逐漸成爲雲計算的主要運行單元。函數
這就是CNCF定義的雲原生了,但它只是「狹義」的,操做系統在這個「狹義」雲原生中起到了很大的做用,但其實它並非真正意義上的「因雲而生的」,也沒有在雲上體現任何革命性的技術革新。測試
不過仔細觀察一下上圖,咱們能夠發現——容器在安全方面的不足在雲上成爲了一個大問題。一方面傳統的操做系統對於容器之間的干擾問題沒有很好的解決方案,另外一方面容器之間還存在彼此攻擊,共享一些關鍵資源等很是嚴重的安全問題。機會老是留給有準備的人,此時的操做系統終於須要因雲而變、爲雲演進了。咱們基於操做系統實現了輕量級虛擬化和應用內核等技術,打造了一種全新的安全的容器,咱們稱之爲安全沙箱容器。優化
沙箱容器在解決容器安全隔離問題的同時,仍然保留容器完整的技術生態和體驗,能夠跟普通容器無縫的混合使用。這是操做系統在容器場景上因雲而生的一個重要演進,至此操做系統完成了「因雲而生」的漂亮轉型,成爲一個雲原生操做系統。目前這套系統已經服務於阿里集團各個雲原生相關業務,也經過阿里雲上各類容器實例產品服務於咱們的雲客戶。阿里雲
故事到這裏尚未結束。面向將來的雲原生,操做系統如何繼續「因雲而不同凡響」呢?這就不得不提雲原生中另一個趨勢Serverless。
2019年,UC伯克利大學預測Serverless將會逐漸取代Serverful計算,成爲雲時代的新計算範式。隨着雲原生理念的推廣以及各類雲原生技術的不斷髮展,Serverless計算的趨勢在加速。在這種新場景中,用戶只須要專一於應用和業務邏輯,更多的通用功能、資源和系統能力都下沉到雲,用戶不須要提早規劃容量,不須要運維底層系統,能夠真正像用水、用電同樣按需使用按需付費,Serverless將大幅提高雲的生產效率。
背景介紹完,問題也來了——Serverless和操做系統有啥關係呢?我認爲要構建好Serverless服務,操做系統必定不能缺席。因爲Serverless場景下服務邊界的上移,對用戶來講應用容器或函數代碼之下的系統就是一個總體,用戶再也不感知底層系統的技術棧分層。這個變化給技術垂直整合創造了條件。咱們認爲雲原生的操做系統須要進行總體性的全棧優化和重塑,這樣才能爲Serverless提供更優的底層系統能力,基礎運行環境、資源彈性、高效執行等能力也將所以獲得極大的釋放。
若是說在容器和K8S時代操做系統是「因雲而演進」,那麼到了Serverless時代,咱們則要完全創造出一個全新的雲原生操做系統。經過底層系統全棧技術的協同融合,爲雲原平生臺和應用提供高效和創新的雲原生系統服務。此次變革和創新的力度對於傳統操做系統而言是史無前例的,可是咱們堅信,操做系統必定會爲雲而改變,爲雲而重生。在阿里內部,咱們給這樣的雲原生操做系統起了一個響亮的名字——「袋鼠」。
多年以後,也許大學課程「操做系統原理」裏的內容會由於此次變革而發生翻天覆地的改變,但咱們堅信,這就是雲帶給咱們這一代操做系統研發人員的使命:從新定義操做系統。只有經過因雲而生的技術創新打造出來的操做系統,纔是真正的雲原生操做系統。