我在同时运行 KVM 实例时遇到了问题,我只能将其描述为干扰。当我单独运行一个虚拟机时,我可以轻松地与其交互,无论是通过显示的 sdl 控制台还是通过 ssh。但是,一旦我运行两个虚拟机,我就无法:
- 在 sdl 控制台登录;正确的用户名/密码在第一次尝试时被声明为无效,并且进一步的尝试回显我没有输入的文本,例如“r^]o^]o^]t^]”
- 完成与受影响实例的 ssh 连接
我的客户端机器是 Debian Squeeze,主机是 Arch Linux 2.6.39-ARCH,带有 qemu-kvm 0.14.1。以下是我运行两个相互干扰的虚拟机的方式:
#!/bin/sh
for f in puppet loadbalance # app0 db_master0 db_slave0 jenkins
do
qemu-kvm -drive file=$f.qcow2,if=virtio -boot c -netdev type=vde,id=tiny \
-device virtio-net-pci,netdev=tiny -name $f &
done
如果我运行带有标志的机器,-nographic
我能够完成 ssh 登录,但最终(5 分钟内)除了一个 ssh 控制台之外的所有 ssh 控制台都会经历非常高的延迟。一旦“聚焦”,该虚拟机就会立即响应,而其他虚拟机则会变得延迟很高。虚拟网络周围的 ping 会失败,包括“聚焦”机器与所有其他机器之间以及来自我的主机之间的 ping。这是怎么回事?
答案1
检查所有实例是否都有唯一的 MAC 地址。听起来好像存在 MAC 地址冲突问题。
答案2
-netdev tap,fd=21,id=hostnet0,vhost=on,vhostfd=23 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:87:ec:d3,bus=pci.0,addr=0x3
这是我用于网络的。不明白为什么你要使用 vde,因为桥接工作得很好。特别是因为它不推荐用于 QEMU:
VDE VDE 网络后端使用虚拟分布式以太网基础设施来连接客户机。除非您明确知道要使用 VDE,否则它可能不是最好的后端。