QEMU VMはvirtioドライバを使用し、ホストシステムにカーネルサポート/モジュールはありませんか?

QEMU VMはvirtioドライバを使用し、ホストシステムにカーネルサポート/モジュールはありませんか?

QEMUで実行されているWin 8.1 VMがディスク(ネイティブイメージフォーマット)とネットワークカードのVirtIOの利点の両方を取得できることを確認しようとしました。私は読んだこの関連投稿そして、QEMU人間-機械インターフェースにアクセスし、以下を発見しました。

bus:  virtio-bus
    type virtio-pci-bus
    dev: virtio-blk-device, id ""
         drive = "virtio0"
....
bus:  virtio-bus
    type virtio-pci-bus
    dev: virtio-net-device, id ""

これは、WindowsデバイスマネージャがRed Hat VirtIO SCSIディスクデバイスとRed Hat VirtIOイーサネットアダプタを表示するのと同じように、VirtIOが使用されているようです。ただし、Linuxホストでlsmodを実行すると、ロードされたvirtioモジュールは表示されず、virtioカーネル構成を確認すると、組み込みのvirtio、virtio_net、またはvirtio_blkは表示されません。

zcat /proc/config.gz | grep -i virtio
CONFIG_NET_9P_VIRTIO=m
CONFIG_VIRTIO_BLK=m
CONFIG_SCSI_VIRTIO=m
CONFIG_VIRTIO_NET=m
CONFIG_CAIF_VIRTIO=m
CONFIG_VIRTIO_CONSOLE=m
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_DRM_VIRTIO_GPU=m
CONFIG_VIRTIO=m
# Virtio drivers
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=m
CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_MMIO=m
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y

次のコマンドを使用して仮想マシンを実行します。

qemu-system-x86_64 -enable-kvm -cpu host -smp cores=2,threads=1 -drive file=filename.raw,index=0,media=disk,if=virtio,cache=none,format=raw -net nic,model=virtio,macaddr=xx:xx:xx:xx:xx:xx -net bridge,br=br0 -m 4096 -localtime

私がここで何を見逃しているのでしょうか?カーネルに組み込まれたpci_virtio_legacyサポートを介して動作しますか?それでは、別のバリエーションを使用する方が速いでしょうか?それでは、VMを起動する前にvirtio、virtio_net、およびvirtio_blkモジュールがロードされていることを確認できますか?

答え1

ビティオリアホストカーネルではなく、qemu自体にあります。 qemuがゲストvirtioからパケットを受信して​​います。フロントエンドネットワークドライバを要求されたブリッジデバイスに送信します。

ホストカーネルには次のものがあります。仮想ホストドライバはバックエンド機能の一部、つまりパケット転送を最適化します。

バラよりこのブログ投稿

関連情報