首页 > 解决方案 > Openstack 实例 - 无可启动设备

问题描述

我已经在 VirtualBox 机器上托管的多节点架构上部署了 Openstack。现在我正在尝试使用 qcow2 centos 映像启动我的第一个实例,但每次我这样做时都会收到以下错误:

Booting from Hard Disk... 

Boot failed: not a bootable disk

No bootable device

错误打印屏幕

我提到我使用了来自官方 centos 存储库的图像,但我也使用 Virtualbox 构建了自己的 qcow 图像。在这两种情况下,结果相同。我不知道是什么原因造成的,我应该从哪里开始调查。

标签: centosvirtualboxinstanceopenstackqemu

解决方案


似乎 virt-manager 在创建新虚拟机时不会读取预先存在的映像的硬盘驱动器映像格式,而是选择“原始”格式。由于 virt-manager 似乎将其设置存储在内部,因此您不能只编辑 ~/.libvirt/qemu/VMNameHere.xml 文件。

您必须将 libvirt vm 设置导出为 xml,修复硬盘驱动器映像格式,然后将 vm 设置重新导入 libvirt。

获取虚拟机名称: 代码:

virsh -c qemu:///session list --all

如果您的 vm 在系统帐户而不是您的用户帐户中,请将 qemu:///session 替换为 qemu:///system

导出 vm 设置: 代码:

virsh -c qemu:///session dumpxml VMName > ~/Desktop/VMName.xml

更新xml文件中的硬盘格式:

代码:

From   
<devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/storage/vmimages/Windows7_x64-01/qcow2-60GB_HDD1.qcow2'/>
      <target dev='hda' bus='ide'/>
    </disk>
To
<devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/storage/vmimages/Windows7_x64-01/qcow2-60GB_HDD1.qcow2'/>
      <target dev='hda' bus='ide'/>
    </disk>

删除 virt-manager 中的旧 vm 设置:

打开 virt-manager 并删除有问题的 vm 但请确保保留硬盘驱动器映像

在固定的 xml 文件中导入:

代码:

virsh -c qemu:///session define ~/Desktop/VMName.xml

vm 会自动出现在 virt-manager 中。

vm 现在应该可以正常工作了。

其他注意事项:这个 qcow2/raw 问题发生在我使用 virt-manager 加载到 vm 的每个硬盘驱动器图像上,因此我必须每次都编辑并重新导入 xml。

您也许可以关闭 libvirt-bin 和 qemu-kvm 服务,编辑 ~/.libvirt/qemu/VMNameHere.xml 文件并以更短的方法重新启动,但我没有验证这是否有效。

希望这将节省几个小时的搜索时间。


推荐阅读