Hyper-V 虛擬化技術(Hyper-V 2.0) Part I

Hyper-V 虛擬化技術(Hyper-V 2.0) Part I

在談這東西之前,就一定要先聊聊,Hypervisor這東西

不論是VMWare vSphere,或是Hyper-V,都一定會有這東西

這是Guest OS存取Hardware必定經過的一層,另一個名稱叫做Virtual Machine Monitor

首先,先來看看有啟用Hyper-V跟沒有啟用Hyper-V的開機差異

enable_Hyper

(左圖是未啟用Hyper-V、右圖是啟用Hyper-V)

當Hypervisor被啟用之後,將會使用%Systemroot%\System32\Drivers底下的hvboot.sys先載入Hypervisor

hyper-v_boot

接著在透過實際的CPU來決定使用哪一種VT技術,%Systemroot%\System32底下的hvax64.exe或者hvix64.exe

hvax64.exe是AMD-V,hvix.64.exe是Intel-VT

intelvt

AMDVT

 

啟用了Hyper-V之後,將會使用Hypervisor去存取Hardware的CPU與Memory

接著,才會取啟動Host Server(在Hyper-V中稱為Parent Partition),又稱為父分割區

在啟用Hyper-V之後,Host將會處於下圖VM1中的位置,後續所建立的Guest OS,將會在VM2與VM3的位置

又稱為Child Partition,子分割區

hyper-v

 

從上圖可以看到,Child Partition都會需要安裝Driver才能存取像是Ethemet、Hard Drive、Time Sync…等等的一些裝置

 

然而會有很多VMWare ESX的使用者會說,在VMWare ESX裡的Guest OS就不需要安裝就能夠使用了

這是因為這兩者的Hypervisor的結構本身並不相同,VMWare ESX使用的是感知型的Hypervisor Drivers

所以會需要硬體支援(硬體廠商配合VMWare開發),但是Hyper-V則是Host有支援即可(有驅動就可以)

(下圖為VMWare ESX的Hypervisor)

VMWare

雖然VMWare可以在未安裝VM Tools的情況下運作,但是還是安裝後才能得到更多進階的功能

因為此篇主要是講解Hyper-V,在此就不對VMWare的部份有過多的說明囉~

下面這張圖,將說明啟用前跟啟用後的差異

hyper-v_enable

下圖,則是Parent跟Child之間的關係,在VMBus可溝通的情況下,將會使用Hypercall對Hypervisor進行I/O

hyper-v-role

Virtual Machine Worker Process(VMWP)就相當於是Guest OS的主機板

vmwp

VMWP會使用VMBUS、VID去使用Hypervisor API去對Hypervisor存取,取得Guest OS該使用的資源

112

12345

Virtualization infrastructure Driver其實就是%Systemroot%\System32\Drivers底下的winhv.sys

hvinf

VSC

當Guest OS在存取VHD時,則會透過VSC,經過VMBUS連接父分割區的VMBUS,由父分割區的VSP進行DISK I/O

storage

 

這是比較詳細的I/O運作邏輯

43

這是Driver透過VMBUS的對應

VMDevice