添加存储设备后 vagrant vm 未启动

vagrant vm not starting after adding storage device

我想使用带有 2 个磁盘的 vagrant 创建虚拟机。 vm 在 gui "FATAL: Could not read from boot medium" 上显示错误。如果在没有任何磁盘的情况下创建任何磁盘,它运行良好。 这是我的 Vagrantfile:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.vm.define "cn1" do |cn1|
            cn1.vm.box = "trusty"
            cn1.vm.hostname = "cn1"
            cn1.vm.network "private_network", ip: "192.168.100.11"
            cn1.vm.network "private_network", ip: "10.10.10.11"
            cn1.vm.host_name = "controller1"
            cn1.vm.provider :virtualbox do |vb|
                    vb.memory = 500
                    vb.customize ["createhd",  "--filename", "machine1_disk0", "--size", "8192"]
                    vb.customize ["createhd",  "--filename", "machine1_disk1", "--size", "8192"]
                    vb.customize ["storagectl", :id, "--name", "SATA Controller", "--remove"]
                    vb.customize ["storagectl", :id, "--name", "SATA Controller", "--add", "sata"]
                    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"]
                    vb.gui = true
            end
    end
end

VirtualBox 提示您无法从磁盘启动。

如果您打开 VirtualBox 并查看 VM 的设置,在存储下,您会发现您拥有声明的 2 个磁盘,但未附加基本映像。

如果您现在查看此 VM 的文件系统(位置取决于您的 OS,我在 mac)

fhenri@machine:~/Documents/Virtual Machines.localized/trusty_cn1_1454620633289_44965$ ll
total 3174824
drwx------   6 fhenri  staff         204  4 fév 22:17 .
drwxr-xr-x  12 fhenri  staff         408  4 fév 22:17 ..
drwx------   3 fhenri  staff         102  4 fév 22:17 Logs
-rw-------   1 fhenri  staff  1625489408  4 fév 22:19 box-disk1.vmdk
-rw-------   1 fhenri  staff        8488  4 fév 22:17 trusty_cn1_1454620633289_44965.vbox
-rw-------   1 fhenri  staff        8143  4 fév 22:17 trusty_cn1_1454620633289_44965.vbox-prev 

所以 vagrant 已经在 box-disk1.vmdk 中导入了盒子,但是你删除了这个磁盘并添加了 2 个空白磁盘,所以你无法启动。

如果你删除那两行

            vb.customize ["storagectl", :id, "--name", "SATAController", "--remove"]
            vb.customize ["storagectl", :id, "--name", "SATAController", "--add", "sata"]

然后磁盘仍然连接到 VM,您可以启动。

现在如果你在 VirtualBox 中打开虚拟机设置,你会发现 3 个磁盘(在 SATA 控制器下):

  • 框-disk1.vmdk
  • machine1_disk0.vdi
  • machine1_disk1.vdi