Intel開源NEMU:一款為雲時代而生的虛擬機器管理程式
NEMU是一款開源虛擬機器管理程式,是專門為了在現代64位英特爾和ARM CPU上執行現代雲工作負載而構建和設計的。
初衷:託管運行雲工作負載的現代訪客作業系統在不需要任何遺留硬體的虛擬硬體平臺上執行。此外,資料中心中所使用的現代CPU有先進的虛擬化功能,無需大多數CPU模擬。
目前市面上沒有明確專注於在現代CPU上運行雲工作負載的開源虛擬機器管理程式解決方案。所有可用的解決方案都在與時俱進,力求相當通用。它們嘗試支援一系列廣泛的虛擬硬體架構,在硬體虛擬化支援程度不一的硬體上執行。這導致要求提供一大批需要CPU、裝置和平臺模擬的遺留平臺和裝置款式。因此,它們建立在龐大複雜的程式碼庫之上。
另一方面,NEMU旨在充分利用KVM,專注於在一組有限的硬體架構和平臺上專門執行現代雲原生工作負載。它假設相當新的CPU和KVM讓使用者不需要大多數模擬邏輯。
與現有解決方案相比,這讓人們得以簡化程式碼庫、降低複雜性和縮小攻擊面。它還為提供針對雲的優化以及為雲提供效能更高的虛擬機器管理程式留下了更多的空間。減小程式碼的數量和複雜性讓人們更容易稽核程式碼、進行模糊測試、模組化和未來的創新。
QEMU基礎
QEMU是目前事實上的標準開源雲虛擬機器管理程式。它有一套豐富的功能,這些功能不斷開發出來並加以測試。這包括實時遷移、PCI、記憶體、NVDIMM及CPU熱插拔、VFIO、中介式裝置透傳(mediated device passthrough)和vhost-user等功能。QEMU還是眾多企業投入了大量精力和創新技術以建立多種高效能I/O模型所依賴的程式碼基礎。
它還隨帶廣泛支援遺留功能、平臺和裝置的功能,並能夠在大量硬體平臺上執行。它還允許跨平臺模擬。基本目標之一是,儘可能通用,另外在大量硬體上執行,並託管執行各種工作負載。由於硬體缺乏關鍵的虛擬化功能,QEMU需要模擬支援融入到程式碼中。
QEMU允許構建程式碼時配置一些豐富的功能特性。QEMU還在程式碼中含有支援所有這些遺留功能的抽象機制。
NEMU
NEMU基於QEMU,充分利用其豐富的功能特性,不過側重的面要窄得多。它利用了高效能、強大又穩定的QEMU程式碼庫,無需支援與雲無關的眾多功能、平臺和硬體。
NEMU的目的是保留QEMU程式碼庫中下述功能特性所需要的最基本程式碼。QEMU程式碼庫也將得到簡化,以減少通用抽象的數量。
要求
NEMU提供了一個PCI virtio平臺,支援基於vfio的裝置直接分配,並支援中介式裝置分配。它還旨在繼續支援實時遷移和vhost-user,併為PCI、記憶體、NVDIMM和CPU提供構建時可配置裝置熱插拔支援。NEMU需要模擬一小部分功能,包括PCI主機橋。
NEMU還推出了一種新的QEMU x86-64機器型別:virt。它是一個純虛擬平臺,不會試圖模擬任何現有的x86晶片組或遺留匯流排(ISA和SMBUS等),將盡可能多的功能解除安裝到KVM上。這種方法與已有的AArch64 virt機器型別相似,NEMU僅支援兩種virt機器型別。
以下是NEMU將保留和新增的QEMU功能列表。
大致功能
-
基於KVM
-
模擬極少
-
延遲低
-
記憶體佔用少
-
複雜性低
-
攻擊面小
-
只支援64位
-
構建時可配置的CPU、記憶體、PCI和NVDIMM熱插拔(可選)
-
機器到機器的遷移
網址:https://github.com/intel/nemu
宣告:本文來自安全內參,版權歸作者所有。文章內容僅代表作者獨立觀點,不代表安全內參立場,轉載目的在於傳遞更多資訊。如需轉載,請聯絡原作者獲取授權。