运行 KVM 的 centos5 主机上的 centos5 VM 网络很慢

运行 KVM 的 centos5 主机上的 centos5 VM 网络很慢

我按照此处的指南设置了 KVM:

http://www.cyberciti.biz/faq/centos-rhel-linux-kvm-virtulization-tutorial/

我设置了一个桥接网络,它运行良好,只是传输速度为 200KB/s,而不是我在主机上获得的千兆速度。

我尝试编辑来宾网络设置以设置“model=virtio”

http://wiki.libvirt.org/page/Virtio

但这只是将 ifconfig-eth0 移至虚拟机中的 ifconfig-eth0.bak,网络根本不起作用。我尝试将 ifconfig-eth0 移回并启动 eth0,这有效,但现在传输速度约为 60KB/s

我不知道还能尝试什么。任何建议都将不胜感激。

答案1

我认为您必须配置 iptables 以允许所有流量通过网桥转发:

$ sudo iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
$ sudo service iptables save
$ sudo service iptables restart

并阻止 iptables 规则处理桥接流量,这提高了桥梁的性能. 在 /etc/sysctl.conf 中附加以下行:

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

然后重新加载用sysctl配置的内核参数:

$ sudo sysctl -p /etc/sysctl.conf

并重新启动 libvirt 守护进程。

$ sudo service libvirtd reload

您可以在这里找到更多使用 libvirt 桥接网络我在这里描述了整个过程如何在 CentOS 6.2 上使用桥接网络安装 KVM 和 libvirt

答案2

virtio 通常可为您带来最佳性能,但有些硬件无法很好地与其配合使用 - 尝试将型号切换到 e1000(根据您所说的假设为千兆位 NIC)并看看它是否运行得更好。

编辑:主机上的桥接配置是什么样的?我熟悉在 Debian/Ubuntu 端而不是 RH/CentOS 端执行此操作,但对于我们来说,典型的 /etc/network/interfaces 设置如下所示:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    bridge_ports eth0
    bridge_stp off
    bridge_maxage 12
    bridge_fd 9
    bridge_hello 2

另外,您的客户是否完全虚拟化(可以使用 libvirt 中的 --hvm 开关来确保)?

最后,如果您有其他可用的 NIC 可供安装进行试验,您可以安装它以查看是否有区别。如果没有,您可能需要购买一个 - 我们很幸运使用了相对便宜的英特尔台式机千兆位 NIC。

答案3

使用 virtio 将提供更快的速度。您运行的究竟是哪个版本?

相关内容