我是否使用virtio作为我的KVM guest?

在我的一个KVM guest中,当我input以下命令时,我得到以下内容

/sbin/lsmod | grep vi virtio_balloon 3692 0 

那么这是否意味着我正在使用virtio?

更新:

当我input

 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了?

KVM为几个硬件提供准虚拟化驱动程序; 这个特殊的是内存气球驱动程序。

尤其是,在使用virtionetworking驱动程序时应该看到virtio_net ,而在使用块设备(磁盘)驱动程序时应该看到virtio_net 。 在后一种情况下,您的磁盘将是/dev/vda而不是/dev/sda

在你的情况下,virtio磁盘和networking驱动程序被编译进内核,而不是作为模块,所以你不会看到它们与lsmod

 CONFIG_VIRTIO_BLK=y CONFIG_VIRTIO_NET=y 

其他几个不太重要的virtio驱动程序也存在于您的系统中,并直接编译到内核中(例如VIRTIO_PCI,半虚拟化的PCI总线)。

正如你可以看到你有:

 CONFIG_VIRTIO_BALLOON=m 

这意味着它被编译为一个模块,因此通过lsmod可见。 此外,你有:

 CONFIG_VIRTIO_BLK=y CONFIG_VIRTIO_NET=y 

这意味着它们在内核中编译,因此lsmod不会报告它们。

所以你的客人有virtio司机:

  • blk:块设备,aka磁盘;
  • networking:networking设备;
  • 气球:内存膨胀,事实上,你可以有一个总的最大内存分配给所有的客人更大的物理主机内存。 这当然只要不是所有的客人都消耗了他们各自的记忆。 KVM使用一个客人的未使用内存来给另一个更苛刻的客人,也就是气球。
  • PCI:我想PCI支持,但我不知道。 使用VirtualBox,暴露给客户端的以太网控制器使用这个驱动程序而不是virtio_net。
  • 控制台:您可以在KVM中configuration串行控制台。 这可以通过访问virsh concole域。 一个很棒的function(对于Linux客户)。 当networking崩溃时,即使没有VNC(因此只有最小的带宽和C&P可用),您几乎可以完全访问虚拟机,防止了SSH访问。
  • 戒指:不知道这是什么