[閒聊] 要組VM及VT-D, IOMMU功能的麻煩先看一下
總覺得最近回了許多類似的文章有點煩,故在這邊一次回應掉...
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)
推
05/26 02:08, , 1F
05/26 02:08, 1F
→
05/26 02:12, , 2F
05/26 02:12, 2F
推
05/26 02:12, , 3F
05/26 02:12, 3F
推
05/26 02:36, , 4F
05/26 02:36, 4F
推
05/26 03:16, , 5F
05/26 03:16, 5F
→
05/26 03:18, , 6F
05/26 03:18, 6F
→
05/26 03:19, , 7F
05/26 03:19, 7F
→
05/26 03:20, , 8F
05/26 03:20, 8F
推
05/26 03:50, , 9F
05/26 03:50, 9F
推
05/26 05:01, , 10F
05/26 05:01, 10F
推
05/26 09:13, , 11F
05/26 09:13, 11F
推
05/26 09:46, , 12F
05/26 09:46, 12F
你想得沒錯,若一般家用使用者使用type 1 hypervisor又不使用device
passthrough,那麼這個使用者將會發現他在操作上的使用體驗,並不會
因改用了type 1 hypervisor而變得更好。
→
05/26 09:52, , 13F
05/26 09:52, 13F
→
05/26 09:53, , 14F
05/26 09:53, 14F
→
05/26 09:53, , 15F
05/26 09:53, 15F
推
05/26 10:44, , 16F
05/26 10:44, 16F
推
05/26 10:46, , 17F
05/26 10:46, 17F
→
05/26 10:49, , 18F
05/26 10:49, 18F
→
05/26 10:49, , 19F
05/26 10:49, 19F
推
05/26 10:50, , 20F
05/26 10:50, 20F
→
05/26 10:50, , 21F
05/26 10:50, 21F
推
05/26 11:07, , 22F
05/26 11:07, 22F
這個說法沒錯。但實作上我認為type 1 hypervisor 在某部份的功能是超
越一般所提及的OS的,像是對層級的管理及轉換等等;然而另一方面又由
於 type 1 hypervisor 所提供的 device passthrough,不怎麼符合一般
所謂的OS能提供的功能,為了避免誤導使用者,所以我在第二篇文章中,
才會如此說明。
推
05/26 12:11, , 23F
05/26 12:11, 23F
→
05/26 12:11, , 24F
05/26 12:11, 24F
→
05/26 12:11, , 25F
05/26 12:11, 25F
推
05/26 12:53, , 26F
05/26 12:53, 26F
推
05/26 13:01, , 27F
05/26 13:01, 27F
→
05/26 13:26, , 28F
05/26 13:26, 28F
推
05/26 16:43, , 29F
05/26 16:43, 29F
※ 編輯: luguo 來自: 61.228.150.241 (05/26 16:59)
→
05/26 17:42, , 30F
05/26 17:42, 30F
→
05/26 17:43, , 31F
05/26 17:43, 31F
→
05/26 17:43, , 32F
05/26 17:43, 32F
→
05/26 18:04, , 33F
05/26 18:04, 33F
→
05/26 18:07, , 34F
05/26 18:07, 34F
推
11/24 09:21, , 35F
11/24 09:21, 35F
推
09/04 15:20, , 36F
09/04 15:20, 36F
討論串 (同標題文章)