作者luguo (close to u)
看板PC_Shopping
标题[闲聊] 要组VM及VT-D, IOMMU功能的麻烦先看一下
时间Sat May 26 02:01:29 2012
总觉得最近回了许多类似的文章有点烦,故在这边一次回应掉...
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)
1F:推 perchik :看完推 XD 05/26 02:08
2F:→ luguo :debug: 进作任何的操作 → 进行任何的操作 05/26 02:12
3F:推 applepig81 :解释方法够简单,期待下一篇 05/26 02:12
4F:推 jakkx :推! 05/26 02:36
5F:推 revorea :推,当初为了搞懂vt-d花了好多时间google阿!! 05/26 03:16
6F:→ revorea :有问题想请教,假如hypervisor不支援D3D,可是guest 05/26 03:18
7F:→ revorea :OS透过passthrough取得了显卡的直接存取权,那guest 05/26 03:19
8F:→ revorea :能利用显卡上的硬体加速吗? 05/26 03:20
9F:推 charlie20083:看电虾长知识 推! 05/26 03:50
10F:推 QuentinHu :M属性无误 (指) 05/26 05:01
11F:推 fabled :推 05/26 09:13
12F:推 NeedGem :总觉得type1很难搞... 只有一台机器似乎没理由用1 05/26 09:46
你想得没错,若一般家用使用者使用type 1 hypervisor又不使用device
passthrough,那麽这个使用者将会发现他在操作上的使用体验,并不会
因改用了type 1 hypervisor而变得更好。
13F:→ s25g5d4 :type2对一般人很好用阿 双开游戏 跑旧程式 05/26 09:52
14F:→ s25g5d4 :当沙盒 拿浮动IP 刷dropbox等等.. 05/26 09:53
15F:→ s25g5d4 :(以上这些我好像都干过...) 05/26 09:53
16F:推 kikka : 05/26 10:44
17F:推 qqpunpun :推~~长知识 05/26 10:46
18F:→ NeedGem :以前有三五台机器的时候应该只要一台主控就好... 05/26 10:49
19F:→ NeedGem :其他就统统 ESXi 掉就好了 (喂喂喂) 05/26 10:49
20F:推 jack089452 :有看有推 05/26 10:50
21F:→ NeedGem :hypervisor 对自己的感觉就是无法从本机端直接用机器 05/26 10:50
22F:推 pikajoke :其实VMWare ESX or ESXi是OS 05/26 11:07
这个说法没错。但实作上我认为type 1 hypervisor 在某部份的功能是超
越一般所提及的OS的,像是对层级的管理及转换等等;然而另一方面又由
於 type 1 hypervisor 所提供的 device passthrough,不怎麽符合一般
所谓的OS能提供的功能,为了避免误导使用者,所以我在第二篇文章中,
才会如此说明。
23F:推 impressive9 :大推! 感谢大大这麽晚提供如此详尽的解释! 05/26 12:11
24F:→ impressive9 :看来小弟要买一般PC跑两个Guest Linux + Oracle的话 05/26 12:11
25F:→ impressive9 :根本不会用到 type1 那 VT-d 就不需要了! ^o^ 05/26 12:11
26F:推 terry6503 :推,昨天刚体验过一次ESXi的passthrough 05/26 12:53
27F:推 cka :不过虚拟机器到底用来干嘛啊 05/26 13:01
28F:→ friedpig :拿来灌一些大陆的垃圾软体还蛮好用的说= = 05/26 13:26
29F:推 wch6858 :M 05/26 16:43
※ 编辑: luguo 来自: 61.228.150.241 (05/26 16:59)
30F:→ s25g5d4 :突然想到一件事 某本杂志叫电X王的曾经介绍过type1 2 05/26 17:42
31F:→ s25g5d4 :虚拟机器 不过当初介绍时写错便成type0 1(分别对应1 05/26 17:43
32F:→ s25g5d4 :2) 然後电脑X下期马上写出刊误XDD 05/26 17:43
33F:→ luguo :作者想说的应该是ring... 但扯太多细节会让人听不懂 05/26 18:04
34F:→ s25g5d4 :楼上也看过那篇嘛? XD 05/26 18:07
35F:推 landattack :谢谢你! 11/24 09:21
36F:推 Sousake :新手爬文 推 09/04 15:20