现在使用这个:

现在使用这个:

我的机器上运行着一个 KVM 虚拟实例。我安装了 VirtualBox;但是,当我尝试启动 VirtualBox VM 机器时,出现了以下错误:

VERR_VMX_IN_VMX_ROOT_MODE

根据这个错误信息我搜索了一下,问题是KVM已经安装好了。

我知道我可以通过删除一些模块然后使用 VirtualBox 在它们之间切换。但我的问题是如何让它们同时运行?

答案1

您无法让它们协同工作。它们都需要访问 CPU 的虚拟化功能,但该功能并非设计为供多个虚拟机管理程序同时使用。

你可以尝试禁用 Virtualbox 的 VT-X 支持,这样它就不会尝试使用硬件虚拟化。编辑虚拟机的设置,在系统选项卡中找到“启用 vt-x/amd-v”复选框并取消标记。我不保证它会起作用,即使它起作用,它也会使用 Virtualbox 的软件虚拟化,因此您的虚拟机会变慢。

如果可能的话,我强烈建议您只选择一个虚拟机管理程序并将其用于所有虚拟机。

答案2

你唯一真正的选择是一个顺序问题:

如果你启动并打开 VirtualBox 机器,请等待它完成启动并然后启动 KVM 计算机(从 virt-manager 或 virsh)它应该可以正常工作。以相反的顺序启动机器将不是工作。

加载和卸载kvmkvm_intel模块将满足 VirtualBox 的要求。可以找到一种更流畅的基于脚本的方法这里

编辑:自从升级到 Ubuntu 13.10 以来,这个解决方案(启动顺序)似乎不再适用于我。YMMV。

答案3

正如上面的答案所说,

在 Linux 环境中安装 Qemu/KVM、VMware Workstation 和 Virtualbox在同一个虚拟机管理程序上是可能的。

所以问题不在于安装

一旦全部安装完毕,您将获得以下内容:

lsmod | egrep 'vm[nmw]|vbox|kvm'

    vboxpci                28672  0
    vboxnetadp             28672  0
    vboxnetflt             32768  0
    vboxdrv               483328  3 vboxnetadp,vboxnetflt,vboxpci
    vmnet                  61440  13
    vmw_vsock_vmci_transport    32768  0
    vmw_vmci               81920  1 vmw_vsock_vmci_transport
    vmmon                 102400  0
    vsock                  40960  1 vmw_vsock_vmci_transport
    kvm_amd                94208  9
    kvm                   700416  1 kvm_amd
    irqbypass              16384  1 kvm

===

Qemu/KVM 使用的所有行(包括 kvm -->)

VirtualBox 使用的所有行(包括 vbox -->)

VMware 的其他产品(参见:

ll /lib/vmware/modules/source/

     total 5460
     -rw-r--r--. 1 root root  870400 Mar 30 20:19 vmblock.tar
     -rw-r--r--. 1 root root 1341440 Mar 30 20:20 vmci.tar
     -rw-r--r--. 1 root root 1443840 Mar 30 20:20 vmmon.tar
     -rw-r--r--. 1 root root  768000 Mar 30 20:20 vmnet.tar
     -rw-r--r--. 1 root root 1136640 Mar 30 20:20 vsock.tar

对于源:安装时编译的模块)

=======

现在使用这个:

就像说的那样路先生(上面的第二个答案)同一时刻只有一个可以使用 Intel-VT 或 AMD-V 如果您为 64 位虚拟机启动 Qemu/KVM 的使用,那么 VirtualBox 同时无法运行 64 位机器,因为 VirtualBox 确实需要 64 位 VM 的硬件加速。

为了阐明答案大卫·贝尔德多于:

使用 AMD Atlon X2 或 X4,或 AMD FX 8 核,或使用 Intel Core I5 或 I7(我可以尝试的机器),

  ==>   VirtualBox 5.2.10

在 KVM 锁定 Intel-VT 或 AMD-V 访问后,无法在 Linux 上同时运行额外的 64 位虚拟机!!!

尽管

  ==>  VMware player or workstation 14.1

将会,只要您取消选中 Intel-VT 或 AMD-V 的使用!!!

现在忘记 Qemu/KVM,我尝试在 VirtualBox 中启动一个 64 位 VM,然后在 VMware 中同时启动第二个 64 位 VM,或者以相反的顺序:

只有第一个能够以默认配置运行!!!!

但禁用硬件加速,是否可行,正如 米格里夫斯???

在 VirtualBox-5.1 中:

VM 属性 --> 系统 --> 加速:对于 64 位 VM 机器,无法禁用硬件加速:

例如,如果您在给定 64 位 VM 机的配置菜单中取消选中“硬件加速”,VirtualBox 配置器将提出抗议,并自动重新启用“硬件加速”。(通过返回同一菜单进行检查!!)

在 VMware 14 中:

虚拟机-->硬件:处理器-->您可以取消选中虚拟化引擎

然后你的 64 位虚拟机就可以启动了,即使你的 Intel-VT 或 AMD-V CPU 功能被 KVM 或 VirtualBox 锁定

因此,VMware 在今天的最新发布中能够为 64 位虚拟机模拟 Ring 0 指令,就像二十多年前它在 32 位机器上所做的那样 !!!! 老实说,如果没有基准测试,很难注意到 64 位 VM VMware 机器在有或没有硬件加速的情况下运行时的性能差异!

===

现在我们可以预期,有一天,kvm 和 VirtualBox 也将能够为 64 位机器模拟 Ring 0 CPU 指令 !!!!!

答案4

好吧,至少目前 VBox 和 VMware 都将与 KVM 并行运行。不过,您必须禁用除 KVM 之外的所有虚拟机管理程序的硬件加速(禁用 VT,启用二进制翻译)。然后,其他虚拟机管理程序将以软件模式运行,而 KVM 将愉快地单独使用任何 VT 设施。

相关内容