internal error: qemu unexpectedly closed the monitor: Driver ‘qcow’ is not whitelisted。
错误:internal error: qemu unexpectedly closed the monitor: 2024-10-23T09:44:30.224070Z qemu-kvm: -drive file=/var/lib/libvirt/images/vms/host-192-168-10-129/vms-host-192-168-10-129.qcow2,format=qcow,if=none,id=drive-ide0-0-0: Driver ‘qcow’ is not whitelisted
virsh start vms-host-192-168-10-129
错误:开始域 vms-host-192-168-10-129 失败
错误:internal error: qemu unexpectedly closed the monitor: 2024-10-23T09:44:30.224070Z qemu-kvm: -drive file=/var/lib/libvirt/images/vms/host-192-168-10-129/vms-host-192-168-10-129.qcow2,format=qcow,if=none,id=drive-ide0-0-0: Driver ‘qcow’ is not whitelisted
类似错误:
当前主机使用qcow2: /var/lib/libvirt/images/vms/host-192-168-10-131/vms-host-192-168-10-131.qcow2
开始安装…
域创建完成。
您可以运行以下命令重启您的域:
virsh --connect qemu:///system start vms-host-192-168-10-131
libguestfs: error: could not create appliance through libvirt.
Try running qemu directly without libvirt using this environment variable:
export LIBGUESTFS_BACKEND=direct
Original error from libvirt: internal error: qemu unexpectedly closed the monitor: 2024-10-23T09:59:16.225823Z qemu-kvm: -drive file=/tmp/libguestfsxuomwL/overlay1.qcow2,format=qcow2,if=none,id=drive-scsi0-0-0-0,cache=unsafe: Could not open backing file: Driver ‘qcow’ is not whitelisted [code=1 int1=-1]
libguestfs: error: could not create appliance through libvirt.
Try running qemu directly without libvirt using this environment variable:
export LIBGUESTFS_BACKEND=direct
Original error from libvirt: internal error: qemu unexpectedly closed the monitor: 2024-10-23T09:59:16.690685Z qemu-kvm: -drive file=/var/lib/libvirt/images/vms/host-192-168-10-131/vms-host-192-168-10-131.qcow2,format=qcow,if=none,id=drive-scsi0-0-0-0,cache=writeback: Driver ‘qcow’ is not whitelisted [code=1 int1=-1]
libguestfs: error: could not create appliance through libvirt.
Try running qemu directly without libvirt using this environment variable:
export LIBGUESTFS_BACKEND=direct
Original error from libvirt: internal error: qemu unexpectedly closed the monitor: 2024-10-23T09:59:16.966453Z qemu-kvm: -drive file=/var/lib/libvirt/images/vms/host-192-168-10-131/vms-host-192-168-10-131.qcow2,format=qcow,if=none,id=drive-scsi0-0-0-0,cache=writeback: Driver ‘qcow’ is not whitelisted [code=1 int1=-1]
错误:开始域 vms-host-192-168-10-131 失败
错误:internal error: qemu unexpectedly closed the monitor: 2024-10-23T09:59:17.306647Z qemu-kvm: -drive file=/var/lib/libvirt/images/vms/host-192-168-10-131/vms-host-192-168-10-131.qcow2,format=qcow,if=none,id=drive-ide0-0-0: Driver ‘qcow’ is not whitelisted
ERROR: startupHost 函数异常退出,程序中止
主要原因还是 qcow 格式云 qemu 版本兼容问题:
当你在使用QEMU启动虚拟机时遇到“format=qcow,if=none,id=drive-ide0-0-0: Driver ‘qcow’ is not whitelisted”这样的错误时,通常意味着你尝试使用的磁盘格式(在这个案例中是qcow)没有被当前的QEMU配置所允许。以下是一些可能的解决方案:
-
检查QEMU版本:确保你使用的QEMU版本支持qcow格式。如果不支持,你可能需要升级QEMU到一个更新的版本。
-
修改磁盘格式的兼容性:如果问题是由于qcow版本太高导致的,你可以尝试修改qcow2的兼容性为0.10,因为默认创建的qcow2可能是1.10版本,而你的KVM可能不支持这个版本。可以使用以下命令来修改:
qemu-img amend -f qcow2 -o compat=0.10 your-image-file.qcow2
这会将qcow2格式的磁盘映像文件修改为0.10兼容性版本。
-
检查QEMU的配置文件:在某些情况下,QEMU的配置文件可能限制了可以使用的磁盘格式。检查
/etc/qemu/qemu.conf
文件,查看是否有相关的限制,并进行适当的修改。 -
使用其他磁盘格式:如果qcow格式无法使用,你可以尝试将磁盘映像转换为QEMU支持的其他格式,比如raw。使用以下命令进行转换:
qemu-img convert -f qcow2 -O raw input.qcow2 output.raw
请注意,转换过程可能需要一些时间,具体取决于磁盘映像文件的大小。
-
检查磁盘映像文件的完整性:有时候,磁盘映像文件可能损坏。使用
qemu-img check
命令来检查并修复磁盘映像文件:qemu-img check -r all your-image-file.qcow2
这将尝试修复磁盘映像文件中的任何错误。
-
查看QEMU的文档:QEMU的官方文档提供了关于支持的磁盘格式和如何使用它们的详细信息。你可以在QEMU的官方文档中找到更多信息。
-
搜索社区论坛和问题跟踪系统:如果上述方法都无法解决问题,你可以搜索社区论坛和问题跟踪系统,看看是否有其他用户遇到了类似的问题,并找到了解决方案。
请尝试上述方法之一来解决你的问题。如果问题仍然存在,可能需要更深入的调查和可能的补丁或软件更新。
要检查QEMU是否支持qcow格式,可以通过以下方法:
-
使用
qemu-img
命令:
运行qemu-img
命令并查看其支持的格式列表。如果列表中包含qcow
或qcow2
,则表示QEMU支持该格式。可以使用以下命令来查看支持的格式:qemu-img -h
这个命令会显示帮助信息以及QEMU支持的所有格式列表。如果
qcow
或qcow2
出现在列表中,那么QEMU支持这种格式。 -
检查QEMU版本:
QEMU的较新版本通常都支持qcow格式。可以通过运行以下命令来检查QEMU的版本:qemu-img --version
确保你的QEMU版本是最新的,或者至少是支持qcow格式的版本。
-
尝试创建或转换qcow格式的镜像:
使用qemu-img
命令尝试创建或转换一个qcow格式的镜像。如果命令成功执行,那么QEMU支持qcow格式。例如,创建一个新的qcow2格式的镜像:qemu-img create -f qcow2 test.qcow2 10G
或者将现有的raw格式镜像转换为qcow2格式:
qemu-img convert -f raw -O qcow2 input.img output.qcow2
如果这些命令能够成功执行,那么QEMU支持qcow格式。
-
查看QEMU文档:
QEMU的官方文档通常会列出所有支持的格式。可以访问QEMU的官方文档,查看是否提到了对qcow格式的支持。 -
检查系统日志或错误信息:
如果在尝试使用qcow格式时遇到错误,可以查看系统日志或错误信息,通常会有明确的提示表明QEMU是否支持该格式。
通过以上任一方法,都可以确认QEMU是否支持qcow格式。如果QEMU不支持,可能需要更新QEMU到支持该格式的版本,或者使用其他支持qcow格式的虚拟化软件。
使用QEMU时可能会遇到各种错误,以下是一些常见的错误及其可能的解决方案:
-
无效或不兼容的内核映像:确保内核映像与虚拟机的架构兼容,并且格式正确。可以使用
file
命令检查映像文件的格式。 -
缺失内核模块:确保内核映像包含所有必要的模块。可以使用
lsmod
命令查看已加载的模块。 -
错误的启动参数:检查启动参数是否正确。可以使用
-append
选项指定启动参数。 -
设备不匹配:确保源虚拟机和目标虚拟机的设备完全相同,包括设备顺序。
-
存储问题:确保块存储在源和目标主机上可访问,无论是通过共享存储还是通过显式迁移块数据。
-
ROM大小不匹配:确保迁移的两个主机使用的ROM映像大小相同。
-
I/O错误:在迁移过程中,如果出现I/O错误,可能是由于网络问题或目标主机上的存储问题。
-
内存分配失败:QEMU在启动时或运行时可能会遇到内存分配失败的问题。确保系统有足够的内存,并且QEMU的内存限制设置合理。
-
调试和分析:如果需要深入分析问题,可以使用Valgrind或GDB进行调试。
-
虚拟机内存转储:如果虚拟机无法启动或响应,可以使用QEMU的内存转储功能,将内存内容保存到文件中,然后使用crash工具进行分析。
-
证书错误:在使用TLS连接时,如果证书设置不正确,可能会导致连接失败。确保证书正确配置,并且URI格式正确(例如使用
qemu:///system
而不是qemu://system
)。 -
权限问题:如果非root用户连接到libvirtd时遇到权限问题,需要在
/etc/libvirt/libvirtd.conf
中配置相应的选项。 -
网络问题:如果虚拟机网络接口未显示或配置不正确,需要检查网络配置文件,并确保桥接网络接口正确设置。
-
引导加载器错误:在安装操作系统后,如果遇到引导加载器错误(如GRUB错误15),可能是因为虚拟机的启动顺序设置不正确。确保从正确的设备启动。
-
磁盘格式问题:如果Windows安装过程中出现“磁盘读取错误”,则可能是因为默认创建的磁盘格式与Windows安装程序不兼容。需要将磁盘映像转换为qcow2格式。
遇到这些错误时,可以按照上述建议进行排查和解决。如果问题依然存在,可以查看QEMU的官方文档或社区论坛获取更多帮助。