亞馬遜Firecracker: 專門針對無伺服器應用的輕量虛擬化,雲端計算下一個發展新趨勢 - acolyer
不同於Docker容器或JVM等語言VM,亞馬遜Firecracker專門致力於無伺服器應用的輕量虛擬化。Firecracker是支援AWS Lambda和AWS Fargate的虛擬機器監視器(VMM),自2018年以來已在AWS上投入生產。Firecracker是開源的,並且有許多專案使在外部環境下輕鬆工作變得容易。 之所以存在Firekube,是因為現有的替代方案(虛擬化,容器或特定於語言的vm)都無法滿足AWS環境中多租戶效率和強隔離的組合需求。
隔離方法
AWS Lambda的第一個版本是使用Linux容器構建的。同一客戶的多個函式將在單個VM中執行,而不同客戶的工作負載則在不同的VM中執行。因此,容器在提供了函式之間的隔離,而虛擬化則在帳戶之間提供了(更強)隔離。這種方法在打包效率上施加了一些限制,並且還需要基於允許進行的syscall容器型別在安全性和程式碼相容性之間進行折衷。
現代的商用伺服器最多可以包含1TB的RAM,而Lambda函式可以使用的記憶體僅為128MB。因此,伺服器上最多需要8000個函式來填充RAM(由於軟分配,實際上更多)。這也使任何解決方案對每個函式(每個隔離單元)的開銷非常敏感。
理想的隔離解決方案將具有以下屬性:
- 高度隔離(在同一硬體上具有多種功能,可以防止特權提升,資訊洩露,祕密通道和其他風險)。
- 能夠在一臺機器上執行數千個函式,而浪費最少
- 接近本機效能
- 支援任意Linux二進位制檔案和庫,而無需更改程式碼或重新編譯
- 快速啟動和拆卸功能
- 軟分配支援,每個功能僅消耗其需要的資源(達到其限制),而不消耗其實際有權使用的資源。
容器的問題
主機上的容器(如Docker)共享單個OS核心,這依賴於核心中內建的隔離機制來提供保護。容器依賴syscall限制其安全性這一事實表示在安全性和相容性之間進行權衡。
一個現實的容器環境可能需要訪問數百個sys呼叫,以及/proc和/sys核心介面。怎麼辦?一種用於系統呼叫的解決方案是將某些核心功能移入使用者空間,從而保留較小的表面積以確保安全。這有助於防止特權升級,但是這意味著防止隱蔽的通訊渠道仍然具有挑戰性。
語言VM的問題
特定於語言的VM(例如V8隔離)在AWS Lambda情況下不能作為啟動器,因為Lambda和Fargate需要能夠支援任意二進位制檔案。
虛擬化的問題
虛擬化在密度,開銷和啟動時間方面面臨挑戰。諸如unikernels之類的方法可以幫助解決此問題,但是再次要求AWS需要執行未修改的程式碼才能將這些問題排除在外。通用管理程式和虛擬機器監視器(VMM)也非常大,從而導致了龐大的可信計算庫(TCB)。KVM + QEMU的流行組合可執行超過100萬行程式碼,並需要多達270個唯一的系統呼叫。
Firecracker的設計
我們剛剛研究的所有現有方法都涉及到AWS不想進行的權衡。通過專門為無伺服器和容器應用程式構建Firecracker,可以簡化假設,從而開闢新的設計點。
我們真正想要的是虛擬化的隔離特性,以及輕量級的容器開銷。“ 從隔離的角度來看,最引人注目的好處是它將安全性至關重要的介面從OS邊界轉移到硬體和相對簡單的軟體所支援的邊界 ”。
因此,Firecracker的核心是一個新的VMM,它使用Linux核心的KVM基礎結構來提供最少的虛擬機器(MicroVM),支援現代Linux 主機以及Linux和OSv 。Rust大約為50kloc,即使用安全的語言,大大減少了程式碼佔用量。
Firecracker儘可能利用Linux內建的元件(例如,用於塊IO,程式排程和記憶體管理以及TUN / TAP虛擬網路介面)。通過針對容器和無伺服器工作負載,Firecracker只需要支援有限數量的模擬裝置,而數量要少於QEMU(例如,不支援USB,視訊和音訊裝置)。virtio用於網路和塊裝置。Firecracker裝置提供了足以滿足AWS需求的內建速率限制器,儘管如此仍然比Linux cgroups靈活得多。
除VMM之外,Firecracker還公開了用於配置,管理,啟動和停止MicroVM的REST API。
將Firecracker整合到AWS中
在AWS Lamba Firecracker MicroVM內部,每月為數十萬客戶提供數萬億個事件。Firecracker MicroVM的啟動時間大約為100毫秒,如果還包括API呼叫處理時間,則啟動時間為150毫秒。記憶體開銷非常低,每個MicroVM約為3MB(相比之下,Cloud Hypervisor為13MB,QEMU為131MB)。
Firecracker 當前的弱點是塊IO效能。Firecracker(和Cloud Hypervisor)限於大約13,000 IOPS(4kB時為52 MB / s),而相同的硬體能夠超過340,000讀取IOPS(4kB時為1GB / s)。
總結
除了短期的成功外,Firecracker還將成為未來在虛擬化領域進行投資和改進的動力,包括探索虛擬化技術的新領域。我們很高興看到Firecracker被容器社群所採用,並相信有很大的機會從Linux容器過渡到虛擬化,這是整個行業中容器隔離的標準。
點選標題見原文。
相關文章
- 虛擬化和雲端計算未來發展趨勢薦
- 雲端計算與商業智慧的7個發展趨勢
- 品質專線應用進展及發展趨勢
- 行業專家對2021年的雲端計算發展趨勢的預測行業
- 亞馬遜CTO:未來雲端計算髮展八大趨勢亞馬遜
- 虛擬化及雲端計算技術應用的思考
- 虛擬化應用才是技術發展的根本
- 工業雲端計算在中國的發展與趨勢
- 雲端計算是什麼?雲端計算的發展趨勢是什麼?
- 雲端計算虛擬化的優劣勢有哪些?
- 雲端計算五大應用趨勢
- 雲端計算技術發展的六大趨勢
- 無伺服器計算的三個注意事項 – acolyer伺服器
- 啥是伺服器虛擬化,虛擬化的優勢伺服器
- 伺服器虛擬化的應用前景伺服器
- 什麼是伺服器虛擬化,虛擬化的優勢!伺服器
- 雲端計算催動IT發展走向兩極分化的趨勢
- Forrester企業虛擬化率推進雲端計算應用REST
- IT應用技術趨勢展
- 專案管理四大發展新趨勢(轉)專案管理
- 虛擬化不是雲端計算
- 中國雲端計算產業的發展趨勢和當今現狀產業
- 針對運營商行業的虛擬化應用效能監測管理解決方案行業
- 2021移動應用發展趨勢
- 應用內廣告成未來發展趨勢
- QEMU在Docker容器中的革命:輕量級虛擬化新體驗Docker
- 雲端計算和大資料未來發展趨勢分析大資料
- 雲端計算的6個未來趨勢
- 大家看這是不是web應用發展的趨勢??Web
- 趨勢科技佈局雲端計算專用安全軟體
- Mobclix:iPad的20%應用專門針對遊戲類iPad遊戲
- 雲端計算發展目前有什麼優勢?Linux雲端計算入門Linux
- DevOps 發展的 9 個趨勢dev
- Beforweb:2012年移動應用發展的五個趨勢Web
- Firecracker開源對無伺服器社群意味什麼?伺服器
- 最熱門的移動應用趨勢:離線化
- 雲端計算發展飛速,虛擬主機還有用嗎?
- 教育行業的形勢分析以及一對一教育原始碼發展趨勢行業原始碼