centos - Openstack 实例 - 无可启动设备
问题描述
我已经在 VirtualBox 机器上托管的多节点架构上部署了 Openstack。现在我正在尝试使用 qcow2 centos 映像启动我的第一个实例,但每次我这样做时都会收到以下错误:
Booting from Hard Disk...
Boot failed: not a bootable disk
No bootable device
我提到我使用了来自官方 centos 存储库的图像,但我也使用 Virtualbox 构建了自己的 qcow 图像。在这两种情况下,结果相同。我不知道是什么原因造成的,我应该从哪里开始调查。
解决方案
似乎 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 文件并以更短的方法重新启动,但我没有验证这是否有效。
希望这将节省几个小时的搜索时间。
推荐阅读
- javascript - 使用jQuery动画文档正文的颜色不起作用
- javascript - 在for循环Vue中绑定元素无法正常工作
- python - 如何找到 2 个 pyarrow 数据集模式的不同之处?
- python - Python:写入文件时对齐输出(不打印)
- node.js - 如何在 usr/local/bin/ 目录之外更新 Node 版本?
- mysql - 将 blob 列从 mysql dB 导出到磁盘并用新文件名替换
- linux - 为什么 tcpdump 不在后台运行?
- c# - HttpClient PostAsync 模型为空,但它适用于 Postman
- java - 令牌“记录”上的 Java 14 语法错误,需要记录
- class - 如何在飞镖中获取类属性名称的字符串?