我按照此处的指南设置了 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 将提供更快的速度。您运行的究竟是哪个版本?