虛擬化與容器

超管理器(hypervisor)

/ HY-per-vy-zor /

超管理器(hypervisor)是負責建立虛擬機器、並在它們與真實硬體之間當裁判的程式。如果說虛擬機器像一位以為自己擁有整間公寓的房客,那麼超管理器就是真正擁有整棟樓的大樓管理員:它發給每位房客一把通往其中一塊空間的鑰匙,並確保沒有房客能走進別人的住處、或動到線路。它有時也叫虛擬機器監視器(VMM),兩個名字指的是同一件事。

在機制上,超管理器跑在最高特權層,客體跑在它之下。它給每台虛擬機器一個虛擬 CPU,決定哪台虛擬機器在何時能使用真實的 CPU(排程),把每個客體的記憶體對應到真實的頁框,並假扮成客體的磁碟與網路。關鍵在於攔截:每當客體執行一道可能影響共用機器的敏感指令——觸碰控制暫存器、進行輸入輸出、更改記憶體對應——控制權就會陷入(trap)超管理器,由它檢查、執行安全的等效動作,再讓客體繼續。一般無害的指令則被允許直接在真實 CPU 上全速執行,這正是虛擬化能夠快速的原因。

超管理器分兩大家族。第一型(裸機)超管理器直接跑在硬體上,底下沒有主機作業系統(Xen、VMware ESXi、微軟 Hyper-V),是資料中心與雲端的主力。第二型(寄居)超管理器則以普通應用程式的身分跑在一套正常的作業系統之上(VirtualBox、VMware Workstation),在個人電腦上很方便。無論哪一型,超管理器都是一切所倚賴的可信層——所以它一旦有臭蟲就很嚴重,因為那可能破壞它所託管的所有虛擬機器之間的隔離。

在一台雲端伺服器上,超管理器正跑著八台客戶的虛擬機器。第 3 號虛擬機器試圖直接寫入磁碟控制器的暫存器。超管理器不讓它碰到真實硬體,而是攔下這次嘗試,把資料寫進支撐第 3 號虛擬磁碟的檔案,回報成功,再讓第 3 號繼續——另外七台虛擬機器連察覺都沒察覺。

超管理器攔下一個特權動作,悄悄改做安全的事。

超管理器是它所執行的每台虛擬機器的可信計算基礎:隔離的好壞,全看它自己的程式碼。這也是為何「超管理器逃逸」——客體突破到超管理器或另一個客體——被視為雲端安全中最嚴重的臭蟲之一。

又稱
virtual machine monitorVMM虛擬機器監視器VMM