[閒聊] 要組VM及VT-D, IOMMU功能的麻煩先看一下

看板PC_Shopping作者 (close to u)時間12年前 (2012/05/26 02:01), 編輯推噓18(18018)
留言36則, 21人參與, 最新討論串1/3 (看更多)
總覺得最近回了許多類似的文章有點煩,故在這邊一次回應掉... 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
看完推 XD
05/26 02:08, 1F

05/26 02:12, , 2F
debug: 進作任何的操作 → 進行任何的操作
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
推,當初為了搞懂vt-d花了好多時間google阿!!
05/26 03:16, 5F

05/26 03:18, , 6F
有問題想請教,假如hypervisor不支援D3D,可是guest
05/26 03:18, 6F

05/26 03:19, , 7F
OS透過passthrough取得了顯卡的直接存取權,那guest
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
M屬性無誤 (指)
05/26 05:01, 10F

05/26 09:13, , 11F
05/26 09:13, 11F

05/26 09:46, , 12F
總覺得type1很難搞... 只有一台機器似乎沒理由用1
05/26 09:46, 12F
你想得沒錯,若一般家用使用者使用type 1 hypervisor又不使用device passthrough,那麼這個使用者將會發現他在操作上的使用體驗,並不會 因改用了type 1 hypervisor而變得更好。

05/26 09:52, , 13F
type2對一般人很好用阿 雙開遊戲 跑舊程式
05/26 09:52, 13F

05/26 09:53, , 14F
當沙盒 拿浮動IP 刷dropbox等等..
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
其他就統統 ESXi 掉就好了 (喂喂喂)
05/26 10:49, 19F

05/26 10:50, , 20F
有看有推
05/26 10:50, 20F

05/26 10:50, , 21F
hypervisor 對自己的感覺就是無法從本機端直接用機器
05/26 10:50, 21F

05/26 11:07, , 22F
其實VMWare ESX or ESXi是OS
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
看來小弟要買一般PC跑兩個Guest Linux + Oracle的話
05/26 12:11, 24F

05/26 12:11, , 25F
根本不會用到 type1 那 VT-d 就不需要了! ^o^
05/26 12:11, 25F

05/26 12:53, , 26F
推,昨天剛體驗過一次ESXi的passthrough
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
M
05/26 16:43, 29F
※ 編輯: luguo 來自: 61.228.150.241 (05/26 16:59)

05/26 17:42, , 30F
突然想到一件事 某本雜誌叫電X王的曾經介紹過type1 2
05/26 17:42, 30F

05/26 17:43, , 31F
虛擬機器 不過當初介紹時寫錯便成type0 1(分別對應1
05/26 17:43, 31F

05/26 17:43, , 32F
2) 然後電腦X下期馬上寫出刊誤XDD
05/26 17:43, 32F

05/26 18:04, , 33F
作者想說的應該是ring... 但扯太多細節會讓人聽不懂
05/26 18:04, 33F

05/26 18:07, , 34F
樓上也看過那篇嘛? XD
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
文章代碼(AID): #1FlyZz0b (PC_Shopping)
文章代碼(AID): #1FlyZz0b (PC_Shopping)