Vagrant 中该类型的存储控制器太多

问题描述 投票:0回答:3

我将创建 7 台服务器,每台服务器有 2 个磁盘。这是流浪者文件。这是我第一次配置多机器环境。因此我没有任何从头开始创建环境的经验。

这是我遇到的错误

Command: ["storagectl", "cc27c05a-63da-4e02-ab73-86843032e387", "--name", "SATA Controller", "--add", "sata"]

Stderr: VBoxManage: error: Too many storage controllers of this type
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component StorageController, interface IStorageController, callee nsISupports
VBoxManage: error: Context: "AddStorageController(Bstr(pszCtl).raw(), StorageBus_SATA, ctl.asOutParam())" at line 1044 of file VBoxManageStorageController.cpp

Vagrafile

Vagrant.configure(2) do |config|

    config.vm.box = "ubuntu/trusty64"

    config.vm.provider "virtualbox" do |vb|
        vb.customize ["modifyvm", :id, "--memory", "2048", "--cpus", "1"]
        vb.customize ["storagectl", :id, "--name", "SATA Controller", "--add", "sata"]
    end

    config.vm.define "machine1" do |machine1|

        machine1.vm.hostname = "machine1"

        machine1.vm.provider "virtualbox" do |vb|
            vb.customize ["createhd",  "--filename", "machine1_disk0", "--size", 4096]
            vb.customize ["createhd",  "--filename", "machine1_disk1", "--size", 4096]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--type", "hdd", "--medium", "machine1_disk0.vdi"]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 2, "--type", "hdd", "--medium", "machine1_disk1.vdi"]
        end

        machine1.vm.network "private_network", ip: "192.168.10.10"
        machine1.vm.network "private_network", ip: "192.168.10.15"
    end

    config.vm.define "machine2" do |machine2|

        machine2.vm.hostname = "machine2"

        machine2.vm.provider "virtualbox" do |vb|
            vb.customize ["createhd",  "--filename", "machine2_disk0", "--size", 4096]
            vb.customize ["createhd",  "--filename", "machine2_disk1", "--size", 4096]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--type", "hdd", "--medium", "machine2_disk0.vdi"]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 2, "--type", "hdd", "--medium", "machine2_disk1.vdi"]
        end

        machine2.vm.network "private_network", ip: "192.168.10.20"
        machine2.vm.network "private_network", ip: "192.168.10.25"
    end

    config.vm.define "machine3" do |machine3|

        machine3.vm.hostname = "machine3"

        machine3.vm.provider "virtualbox" do |vb|
            vb.customize ["createhd",  "--filename", "machine3_disk0", "--size", 4096]
            vb.customize ["createhd",  "--filename", "machine3_disk1", "--size", 4096]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--type", "hdd", "--medium", "machine3_disk0.vdi"]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 2, "--type", "hdd", "--medium", "machine3_disk1.vdi"]
        end

        machine3.vm.network "private_network", ip: "192.168.10.30"
    end

    config.vm.define "machine4" do |machine4|

        machine4.vm.hostname = "machine4"

        machine4.vm.provider "virtualbox" do |vb|
            vb.customize ["createhd",  "--filename", "machine4_disk0", "--size", 4096]
            vb.customize ["createhd",  "--filename", "machine4_disk1", "--size", 4096]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--type", "hdd", "--medium", "machine4_disk0.vdi"]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 2, "--type", "hdd", "--medium", "machine4_disk1.vdi"]
        end

        machine4.vm.network "private_network", ip: "192.168.10.40"
    end

    config.vm.define "machine5" do |machine5|

        machine5.vm.hostname = "machine5"

        machine5.vm.provider "virtualbox" do |vb|
            vb.customize ["createhd",  "--filename", "machine5_disk0", "--size", 4096]
            vb.customize ["createhd",  "--filename", "machine5_disk1", "--size", 4096]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--type", "hdd", "--medium", "machine5_disk0.vdi"]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 2, "--type", "hdd", "--medium", "machine5_disk1.vdi"]
        end

        machine5.vm.network "private_network", ip: "192.168.10.50"
    end

    config.vm.define "machine6" do |machine6|

        machine6.vm.hostname = "machine6"

        machine6.vm.provider "virtualbox" do |vb|
            vb.customize ["createhd",  "--filename", "machine6_disk0", "--size", 4096]
            vb.customize ["createhd",  "--filename", "machine6_disk1", "--size", 4096]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--type", "hdd", "--medium", "machine6_disk0.vdi"]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 2, "--type", "hdd", "--medium", "machine6_disk1.vdi"]
        end

        machine6.vm.network "private_network", ip: "192.168.10.60"
    end

    config.vm.define "machine7" do |machine7|

        machine7.vm.hostname = "machine7"

        machine7.vm.provider "virtualbox" do |vb|
            vb.customize ["createhd",  "--filename", "machine7_disk0", "--size", 4096]
            vb.customize ["createhd",  "--filename", "machine7_disk1", "--size", 4096]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--type", "hdd", "--medium", "machine7_disk0.vdi"]
            vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 2, "--type", "hdd", "--medium", "machine7_disk1.vdi"]
        end

        machine7.vm.network "private_network", ip: "192.168.10.70"
    end

end
virtual-machine vagrant virtualbox vagrantfile
3个回答
1
投票

问题是您的盒子已经有现有的 SATA 存储控制器,因此您不应尝试在配置开始时添加新控制器(您无法添加多个 SATA 存储控制器)。


0
投票

如果您的盒子已包含 SATA 控制器,您可以将控制器类型更改为 SAS:

vb.customize ["storagectl", :id, "--name", "SAS Controller", "--add", "sas", '--portcount', 2]

并更改附加到其上的每个磁盘的控制器名称参考:

vb.customize ["storageattach", :id, "--storagectl", "SAS Controller", "--port", 1, "--type", "hdd", "--medium", "machine7_disk0.vdi"]

使用 SAS 控制器,我在 vagrant 和 virtualbox 中解决了这个问题。


0
投票

对于真正想要多个控制器的人,请检查“系统”>“芯片组”的设置。在我的 VirtualBox 版本 7.0.14 中:

  • PIIX3 芯片组(默认)仅支持单个 SATA 控制器。
  • ICH9芯片组支持多达8个SATA控制器。

这些限制也可以使用以下命令从命令行获取:

VBoxManage list systemproperties | grep "SATA Controllers"
© www.soinside.com 2019 - 2024. All rights reserved.