
2つのNICを備えたサーバーがあります
01:00.0 イーサネット コントローラー: Intel Corporation イーサネット コントローラー 10 ギガビット X540-AT2 (rev 01) 01:00.1 イーサネット コントローラー: Intel Corporation イーサネット コントローラー 10 ギガビット X540-AT2 (rev 01)
そして、これらの2つのNICデバイスをゲスト(Ubuntuサーバー14.04)に割り当てたいのですが、このトピックに従っていますこのトピック:KVMでVT-dを使用してデバイスを割り当てる方法 だから私は言われた通りにやった:
- カーネル構成の変更:
menuconfigで「バスオプション(PCIなど)」->「DMA再マッピングデバイスのサポート」を「「バスオプション(PCIなど)」->「DMA再マッピングデバイスを有効にする」を「「バスオプション(PCIなど)」->「PCIスタブドライバ」を「*」に設定し、カーネルを保存して再構築します
私のdmesg | grep -e DMAR -e IOMMU表示:
[ 0.000000] ACPI: DMAR 00000000ddfaabc8 000078 (v01 INTEL SNB 00000001 INTL 00000001) [ 0.000000] Intel-IOMMU: 有効 [ 0.018789] dmar: IOMMU 0: reg_base_addr fed90000 ver 1:0 cap >c9008020660262 ecap f010da [ 0.018860] IOAPIC id 2 under DRHD base 0xfed90000 IOMMU 0 [ 1.610427] DMAR: ATSR が見つかりません [ 1.610449] IOMMU 0 0xfed90000: キューイングされた無効化を使用 [ 1.610451] IOMMU: RMRR を設定しています: [ 1.610460] IOMMU: デバイス 0000:00:1d.0 の ID マップを設定しています >[0xdde16000 - 0xdde32fff] [ 1.610478] IOMMU: デバイス 0000:00:1a.0 の ID マップを設定しています >[0xdde16000 - 0xdde32fff] [ 1.610487] IOMMU: LPC 用に 0-16MiB ユニティ マッピングを準備しています [ 1.610494] IOMMU: デバイス 0000:00:1f.0 の ID マップを設定しています [0x0 - 0xffffff]
- また、/boot/grub/grub.confファイルのカーネル行にintel_iommu=onパラメータを追加して、カーネルでIntel VT-dを有効にします。
- BIOSでVT-dを有効にする
ホストカーネルドライバーから NIC をアンバインドします:
echo "8086 10b9" > /sys/bus/pci/drivers/pci-stub/new_id echo 0000:01:00.0 > /sys/bus/pci/devices/0000:01:00.0/driver/unbind echo 0000:01:00.0 > /sys/bus/pci/drivers/pci-stub/bind
lspci -kでアンバインドを確認しました: ドライバーはpci_stubでした
ゲストVMのXMLファイルに次の行を追加すると、エラーが発生しました
デバイス 01:00.0 はすでに使用されています
XML追加
hostdev モード='サブシステム' タイプ='pci' 管理対象='はい' ソースアドレス ドメイン='0x0000' バス='0x01' スロット='0x00' 機能='0x0'/ /source /hostdev