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

时间:2013-06-14 20:51:01

标签: vagrant

在Windows 7 64位上尝试启动VM(Ubuntu 32位)。尽管在我的Vagrantfile中添加了modify vm命令,但我无法让我的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

使用此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

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

3 个答案:

答案 0 :(得分:78)

vb.customize ["modifyvm", :id, "--ioapic", "on"]添加到您的Vagrant文​​件中的config.vm.provider块。

查看虚拟框documentation,它提到:

  

“注意64位客户机操作需要启用I / O APIC   系统,尤其是Windows Vista;如果你愿意,也需要它   在虚拟机中使用多个虚拟CPU。“

答案 1 :(得分:22)

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

运行或搜索“Windows功能”,然后选择“打开或关闭Windows功能”。

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

然后,您可以使用以下命令使您的Vagrantfile启动非常用户友好:

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2404"
    vb.cpus = "2"
  end

假设您希望运行两个核心,并且只需要超过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

答案 2 :(得分:6)

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

config.vm.provider "virtualbox" do |v|
  v.memory = 1024
  v.cpus = 2
end

vagrant documentation中查看您使用的特定提供商。