首頁 > VMware ESX/ESXi > 【長篇教學】簡單了解Intel VT-d

【長篇教學】簡單了解Intel VT-d

2010年4月18日 發表評論 閱讀評論

esx06

大約在2006年後生產的中高級CPU/晶片組產品都開始支援虛擬技術了。在INTEL這邊我們看到的是VT技術,而AMD則推出AMD-V。技術的原理也許有所不同,但主要的目的都在加快Binary Translation的速度。最近客戶一直在問VT-d的技術,在購買伺服器時也一直怕買到的產品不支援這個技術的產品。很多人將VT-d以及VT-x搞混,今天趁著這個機會就簡單說明一下VT-d技術發揮的場所。

VT-d的用途


簡單來說 ,如果你有一個VM,想直接存取某個硬體設備(通常是PCI設備),如網路卡或是儲存HBA 卡,而不是選擇虛擬的硬體設備,那麼有沒有辦法讓這些真實的網路卡或HBA卡直接給這個VM用?例如我安裝一片Intel的網路卡,然後我在VM下不要使用假的虛擬網路卡,而是真正抓到這個型號,還得安裝驅動程式才能用這片網路卡呢?


答案是肯定的,如果你安裝ESX/ESXi的主機有支援VT-d,那麼VT-d的功能可以把這片網路卡的PCI裝置直接指定到某一個VM中。讀者們一定會問會有這種場合嗎?事實上在虛擬環境中,還是有許多直接硬體存取的機會,如備份伺服器,常常需要直接存取HBA卡才能加快速度,此時VT-d就派上用場了。


我使用的主機板支援VT-d嗎?


首先大家要知道,VT-d是晶片組支援的而非CPU所支援,因此如果你到處問哪些CPU是支援VT-d,可能得不到正確的答案。那麼你一定會問,哪些晶片組支援VT-d?伺服器的晶片組大部分都支援VT-d,而桌上型電腦較新的也支援,但嘉許不是偷懶不做晶片組的列表,而是如果這片主機板的BIOS不支援,你很可能也無法使用VT-d的功能,因此嘉許的建議是

確定你主機板的型號之後,查找使用手冊或BIOS中是否有開啟VT-d的選項。如果找不到,直接聯絡該產品的技術支援確定。如果你確定使用的主機板晶片組支援VT-d,但BIOS中確沒有選項,可能會需要BIOS的更新才能支援,因此在購買新產品時,一定要先確定在BIOS中有支援VT-d才進行採購。


要在BIOS中開啟VT-d很簡單,只要BIOS有這個選項,Enable就行了。


ESX/ESXi中的VT-d設定


在開啟了VT-d之後,ESX/ESXi中的設定就簡單了。只要進入ESX主機的「Configuration」/「Hardware」/「Advanced Settings」,右上方會出現「Configure Passthrough」,就可以進入設定了。

esxi02


在設定時,系統會要求指定要使用的PCI設備,你只要在設備前打勾就行。但要注意的是,選定設備後必須重新啟動ESX/ESXi。啟動之後,就可以看到指定的設備已經準備好可以給VM使用了。

esxi03 esxi04 esxi05


在VM中指定設備


在VM中要指定VT-d設備也很容易。只要在VM中新增PCI Device,並且選擇剛才所打勾的設備即可。當新增完之後,在VM中會要求安裝這個設備的原生驅動程式,安裝好之後就可以使用了。

esxi07


Intel的技術論壇中有一篇文章有完整的說明,大家有興趣可以到這邊來看

  1. qingheliu
    2010年4月19日01:58 | #1

    esx 的新书快出来了吧?
    xen的还远吗?
    哈哈

    • 嘉許
      2010年4月19日02:14 | #2

      您好

      預五月底會上市,到時別忘了再多多支持哦,呵呵,最近忙著趕書,Blog有點荒廢了,不過這兩天進度趕上了,會繼續更新的。xen出版社還在「評估」中,但他們較希望Hyper-V先出,還是市場考量啊!

  2. qingheliu
    2010年4月19日02:27 | #3

    哈哈, 谢谢!
    好的,一定支持!

  3. soly
    2010年7月6日13:29 | #4

    您好。看到老師您許多文章真是讓小弟我受益良多。小第一直都對虛擬技術很感興趣,特別是VT-d。但是無奈Intel官方在VT-d的宣傳似乎有點不清不楚。我一直有個問題,就是要啟用VT-d到底要哪些基本配備。我長期來一直都在搜尋相關解答但是都沒有很明確的答案。我看過Intel對VT-d的官方白皮書跟架構圖,按小弟我才識疏淺的理解,VT-d的支援基本上是由主機板的晶片組來主導,當然得加上BIOS必須可以開啟。 而VT-x部分是內建於CPU上。但是VT-d需要CPU有VT-x才可啟用。 如果是這樣,那就表示我可以買顆有VT-x的小羊E3400配上Q45的主機板(有VT-d)就可以開啟VT-d了,而不用買顆E8400囉?

    可是有個問題一直嘗起綑擾著我就是常常看到一些科技新聞例如報導有新的U上市,然後常常這些表格就會出現哪些U有支援VT-x跟VT-d,或是只有一般支援常見的VT-x。若按照這些資訊那就表示VT-d的支援也必須要有CPU的內建囉? 就連Intel自己官方的ARK網站也很模玲兩可。以一般桌機來說,我看到的CPU規格里有的有提到VT-x跟VT-d (例如E8400,i7 860), 有的卻只有提到VT-x但VT-d是關閉的,但有的列出VT-x(如E6750)。但是就桌幾主機板晶片組規格而言,似乎就只有Q開頭的系列才有(如Q35,Q45,Q57)。雖然ARK上沒提到E6750有支援VT-d,但是小弟的主機板就是Intel原廠的DQ45CB (Q45晶片),加上E6750,我用HWinfo32偵測有偵測到VT-d是開啟的,而且跑Vmware ESXi也可開啟VT-d。

    為此我就直接email Intel客服, 結果他們官方的技術客服回答說主機板晶片、BIOS、跟OS都得支援才可開啟VT-d…但說句實話,我對他們的說法有保留。我擷取一對原文回答:

    “VT-d is not mainly control by the motherboard chipset. VT-d is a platform combination of Chipset, BIOS, processor and Operating System. If one of these components doesn’t support it, then the whole platform won’t be compatible with such technology."

    但是我最近又看到一篇Intel專家的文章,裡面只說到主機板晶片跟BIOS支援及可…….。我真的已經霧煞煞,而且Intel官方也一直沒有對有支援VT-d的CPU跟晶片組有明確統一的列表。希望虛擬大能幫忙解惑,甘溫蛤~~

    P.s. 不好意思問題太複雜~

    • 嘉許
      2010年7月13日03:28 | #5

      您好,

      這的確是一個讓人傷腦筋的問題,我的新書會有這一部分的整合,這邊先列出表,只要買下面的CPU和下面的晶片組的組合就行。

      (支援VT-x的Intel CPU)

       Pentium 4 662 及 672
       Pentium Extreme Edition 955 及 965 (not Pentium 4 Extreme Edition with HT)
       Pentium D 9×0
       Core 2 Duo E6300, E6400, E6320, E6420, E6540, E6550, E6600, E6700, E6750, E6850 (Conroe)
       Core 2 Duo E5400, E7600, E8200, E8300, E8400, E8500, E8600 及 some versions of the E7400 及 E7500 (Wolfdale)
       Mobile Core 2 Duo T5600, T6670, T7100, T7200, T7250, T7300, T7400, T7500, T7600G, T7700, T7800, U7500, L7200, L7300, L7400, L7500, L7700, U7500, U7600, U7700 (Merom)
       Mobile Core 2 Duo SU7300, SU9300, SU9400, SU9600, SL9300, SL9380, SL9400, SL9600, SP9300, SP9400, SP9600, P7350 (mac),P7370, P7550 (confirmed), P7570, P8400, P8600, P8700, P8800, P9500, P9600, P9700, T8100, T8300, T9300, T9400, T9500, T9550, T9600, T9800, T9900 (Penryn)
       Core 2 Quad Q6600, Q6700 (Kentsfield)
       Core 2 Quad Q8400, Q8400S, Q9300, Q9400, Q9400S, Q9450, Q9550, Q9550S, Q9650 及 某些版本的Q8300 (Yorkfield)
       Core 2 Extreme X6800 (Conroe XE)
       Core 2 Extreme QX6700, QX6800, QX6850 (Kentsfield XE)
       Core 2 Extreme QX9650, QX9770, QX9775 (Yorkfield XE)
       Atom Z520, Z530, Z540, Z550 (Silverthorne)
       Intel Core i3
       Intel Core i5
       Intel Core i7
       Pentium Dual-Core E6300, E6500, E6600、某些版本的E5300 及 E5400
       Celeron SU2300, E3200, E3300, E3400
       所有的Xeon 3300以上,5000, 7000系列

      支援VT-d的晶片組

      在確定CPU支援VT-x後,我們就列出支援VT-d的晶片組。

      #表(支援Intel VT-d的晶片組)

       Intel Q35
       Intel Q45
       Intel X38
       Intel X48
       Intel X58

       Intel DQ35MP
       Intel DQ35JO
       Intel DQ35JO
       Intel DQ35MP
       Intel DX38BT
       Intel DX48BT2
       Intel DQ45CB
       Intel DQ45EK
       Intel DX58SO

       Intel 32×0
       Intel 3450
       Intel 54×0
       Intel 5500
       Intel 5520

  4. henry
    2010年10月25日12:13 | #6

    @soly
    我之前也有在網路上Search 過一些 Vmware ESXi 安裝的資訊,也購買硬體安裝過了
    照各位前輩,及老師說的結論,應該是 CPU 有支援 VT-x ,然後主機板有支援 VT-D
    就可以開啟 Vmware ESXi VT-D的功能,可是我有測過結果是不行的,我的
    CPU :Intel Core i3 530 有支援 VT-X
    主機板是: ASUS P7P55-M 在 Bios 上有開啟 VT-D的選項,就表示有支援VT-D 的功能.
    我安裝好 Vmware ESXi 進入管理介面 Configure 的選項裡
    “Configure Passthrough" 這個選項是無法點選的,應該就表示硬體不支援了喔
    底下的視窗資序也顯示 “Host does not support passthrough configuration"
    所以目前我的 VM USB 設備都不能用,如果有人想裝的最好還是 CPU 及主機板
    都支援 VT-D 這樣比較不會有問題,要不然會想我一樣,USB 裝置不能用,
    提供我的經驗給大家參考.記得要買 CPU 及 主機板都支援VT-D 比較好.

    • 嘉許
      2010年10月28日10:55 | #7

      您好,

      謝謝您的經驗,有關VT-D及VT-X一直沒有完整的確定表,嘉許整理一個表放上內文讓大家參考,因為這個地方一直眾說紛芸,謝謝。

  5. 路过
    2010年11月14日17:26 | #8

    据我了解,VT-D跟USB能否直连没有关系吧。 VT-D应该主要针对PCI类设备的。不知道对不对 @嘉許

    • 嘉許
      2010年11月18日01:59 | #9

      您好,

      筆者在使用VT-D時,是可以讓USB獨立的。VT-D主要是針對IMMOU的,應該是經過南橋的硬體設備都行,我再查證一下,謝謝。

  6. KYO
    2010年12月13日12:53 | #10

    嘉許大,你說VT-d是晶片組支援的而非CPU所支援,但是在intel的網頁中說intel Core i7- 875K 移除了對於VT-d (I/O虛擬分配技術)和TXT (可信賴執行技術)的支援,而說同級的intel Core i7- 870才有。這樣不會影響虛擬得功能嗎? 主機板有支援但是CPU沒支援! 這樣會不會太奇怪一點了。
    http://ark.intel.com/Compare.aspx?ids=43233,42929,48498,41315,48499,48750,43230,

    • 嘉許
      2010年12月21日14:43 | #11

      您好,

      補充一下,我使用I7,MSI的主機板,可以開啟VT-D,也就是說,有些PC等級的電腦也可以使用VT-D,但前題是你要能將vSphere安裝上才行。謝謝

  7. KYO
    2010年12月13日12:55 | #12

    嘉許 :您好,
    筆者在使用VT-D時,是可以讓USB獨立的。VT-D主要是針對IMMOU的,應該是經過南橋的硬體設備都行,我再查證一下,謝謝。

    嘉許大,查得如何?

    • 嘉許
      2010年12月21日14:41 | #13

      您好,

      USB HUB在VT-D是會顯示出來,我下周會去實作,因為目前手上沒有VT-D的主機,下周到客戶那邊去試試,剛從國外回來,慢回了,抱歉。

  8. KYO
    2010年12月13日14:22 | #14

    KYO :嘉許大,你說VT-d是晶片組支援的而非CPU所支援,但是在intel的網頁中說intel Core i7- 875K 移除了對於VT-d (I/O虛擬分配技術)和TXT (可信賴執行技術)的支援,而說同級的intel Core i7- 870才有。這樣不會影響虛擬得功能嗎? 主機板有支援但是CPU沒支援! 這樣會不會太奇怪一點了。http://ark.intel.com/Compare.aspx?ids=43233,42929,48498,41315,48499,48750,43230,

    因為CPU有支援VT-d的話,必定有此VT-d的指令集可對VMWARE的某些功能做最佳化!

    • 嘉許
      2010年12月21日14:34 | #15

      您好,我補充一下

      vt-d的確是晶片組必要要支援的,我上一篇說錯了,cpu當然也要有支援,因此必須cpu和晶片組同時支援,甚至是主機板廠商也要打開這功能才行。因此我這邊再重申一次,要使用VT-D,必須要下面幾項。

      1、CPU
      2、晶片組
      3、主機板
      4、OS(即確定的ESX/ESXI版本)

      謝謝兩位大大的指正。

  9. kenta
    2011年1月14日16:37 | #16

    請問usb查證的結果如何?
    那AMD-V與VT-D哪一種好?穩定性好
    我想在win7 vm xp 並使用USB,
    因原設備無WIN7驅動

    • 嘉許
      2011年1月27日11:47 | #17

      您好,

      實在是抱歉,借不到AMD的機器,手上使用的VT-D目前限於網路卡,USB是南橋功能,我不確定是否能整個分出來,兄能否試試PCI界面的USB卡,但也不確定是否有vSphere的驅動。我寫封信給VMware原廠問問,不好意思最近真的忙死了,再度抱歉。

  10. jerry
    2011年10月21日08:33 | #18

    您好 ,
    後來按照方式 直接設定了各個網卡晶片上去
    但是還沒上driver就reboot了….
    現在整個系統進不去 卡在storage-drivers failed to load lvmdriver
    直接進入recovery mode ….
    天啊 找了一晚找不到方法恢復~
    不曉得您有沒有建議怎麼恢復的方式?

  11. DoDo
    2011年11月11日17:07 | #19

    請教一下ESXi只要是硬體有支援VT-D或AMD(IOMMU)都可以直接存取介面卡嗎?
    不管是音效卡、顯示卡、陣列卡、USB擴充卡’或任何介面卡?
    都可以嗎?

    還是說該介面卡的型號也需要能在ESXi上面驅動呢?
    謝謝

    • 嘉許
      2012年1月11日14:07 | #20

      您好,

      理論上來說,只要是被ESXi認出來的硬體都應該可以讓VT-D繞過使用,但…..

      音效卡、顯示卡目前還沒有成功案例,最常用的還是陣列、USB、網路、儲存等等。

  12. breezestars
    2013年2月17日02:12 | #21

    您好,
    我想請問一下我在BIOS中開啟了VT-d之後
    進ESXi後會讀不到datastore
    至使之前的VM都抓不到
    請問您是否有遇到這樣的問題?以及如何處理?

  1. 2011年6月15日15:48 | #1