[Virtualization]ESXi體系結構與記憶體管理(一)體系結構

gaearrow發表於2017-06-12

充分了解ESXi的記憶體管理機制是開展VMkernel系統漏洞挖掘和研究虛擬機器逃逸等技術的必備基礎知識。希望此文能夠幫助曾被或仍被ESXi複雜記憶體管理機制虐心的同學們。


虛擬化技術的發展與應用極大地降低了企業成本(管理和資金成本),也改變了我們的工作方式:它的普及不僅讓運維人員管理規模從一個機房降到一個機櫃,還讓測試人員使用十幾臺主機壓縮到一臺伺服器。在虛擬化技術發展中誕生了眾多新技術,記憶體組織與管理無疑是其中最精彩絕倫的技術之一。本文首先介紹了ESXi的體系結構和關鍵元件,然後介紹了三種記憶體分配與控制方法,最後介紹了五種高階記憶體管理技術。

1 ESXi組成體系

VMware ESXi是一款行業領先、專門構建的裸機hypervisor(摘自VMware官方簡介),是執行在物理伺服器和作業系統之間的軟體中間層。ESXi支援在一個物理機上同時執行多個客戶機作業系統(虛擬機器),統一排程分配CPU、記憶體、網路和磁碟等硬體裝置,極大提高硬體使用效率,實現所有硬體資源共享。

筆者參考VMware官方文件,結合個人理解繪製ESXi體系結構如圖 1所示,圖中將ESXi體系劃分成三層:硬體層、核心管理層和輔助管理層。硬體層主要包括CPU、記憶體等硬體裝置;核心管理層主要包括由類POSIX作業系統VMkernel提供的各類功能服務;輔助管理層主要包括VMkernel輔助使用者監控管理虛擬機器的多個代理和守護程式。下面將依次介紹核心管理層和部分輔助管理層元件(參考文獻[1]Components of ESXi 和文獻[2]Chapter 2 The ESXi Hypervisor)。

這裡寫圖片描述

圖 1 ESXi體系結構圖(參考文獻[1]Figure1,3)

1.1 VMkernel

VMkernel是由VMware設計開發的64位微核心類POSIX作業系統,是ESXi的構建基礎。VMkernel類似於其它通用作業系統,提供程式管理、檔案管理等底層基礎,同時為了更好地支援多虛擬機器執行,還豐富改進了CPU資源排程、記憶體分配管理、磁碟和網路輸入輸出堆疊控制、裝置驅動維護等。VMkernel使用簡單的記憶體檔案系統來儲存ESXi的配置檔案、日誌檔案和補丁等,使用專為虛擬磁碟和交換檔案等大型檔案設計和優化的群集檔案系統VMware虛擬機器檔案系統(VMFS)儲存虛擬機器。

1.2 Worlds

Worlds是執行在VMkernel作業系統上的程式。和其它作業系統上的程式類似,每個Worlds擁有獨立受保護的記憶體空間,分時使用CPU資源和基本的許可權控制等特性。在VMkernel上可以將Worlds劃分為三類:System Worlds、VMM Worlds和User Worlds,具體介紹如下。

1.2.1 System Worlds

系統Worlds(System Worlds)是執行在特殊的核心模式下的Worlds,它可以在系統許可權下執行程式。例如idle和helper都是系統Worlds。

1.2.2 VMM Worlds

虛擬機器監控Worlds(Virtual Machine Monitor Worlds)是使用者空間的抽象,它允許每個客戶機作業系統都能使用虛擬的x86硬體,為每個虛擬機器分配排程必要的BIOS、處理器、記憶體、磁碟和網路卡等硬體資源。

1.2.3 User Worlds

使用者Worlds(User Worlds)是執行在一般的使用者模式下的Worlds,它利用VMkernel提供的系統呼叫實現與虛擬機器和系統的互動。例如hostd、vpxa和syslog都是使用者Worlds。

1.3 ESXi代理

為了便於對物理伺服器和虛擬機器的綜合監控和管理,VMkernel還同時執行著多個代理和守護程式。

1.3.1 hostd

hostd是ESXi的主要管理程式。vSphere客戶端和遠端API呼叫利用hostd實現對VMkernel的管理控制。

1.3.2 vpxa

vpxa是vCenter與hostd的中間代理。vCenter利用首次連線ESXi伺服器時建立的vpxuser賬戶和vpxa服務實現與hostd的通訊,進而實現對VMkernel的監控管理。

1.3.3 syslog

syslog依據使用者配置,記錄ESXi伺服器操作報警等資訊至本地或遠端日誌伺服器。

1.3.4 DCUI

直接控制檯使用者介面(Direct Console User Interface,DCUI)是顯示在ESXi系統控制檯上的本地使用者介面。管理員利用DCUI可以對ESXi伺服器進行修改密碼、配置網路、檢視日誌、重啟與關機等基本操作。

相關文章