You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加额外磁盘后Chef Kitchen Vagrant Box无法启动求助

解决Kitchen + Vagrant添加额外磁盘启动超时的问题

我之前也碰到过类似的Vagrant磁盘配置导致Kitchen启动卡住的情况,结合你的场景,给你几个针对性的排查和修复方向:

1. 修正.kitchen.yml的配置格式问题

你贴的配置里有明显的缩进错误,Vagrant的自定义配置层级没对齐,这大概率是启动失败的核心原因。正确的缩进结构应该是这样:

driver:
  name: vagrant
  ssh:
    insert_key: false
  customize:
    cableconnected1: 'on'
  createhd:
    - filename: /tmp/disk1.vdi
      size: 128
  storagectl:
    - name: SATA Controller
      portcount: 4
  storageattach:
    - storagectl: SATA Controller
      port: 0
      device: 0
      type: hdd
      medium: /tmp/disk1.vdi
  privileged: true

注意每个子配置项要和父级保持正确的缩进(通常用2或4个空格),之前的配置里customize、createhd等项直接和driver平级,导致Vagrant无法正确解析磁盘挂载逻辑,进而卡住启动流程。

2. 自动清理残留虚拟磁盘文件

每次kitchen destroy后手动删除/tmp/disk1.vdi太繁琐,你可以给driver添加销毁钩子,自动清理这个文件:

driver:
  # 其他原有配置...
  hooks:
    destroy:
      - command: rm -f /tmp/disk1.vdi

这样每次执行kitchen destroy时,系统会自动删除残留的磁盘文件,避免下次启动时因磁盘已存在导致的SSH连接重试卡住问题。

3. 延长Vagrant启动超时时间

额外磁盘的初始化会增加虚拟机启动时长,默认超时时间可能不够用。你可以通过自定义Vagrantfile模板来调整:

  1. 在Cookbook的.kitchen目录下创建custom_vagrantfile.erb,内容如下:
Vagrant.configure("2") do |config|
  config.vm.box = "<%= @box_name %>"
  config.vm.boot_timeout = 120 # 把超时时间改为120秒,默认通常是30/60秒
  config.vm.provider "virtualbox" do |v|
    v.customize ["createhd", "--filename", "/tmp/disk1.vdi", "--size", 128]
    v.customize ["storagectl", :id, "--name", "SATA Controller", "--portcount", 4]
    v.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 0, "--device", 0, "--type", "hdd", "--medium", "/tmp/disk1.vdi"]
  end
end
  1. 在.kitchen.yml里指定这个模板:
driver:
  name: vagrant
  vagrantfile_erb: .kitchen/custom_vagrantfile.erb
  # 其他原有配置...

这样能更灵活地控制Vagrant的启动参数,避免因初始化超时导致卡住。

4. 验证VirtualBox控制器兼容性

虽然你确认SATA Controller适用,但部分旧Box可能默认使用IDE控制器,强制切换SATA可能引发磁盘识别问题。你可以先查看Box的默认控制器类型:

vagrant box show <你的Box名称>

如果默认是IDE,就把storagectl里的名称改成IDE Controller,或者调整port参数(比如用port 1而非0,避免和系统盘冲突)。

5. 启用调试日志定位问题

启动Kitchen时开启调试日志,能看到具体卡在哪个环节:

KITCHEN_LOG=debug kitchen verify

也可以脱离Kitchen环境,单独用Vagrant测试磁盘配置:创建临时Vagrantfile并添加你的磁盘设置,执行vagrant up,从输出中直接查看错误信息,排查会更高效。

内容的提问来源于stack exchange,提问作者lzukel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:49:20