為什麼這篇vt-d是什麼鄉民發文收入到精華區:因為在vt-d是什麼這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者luguo (close to u)看板PC_Shopping標題[閒聊] 要組VM及VT-D,...
總覺得最近回了許多類似的文章有點煩,故在這邊一次回應掉...
1.
Virtual machine 是需求,硬體的實作基本上在 x86 分2種,第一種叫 type 1
hypervisor,第二種叫 type 2 hypervisor。
2.
先講type 2,因為我想有在玩虛擬機的應該都很熟。
其作法是直接在Host OS上架構 hyervisor,而其上的OS通常都叫它 Guest OS。
這樣做的優點在於原先架構的OS(Host)不需其他更動,就可達成虛擬化的目的,
但這麼做也帶來了缺點,由於每個Guest OS要使用硬體的功能時,就必須透過
hyervisor對Host OS做存取,此做法勢必會造成效能的損秏。
3.
至於 type 1 hypervisor 的實作方式,是在硬體上架構 hyervisor,故所有
Guest OS皆平權,由hypervisor調控系統資源
一般常見的軟體如XenServer、VMWare ESX or ESXi、微軟的Hyper-V
而重點在於,除 Unix Kernel-based Virtual Machine 這種算半熔合的type 2
以外,一般在家用級常見的OS是無法直接使用type 1這類技術的。
也就是說,除非使用 Kernel-based Virtual Machine,或利用此技術的軟體(如
Linux 下的 Virtualbox),或其他type 1 VMWare ESXi、Xen、Microsoft Hpyer
-V這類軟體作為hypervisor以外,是無法使用VT-D或IOMMU的功能的。
4.
最後來講講VT-D或IOMMU是拿來幹麼的...
由於 Guest OS 對硬體的操作,實際上是由 hypervisor 所模擬出來的虛擬硬體
接收,再由hypervisor將指令或操作轉換成相對應的指令讓硬體執行。
這一來一往不僅有效能的損秏,對於有直接存取需求的使用者也必然造成困擾。
所以device passthrough就出現了,而一般常用到的不外乎PCI passthrough。
其原理是type 1 hypervisor為Guest OS開了一扇方便之門,可由"指定的 Guest"
直接對指定的硬體進行操作,就如同直接在硬體上架構OS一般。
然而其代價也是相對的。由於這個操作具有獨佔性,所以其他的Guest OS會因此
無法同時對此硬體作操作。
舉個簡單例子,當我的PC使用 Xen 作為 type 1 hypervisor。
使用的情境有兩個 Guest OS 同時運行,取名為Guest01 與 Guest02。
此PC有兩張網卡,在此取名為 網卡1 與 網卡2。且此PC支援PCI passthrough。
若將電腦內的 網卡1 passthrough設置給 Guest01,那麼我在 Guest02 將會無
法對 網卡1 進行任何的操作。反之亦然。
總結:
VT-D 或 IOMMU 的限制相當的多,一來需特定硬體及軟體才能達成,二來是其實
用性會因passthrough而有所限制。
所以除非真的有特定需求非得使用此功能不可,否則在一般消費級的使用者所常見
的 VMWare Workstation、Virtualbox in Windows、Virtual PC 這類hypervisor
使用狀況下,若仍對於VT-D或IOMMU功能有無的抱持著執著,似乎不太合理。
因為使用這類無法用上 device passthrough 的 type 2 hypervisor 的同時,這
些功能的有無似乎也變得不重要了。
註:
1.
hypervisor翻成"程序管理器"或"虛擬機管理員"感覺很虛,所以就直接用原文了。
2.
半夜打了一篇應該沒啥人要看的東西,我是M嗎.....
--
「只有心懷悔恨的人,會恐懼死亡。」
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.150.241
※ 編輯: luguo 來自: 61.228.150.241 (05/26 02:06)
passthrough,那麼這個使用者將會發現他在操作上的使用體驗,並不會
因改用了type 1 hypervisor而變得更好。
越一般所提及的OS的,像是對層級的管理及轉換等等;然而另一方面又由
於 type 1 hypervisor 所提供的 device passthrough,不怎麼符合一般
所謂的OS能提供的功能,為了避免誤導使用者,所以我在第二篇文章中,
才會如此說明。