web-dev-qa-db-ja.com

KVMゲストにvirtioを使用していますか?

私のKVMゲストの1つで、次のコマンドを入力すると、次のようになります。

/sbin/lsmod | grep vi
virtio_balloon          3692  0 

それは、私がvirtioを使用しているということですか?

更新:

入力すると

cat "/boot/config-`uname -r`" | grep -i vir

私は見えます

CONFIG_PARAVIRT_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_SPINLOCKS=y
CONFIG_PARAVIRT_CLOCK=y
# CONFIG_PARAVIRT_DEBUG is not set
CONFIG_VIRT_TO_BUS=y
CONFIG_NET_9P_VIRTIO=m
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=m
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
# CONFIG_FB_VIRTUAL is not set
CONFIG_SND_VIRMIDI=m
CONFIG_SND_VIRTUOSO=m
# CONFIG_DEBUG_VIRTUAL is not set
CONFIG_VIRTUALIZATION=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=m

だから私はすでにvirtioを使っているように聞こえますか?

7
Howard

KVMは、数ビットのハードウェア用の準仮想化ドライバーを提供します。これはメモリバルーンドライバーです。

特に、virtio_net virtioネットワークドライバーを使用する場合、およびvirtio_blkブロックデバイス(ディスク)ドライバーを使用する場合。後者の場合、ディスクは/dev/vda の代わりに /dev/sda

あなたの場合、virtioディスクとネットワークドライバーはモジュールとしてではなくカーネルにコンパイルされているので、lsmodでそれらを見ることができません。

CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y

重要性の低い他のvirtioドライバーもいくつかシステムに存在し、カーネルに直接コンパイルされます(VIRTIO_PCI、準仮想化PCIバスなど)。

6
Michael Hampton

あなたが見ることができるようにあなたは持っています:

CONFIG_VIRTIO_BALLOON=m

これは、モジュールとしてコンパイルされているため、lsmodを介して表示できることを意味します。さらに、あなたは持っています:

CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y

つまり、カーネル内でコンパイルされるため、lsmodはそれらを報告しません。

したがって、ゲストにはvirtioドライバーがあります。

  • blk:ブロックデバイス、別名ディスク;
  • net:ネットワークデバイス。
  • balloon:メモリのバルーニング。物理的なホストメモリよりも大きいすべてのゲストに合計最大メモリを割り当てることができるという事実。もちろん、すべてのゲストがそれぞれのメモリをすべて使用しているわけではない限り、これは機能します。 KVMは、あるゲストの未使用のメモリを使用して、別のより要求の厳しいゲスト、別名バルーンにフィードします。
  • pci:確かではありませんが、PCIパススルーサポートはあると思います。 VirtualBoxを使用すると、ゲストに公開されるイーサネットコントローラーは、virtio_netドライバーではなくこのドライバーを使用します。
  • console:KVMでシリアルコンソールを設定できます。これは、virsh concoleドメインからアクセスできます。優れた機能(Linuxゲスト用)。ネットワークがクラ​​ッシュすると、VM VNCがなくても(したがって、最小の帯域幅とC&Pで)ほぼ完全にアクセスでき、SSHアクセスが妨げられます。
  • リング:これが何かわからない
7
Huygens