我有两个虚拟机,它们在不同的虚拟化平台(VMware 和 KVM)上运行。现在我想让这两个进程在一台主机上运行。我可以在一个主机上同时运行 VMware 和 KVM 吗?
答案1
简而言之 - 否。两个平台都使用自己的 kmod 来管理 VT 扩展,并且该模块需要独占性。
答案2
正如 P Marecki 所说,是的,您可以并行运行它们。具体来说,VMware 工作站可以与 KVM 机器并行启动虚拟机。但是,这意味着只有 KVM 才允许硬件支持 (VT)。在 VMware 中,您必须明确禁用此功能并启用“二进制翻译”。可以找到一篇关于如何执行此操作的旧文章,但仍然有效这里(我们的同事应该更积极一些,调查寻找答案而不是只是责备别人)。
此外,您还可以对 VBox 执行相同操作,如果您禁用 VT 并启用二进制转换,它也可以与 KVM 共存。不过,所有这些都会严重损害性能。
如果您想让 KVM 以这种方式工作,那您就不能。您必须仅使用 QEMU(不带 qemu-kvm),并使用一些技巧使其在没有 VT 的情况下运行。
答案3
您可以在同一台机器上安装任意数量的虚拟机管理程序(VirtualBox、KVM、VMware Player/Workstation 等),但是如果它们使用硬件加速(在 Intel 芯片上称为 VT-x),则您一次只能在其中一个上运行虚拟机。否则,它们安装的内核模块将相互干扰,因为它们会尝试响应相同的硬件虚拟化VMEXIT
事件。
列出的所有虚拟机管理程序做使用 VT-x,因此您必须有选择地禁用您不使用的那些,这样它们就不会干扰您当前在其中运行虚拟机的那个。以下是您可以用来禁用/启用每个流行 Linux 虚拟机管理程序的内核模块的命令(在 Ubuntu 14.04 上测试):
VMware
# to disable
sudo /etc/init.d/vmware stop
# to enable
sudo /etc/init.d/vmware start
虚拟盒
# to disable
sudo /etc/init.d/virtualbox stop
# to enable
sudo /etc/init.d/virtualbox start
虚拟机
# to disable
sudo rmmod kvm_intel
sudo rmmod kvm
# to enable
sudo insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm.ko
sudo insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm-intel.ko
答案4
你的问题缺乏细节和思考。你从这样的网站获得的有用信息量通常与你描述问题所花的工作量成正比。
回答你提出的问题:不是。虚拟机主机是独有的,就像操作系统一样。你可以使用一些 VM 系统,在一个虚拟机系统中运行另一个虚拟机,但这样做很疯狂。
明智的做法是:选择一个 VM 系统,在其中运行两个 VM 客户机。有工具可以将 KVM 磁盘映像转换为 VMware,反之亦然。