Virtualbox で virtio を有効にする方法は?

Virtualbox で virtio を有効にする方法は?

eth0私の VM (Ubuntu 12.04) には、およびとして認識される 2 つのネットワーク インターフェイスが接続されていますeth1

パフォーマンスを向上させるためにカードをvirtioに変更したいので、VM設定両方のアダプタのタイプを次のように変更します準仮想化ネットワーク (virtio-net)

しかし、再起動後、パフォーマンスは同じであるように見えますが、はるかに遅くなっているとは言えません。出力を確認すると、とのほかに別のインターフェイスがifconfigあります。virbr0eth0eth1

eth0VirtualBox でタイプを変更すると、virtio アダプターが作成され、アダプターになると思いましたeth1。これは、後でインターネットで見つけたいくつかのページで確認されました。アダプター タイプを変更するだけで十分であり、速度がすぐに向上すると書かれていました。しかし、私の場合はそうではありませんでした。

動作させるためにアダプタをどのように構成すればよいですか?

構成は次のようになります。eth0外部ネットワークへのブリッジです。eth1ホストオンリーアダプタです

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:62:0d:bd
          inet addr:10.184.130.70  Bcast:10.184.130.255  Mask:255.255.240.0
          inet6 addr: fe80::a00:27ff:fe64:dbd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:411321 errors:0 dropped:2 overruns:0 frame:0
          TX packets:118875 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:298154310 (298.1 MB)  TX bytes:65017532 (65.0 MB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9d:6b:df
          inet addr:172.17.0.6  Bcast:172.17.255.255  Mask:255.255.0.0
          inet6 addr: fe80::a00:27ff:fe8d:6bdf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12445 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13566 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1275663 (1.2 MB)  TX bytes:8705940 (8.7 MB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8538 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8538 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2286738 (2.2 MB)  TX bytes:2286738 (2.2 MB)

virbr0    Link encap:Ethernet  HWaddr 76:ee:57:37:78:7c
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

実行しましたlsmod | grep virtが、結果は表示されません。どちらもinsmod表示されませんvirtio_net

$ insmod virt<tab><tab>
virtio_balloon  virtio_console  virtio_mmio     virtio-rng      virtual

現在のカーネルLinux vmdev 3.2.0-124-generic #167-Ubuntu SMP Fri Mar 3 15:26:21 UTC 2017 i686 i686 i386 GNU/Linux。virtio ドライバーの読み込みを有効にするために必要なオプションはありますか?

ファイルに/etc/udev/rules.d/70-persistent-net.rulesは、アダプタのMACアドレスを再生成するときのコメントを除いて、virtioに関連するものは何も表示されません。

私は多くのテストを行いましたiperfが、Intel PRO/1000 アダプタの結果は 250 ~ 350 Mbps 程度であるのに対し、virtio-net カードの結果は常に 100 ~ 150 Mbps の間で、私の期待をはるかに下回っています。そのため、解決策が見つかるまで、今すぐ e1000 カードに戻します。

インターネット上で関連する問題をいくつか見ましたが、今のところ解決方法はありません


編集:

私のプロジェクトは新しい64ビットUbuntu 14.04 VM(3.13.0-86-generic #131-Ubuntu SMP Thu May 12 23:33:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux)に更新されましたが、結果は同じです。virtioは依然としてIntel 1000よりもはるかに遅いです。

答え1

マニュアル第6章 仮想ネットワーク:

「準仮想化ネットワーク アダプタ (virtio-net)」は特別です。これを選択すると、VirtualBox は一般的なネットワーク ハードウェア (一般的なゲスト オペレーティング システムですぐにサポートされている) を仮想化しません。代わりに、VirtualBox は、仮想化環境用の特別なソフトウェア インターフェイスがゲストによって提供されることを期待します。これにより、ネットワーク ハードウェアのエミュレーションの複雑さが回避され、ネットワーク パフォーマンスが向上します。バージョン 3.1 以降、VirtualBox は、オープン ソース KVM プロジェクトの一部である業界標準の「virtio」ネットワーク ドライバをサポートします。

関連情報