Ars*_*nko 4 networking kvm virtual-machine qemu
在 Ubuntu 上创建虚拟机时,我可以在虚拟网络接口的三种设备模型之间进行选择:virtio、e1000和rtl8139。
三者有什么区别?换句话说,我在选择设备型号时应该考虑什么?
谷歌搜索“virtio vs e1000 vs rtl8139”并没有多大帮助。结果的前两页充满了官方文档,不多说,博客文章归结为“使用选项N,因为我尝试过它,它很棒”。我发现的唯一有用的资源是一个讨论,它似乎表明e1000很慢,但与virtio相比具有最大的兼容性。讨论似乎暗示e1000在某些时候比rtl8139更受欢迎,但没有说明原因。
tel*_*coM 13
在设置虚拟机的上下文中,e1000模拟 Intel NIC,rtl8139模拟 Realtek NIC,并且virtio是半虚拟化驱动程序,即它“知道”它在 VM 中运行,并且基本上只是在 VM 和以最直接的方式主持。
如果您在 VM 中运行旧版操作系统,则可能需要根据旧版操作系统支持的 NIC 来选择虚拟 NIC。英特尔e1000甚至为相当古老和晦涩的操作系统提供驱动程序。但是物理e1000网卡的硬件相当复杂,所以会因为需要模拟而产生一定的开销。
Realtek 8139 显然在硬件方面非常简单,因此在 VM 中进行仿真可能比在 Intel e1000 中更容易。但另一方面,简单性也意味着虚拟机内部的操作系统可能需要做一些额外的工作来满足 NIC 模拟的条件,而实际的主机 NIC 可以在硬件中完成一些工作。
但是,如果您在 VM 内运行的任何内容都支持virtio,则它可能会为您提供最佳性能(除了专为 VFIO 直通/SR-IOV 设计的主机 NIC 硬件),因为它允许 VM 简单地跳过大多数相关步骤模拟虚拟网卡并控制虚拟硬件,主机利用实际物理网卡的硬件功能来最大程度地利用虚拟机的流量。