如何使用具有两个CPU的VirtualBox在Vagrant中创建VM?

nik*_*hil 69 vagrant

在Windows 7 64位尝试启动VM(Ubuntu 32位).尽管modify vm在我的Vagrantfile中添加了命令,但我无法让我的VM显示两个内核.我的Vagrant版本是1.2.2.

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "precise32"
  config.vm.box_url = "http://files.vagrantup.com/precise32.box"

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
    vb.customize ["modifyvm", :id, "--cpus", "2"]   
  end  
end
Run Code Online (Sandbox Code Playgroud)

使用此Vagrantfile,我发出vagrant up命令.然后我发出vagrant ssh后面的lscpu产量:

Architecture:          i686
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 58
Stepping:              9
CPU MHz:               2565.513
BogoMIPS:              5131.02
L1d cache:             32K
L1d cache:             32K
L2d cache:             6144K
Run Code Online (Sandbox Code Playgroud)

我认为CPU应该显示2,所以我的VM现在只有一个CPU.如何在运行时显示2个CPU lscpu

nik*_*hil 79

添加vb.customize ["modifyvm", :id, "--ioapic", "on"]config.vm.providerVagrantfile中的块.

查看VirtualBox 文档,它提到:

"注意64位客户机操作系统(尤其是Windows Vista)需要启用I/O APIC;如果要在虚拟机中使用多个虚拟CPU,则还需要它."

  • @ Rob3:从您读取该错误消息开始.错误消息并未说明"它已损坏".它被指定帮助您理解,错误.因此,错误消息最重要的是阅读它.此外,当您寻求帮助而不发布错误消息时,没有人会尝试帮助您. (2认同)

bri*_*itt 25

如果您使用Oracle Virtualbox运行vagrant,那么最常见的问题是Windows 7,8或10中的Hyper-V.这将限制为32位和一个cpu.

运行或搜索"Windows功能",然后选择"打开或关闭Windows功能".

在复选框中确保Hyper-V已关闭 - 您无法通过Microsoft Hyper-V为虚拟机启用VT-x.

然后,您可以通过以下方式使您的Vagrantfile启动非常用户友好:

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2404"
    vb.cpus = "2"
  end
Run Code Online (Sandbox Code Playgroud)

假设您希望运行两个内核,并且只需要超过2 GB的内存

ps - 别忘了添加端口转发.对于PHPStorm(xdebug,mysql和web),我使用:

  config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.network "forwarded_port", guest: 3306, host: 3306
  config.vm.network "forwarded_port", guest: 9000, host: 9000
Run Code Online (Sandbox Code Playgroud)


meh*_*met 6

您似乎没有提到您正在使用哪个提供商.从Vagrant 1.7开始,许多VM提供程序(例如VirtualBox,HyperV)在Vagrantfile中支持以下配置:

config.vm.provider "virtualbox" do |v|
  v.memory = 1024
  v.cpus = 2
end
Run Code Online (Sandbox Code Playgroud)

vagrant文​​档中查看您使用的特定提供程序.