15.5.2. 仮想マシンへの SR-IOV ネットワークデバイスの割り当て


SR-IOV ネットワークデバイスを仮想マシン (VM) に割り当てるには、ホスト上の SR-IOV 対応ネットワークインターフェイスから Virtual Function (VF) を作成し、その VF をデバイスとして指定した仮想マシンに割り当てる必要があります。

前提条件

  • ホストの CPU およびファームウェアは、IOMMU (I/O Memory Management Unit) に対応している。

    • Intel CPU を使用している場合は、Intel VT-d (Virtualization Technology for Directed I/O) に対応する必要があります。
    • AMD CPU を使用している場合は、AMD-Vi 機能に対応している必要があります。
  • ホストシステムが、アクセス制御サービス (ACS) を使用して PCIe トポロジーの DMA (Direct Memory Access) 分離を提供している。この点をシステムベンダーに確認してください。

    詳細は、SR-IOV を実装するためのハードウェアの考慮事項 を参照してください。

  • 物理ネットワークデバイスが SR-IOV をサポートしている。システムのネットワークデバイスが SR-IOV に対応しているかどうかを確認するには、lspci -v コマンドを使用して、出力で Single Root I/O Virtualization (SR-IOV) を探します。

    # lspci -v
    [...]
    02:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    	Subsystem: Intel Corporation Gigabit ET Dual Port Server Adapter
    	Flags: bus master, fast devsel, latency 0, IRQ 16, NUMA node 0
    	Memory at fcba0000 (32-bit, non-prefetchable) [size=128K]
    [...]
    	Capabilities: [150] Alternative Routing-ID Interpretation (ARI)
    	Capabilities: [160] Single Root I/O Virtualization (SR-IOV)
    	Kernel driver in use: igb
    	Kernel modules: igb
    [...]
  • VF の作成に使用するホストのネットワークインターフェイスが実行中である。たとえば、eth1 インターフェイスをアクティブにして、実行していることを確認するには、次のコマンドを実行します。

    # ip link set eth1 up
    # ip link show eth1
    8: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
       link/ether a0:36:9f:8f:3f:b8 brd ff:ff:ff:ff:ff:ff
       vf 0 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 1 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 2 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 3 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
  • SR-IOV デバイス割り当てを有効にするには、ホスト BIOS およびカーネルで IOMMU 機能を有効にする必要があります。これを行うには、以下を行います。

    • Intel ホストで VT-d を有効にします。

      1. intel_iommu=on および iommu=pt パラメーターを使用して GRUB 設定を再生成します。

        # grubby --args="intel_iommu=on iommu=pt" --update-kernel=ALL
      2. ホストを再起動します。
    • AMD ホストで、AMD-Vi を有効にします。

      1. iommu=pt パラメーターで GRUB 設定を再生成します。

        # grubby --args="iommu=pt" --update-kernel=ALL
      2. ホストを再起動します。
    • ARM 64 ホストでは、必要な SMMU 機能がデフォルトで有効になっています。パフォーマンスを向上させるには、iommu=pt パラメーターも設定します。

      1. iommu=pt パラメーターで GRUB 設定を再生成します。

        # grubby --args="iommu=pt" --update-kernel=ALL
      2. ホストを再起動します。

手順

  1. オプション: ネットワークデバイスで使用できる VF の最大数を確認します。これを実行するには、次のコマンドを使用して、eth1 を SR-IOV 互換のネットワークデバイスに置き換えます。

    # cat /sys/class/net/eth1/device/sriov_totalvfs
    7
  2. 次のコマンドを実行して、Virtual Function (VF) を作成します。

    # echo VF-number > /sys/class/net/network-interface/device/sriov_numvfs

    上記コマンドでは、以下のようになります。

    • VF-number には、PF に作成する VF の数を入力します。
    • network-interface は、VF が作成されるネットワークインターフェイスの名前に置き換えます。

    以下の例では、eth1 ネットワークインターフェイスから 2 つの VF を作成します。

    # echo 2 > /sys/class/net/eth1/device/sriov_numvfs
  3. VF が追加されたことを確認します。

    # lspci | grep Ethernet
    82:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
    82:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
    82:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
    82:10.2 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
  4. VF の作成に使用したネットワークインターフェイス用の udev ルールを作成して、作成した VF を永続化します。たとえば、eth1 インターフェイスの場合は、/etc/udev/rules.d/eth1.rules ファイルを作成し、以下の行を追加します。

    ACTION=="add", SUBSYSTEM=="net", ENV{ID_NET_DRIVER}=="ixgbe", ATTR{device/sriov_numvfs}="2"

    これにより、ホストの起動時に ixgbe ドライバーを使用する 2 つの VF が eth1 インターフェイスで自動的に利用できるようになります。永続的な SR-IOV デバイスが必要ない場合は、この手順を省略します。

    警告

    現在、前述の設定は、Broadcom NetXtreme II BCM57810 アダプターで VF を永続化しようとした場合、正しく機能しません。また、このアダプターに基づく VF を Windows 仮想マシンに接続することは、現在信頼性がありません。

  5. 新しく追加した VF インターフェイスデバイスの 1 つを、実行中の仮想マシンにホットプラグします。

    # virsh attach-interface <vm_name> hostdev 0000:82:10.0 --mac 52:54:00:00:01:01 --managed --live --config

    --live オプションは、再起動後まで設定を維持することなく、実行中の仮想マシンにデバイスを接続します。--config オプションは、設定の変更を永続化します。シャットダウンした仮想マシンにデバイスを接続する場合は、--live オプションを使用しないでください。

    --mac オプションは、接続するインターフェイスの MAC アドレスを指定します。インターフェイスの MAC アドレスを指定しない場合、52:54:00 で始まる永続的な疑似ランダムアドレスが仮想マシンによって自動的に生成されます。

    重要

    仮想マシンの XML 設定ファイルの <hostdev> セクションにデバイスエントリーを手動で追加して SR-IOV VF を仮想マシンに割り当てる場合、MAC アドレスが永続的に割り当てられず、通常、ホストを再起動するたびにゲストのネットワーク設定を再設定する必要があります。

    このような複雑化を回避するには、この手順で説明されているように、virsh attach-interface コマンドを使用してください。

検証

  • 手順が成功すると、ゲストオペレーティングシステムが新しいネットワークインターフェイスコントローラーを検出します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る