VMware ESX / ESXi 4 的版本已經有支援 VT-d 的功能
什麼是 VT-d ,Intel® Virtualization Technology(VT-d) 或是 AMD input/output memory management unit (IOMMU) 主要是透過內建於主機板的北橋晶片所提供的虛擬化技術.透過此一虛擬化的技術可讓虛擬機器針對週邊硬體等 I/O 等裝置做直接做存取 Directed I/O.
不過首先必須你的硬體包括 CPU 和北橋都必須支援, BIOS 以及軟體都必須要支援,要使用前最好先詳細詢問一下硬體廠商.
目前我手上的版子使用了 Nehalem + Tylersburg 的架構他剛好都有支援我所需的虛擬化技術 VT-x 以及 VT-d.
關於這幾項虛擬化可以參考先前的文章 https://benjr.tw/3383
在 VMware 官方網站對於 VMDirectPath I/O 的需求說明
- vSphere (well… common)
- Intel Virtualization Technology for Directed I/O (VT-d)
- AMD IO Virtualization Technology (IOMMU)
- Devices must be connected to the host and marked available for pass through
- VMs require hardware version 7
目前我手上有一張 Chelsio 10G Ethernet 網卡,不過很可惜的是目前 VMware ESX 4 還沒有內建 Chelsio 的驅動程式,所以第一步需要到 Chelsio 官方網站下載所需的 VMware 專屬網卡驅動程式 http://service.chelsio.com/ 根據 Chelsio 網站的 Readme 說明 http://service.chelsio.com/site-bin/readme.cgi?FILE=vmware/t3/Virtual-Multi-Port-Software-Driver/README.txt 步驟就如下所示.
Driver Installation
===================
To install the Virtual-Multi-Port-Software Driver,
- 啟動 ESX / ESXi 主機.
- 透過 vSphere Client 將 ESX / ESXi 系統進入 Maintenance Mode.
(Inventory -> Host -> Enter Maintenance Mode). - 在 ESX 或 ESXi 主機端的密令列模式下執行 esxupdate 指令,驅動程式的附檔名為 vib.
esxupdate -b <.vib> --nosigcheck update
- 重新啟動主機.
Note : For PXE Boot/Install of ESXi 4.0 U1, replace image.tgz within the TFTP Server with the one provided on the website so that the driver is installed and loaded automatically on reboot.
回到 VMware 中的 Configuration / Advanced Settings / Configure Passthrough (Edit) 新增想要提供給虛擬機器做直接存取的裝置.
- 更新完 Chelsio 驅動程式後,回到你的 VMware ESX 的 Configuration .
- 選擇 Advanced settings
- 在 5 的地方可以看到目前已經加入到 Directed I/O 的裝置.此時我們需將 Chelsio 10G 網卡也加入 Direct I/O 的裝置中.
- 點選 Edit 可以看到目前所有可以使用 Directed I/O 的裝置,不能當成 Direct I/O 的 裝置將會是反灰的樣式呈現.
- 所有新增的 Directed I/O 裝置都必須重新啟動 VMware 才會生效,VMware 會在裝置上顯示出警告信息 "Changes made to some of the devices below will not take effect until the host restart"
將 VMware ESX 的系統進入 "Enter Maintenance Mode" 再重新啟動 VMware ESX.
在你的虛擬機器中可以選擇 Edit Settings..Add 新增虛擬裝置,這邊可以看到 PCI Device 就是可以使用 VT-d 的裝置,
選擇剛剛新增的 Chelsio 10G 網路裝置.
雖然這個 Chelsio 10G 網路裝置可以指派給多台虛擬機器,不過 VT-d 在使用上是有限制的最多只有 1 台虛擬機器可以針對這裝置做存取,所以只要其中 一台被指派過 Chelsio 10G 網路裝置的虛擬機器是啟動的狀態時,其他也有指派這 Chelsio 10G 網路裝置的虛擬機器是不被允許啟動的.
如果你需要同時讓多台虛擬機使用同一個裝置時則必須透過另一個虛擬技術 VT-c(Virtualization Technology for Connectivity)
Configuring VMDirectPath I/O pass-through devices on an ESX host
這邊有 VMware 對於 VMDirectPath I/O pass-through devices 也就是 direct I/O 的說明文件.
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1010789
http://communities.vmware.com/docs/DOC-11089
HOWTO 101: configuring VMDirectPath IO with Cisco UCS and vSphere 影像說明檔
http://www.youtube.com/watch?v=jmQ5Ej8r-aA&feature=related