若要在 KVM 上啟用 SR-IOV 模式,請執行下列步驟。

必要條件

這需要特定的 NIC 卡。下列晶片組已通過 VMware 認證,可與 SD-WAN 閘道SD-WAN Edge 搭配使用。

  • Intel 82599/82599ES
  • Intel X710/XL710
備註: 在 KVM 上以 SR-IOV 模式使用 Intel X710/XL710 卡之前,請確定已正確安裝 〈部署必要條件〉一節中指定的支援韌體和驅動程式版本。
備註: 如果 KVM 虛擬 Edge 部署了高可用性拓撲,則不支援 SR-IOV 模式。對於高可用性部署,請確保沒有針對該 KVM Edge 配對啟用 SR-IOV。

若要在 KVM 上啟用 SR-IOV:

  1. 在 BIOS 中啟用 SR-IOV。這將取決於您的 BIOS。登入 BIOS 主控台並尋找 SR-IOV 支援/DMA。您可以檢查 Intel 是否有正確的 CPU 旗標,以確認提示上的支援。
    cat /proc/cpuinfo | grep vmx
  2. 在 Bboot 上新增選項 (在 /etc/default/grub 中)。
    GRUB_CMDLINE_LINUX="intel_iommu=on"
    1. 執行下列命令:update-grubupdate-initramfs -u
    2. 重新開機
    3. 確定 iommu 已啟用。
      velocloud@KVMperf3:~$ dmesg | grep -i IOMMU
       [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.13.0-107-generic root=/dev/mapper/qa--multiboot--002--vg-root ro intel_iommu=on splash quiet vt.handoff=7 
       [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.13.0-107-generic root=/dev/mapper/qa--multiboot--002--vg-root ro intel_iommu=on splash quiet vt.handoff=7 
       [ 0.000000] Intel-IOMMU: enabled
       ….
       velocloud@KVMperf3:~$ 
  3. 根據使用的 NIC 晶片組,依照下列方式新增驅動程式:
    • 對於 SR-IOV 模式下的 Intel 82599/82599ES 卡:
      1. Intel 網站下載並安裝 ixgbe 驅動程式。
      2. 設定 ixgbe 組態 (tar 和 sudo make install)。
        velocloud@KVMperf1:~$ cat /etc/modprobe.d/ixgbe.conf
      3. 如果 ixgbe 組態檔不存在,您必須依照下列方式建立該檔案。
        options ixgbe max_vfs=32,32
        options ixgbe allow_unsupported_sfp=1
        options ixgbe MDD=0,0
        blacklist ixgbevf
      4. 執行 update-initramfs -u 命令,然後將伺服器重新開機。
      5. 使用 modinfo 命令確認安裝是否成功。
        velocloud@KVMperf1:~$ modinfo ixgbe and ip link
         filename: /lib/modules/4.4.0-62-generic/updates/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
         version: 5.0.4
         license: GPL
         description: Intel(R) 10GbE PCI Express Linux Network Driver
         author: Intel Corporation, <[email protected]>
         srcversion: BA7E024DFE57A92C4F1DC93
    • 對於 SR-IOV 模式下的 Intel X710/XL710 卡:
      1. Intel 網站下載並安裝 i40e 驅動程式。
      2. 建立虛擬函式 (VF)。
        echo 4 > /sys/class/net/device name/device/sriov_numvfs
      3. 若要讓 VF 在重新開機後持續保存,請將上一個步驟中的命令新增至 "/etc/rc.d/rc.local" 檔案。
      4. 停用 VF 驅動程式。
        echo “blacklist i40evf” >> /etc/modprobe.d/blacklist.conf
      5. 執行 update-initramfs -u 命令,然後將伺服器重新開機。

驗證 SR-IOV (選用)

您可以使用下列命令快速確認主機是否已啟用 SR-IOV:

lspci | grep -i Ethernet

確認您是否擁有虛擬函式:

01:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function(rev 01)