「KVM」- 常见错误及注意事项 @20210223

启动错误

#1 vmport is not available with this QEMU binary

问题描述:
启动Guest时产生如下错误:

	error: unsupported configuration: vmport is not available with this QEMU binary

问题原因:
就是不支持嘛

解决办法:
修改域定义文件,去掉<vmport/>节点,通常在<features/>中。

#2 error: Unable to get index for interface enp0s25: No such device

问题描述:
启动Guest时产生如下错误:

	error: Unable to get index for interface enp0s25: No such device

问题原因:
桥接模式的设备是硬编码的,修改域定义文件。

解决办法:
修改域定义文件(virsh edit),将在<interface>下<source>的“dev”属性,设置对应的网卡设备。

#3 Unsupported machine type

问题描述:
启动虚拟机的时候产生如下错误:

	error: Failed to start domain dns
	error: internal error: process exited while connecting to monitor:
	(process:1757): GLib-WARNING **: gmem.c:483: custom memory allocation vtable not supported
	qemu-system-x86_64: -machine pc-i440fx-2.12,accel=kvm,usb=off,dump-guest-core=off: Unsupported machine type
	Use -machine help to list supported machines!

问题原因:
在域定义文件中设置的machine类型不被QEMU支持。

解决方法:

<!--
# 使用如下命令查看支持的机器:
qemu-system-x86_64 -machine help

# 修改域定义文件中<os>下<type>的“machine”属性,设置为上述命令输出之一
-->
<os>
	<type arch='x86_64' machine='pc-i440fx-2.0'>hvm</type>
	<boot dev='hd'/>
</os>

<!--
(04/14/2019)今天又遇到了这个问题,客户机是Window 7,从别的平台迁移过来的。
参照能够正常启动的Window 7客户机,修改<type machine='pc-i440fx-2.12'>hvm</type>
-->

#4 guest CPU doesn't match specification: extra features

问题描述:
启动虚拟机的时候产生如下错误:

	error: operation failed: guest CPU doesn't match specification: extra features: x2apic,hypervisor, missing features: ht,monitor,osxsave,arat,xsaveopt,svm,extapic,ibs,skinit,wdt,lwp,tce,nodeid_msr,perfctr_core,perfctr_nb,ibpb

问题原因:
虚拟机CPU型号的设置不对,导致「Host的CPU」并不支持「你所设置的CPU型号」,主要还是指令集不支持。

解决办法:
更换Guest的CPU型号设置:

<!-- # virsh edit centos7.0 -->
<cpu mode='custom' match='exact' check='partial'>
	<model fallback='allow'>cpu64-rhel6</model>
</cpu>

<!--
!!!你需要KVM中CPU设置相关的知识:设置CPU的三种模式!!!
或者把上面的这一段删除掉。删除后,默认使用custom模式,使得持久化的guest不管从哪个host启动,将看到相同的配置。
-->

网络错误

#1 Requested operation is not valid: network 'default' is not active

问题描述:

Starting install...
ERROR    Requested operation is not valid: network 'default' is not active
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
  virsh --connect qemu:///system start fedora
otherwise, please restart your installation.

问题原因:
网络问题喽。

解决方法:
参见#3中的描述,这个两个问题的原因是类似的。

#2 no 'default' network device found

问题描述:
如题。

问题原因:
配置NAT网络的时候,选择的“default”网络,但是该网络未激活。

在KVM安装之后就包含一个名为“defalut”的网络。默认情况下,该网络未激活(State:inactive),未自启动(Autostart:no)。对应的配置为/etc/libvirt/qemu/networks/defalut.xml。

解决办法:
执行如下命令来操作该网卡:

#!/bin/sh

# 查看所有的网络
virsh net-list --all

# 启动default网络
virsh net-start default

# 设置default网络自启动
virsh net-autostart default

# 关闭default网络(不需要执行,这是关闭default网络的命令)
virsh net-destroy default

迁移错误

#1 Cannot check QEMU binary /usr/bin/kvm: No such file or directory

问题描述:
源主机为「Kali Rolling」,「目的主机」为「CentOS 7.5」。执行virsh migrate --unsafe dns qemu+ssh://172.16.0.102/system进行虚拟机迁移,输入密码后返回该错误。

问题原因:
目的主机上没有kvm命令。看似如此,实际上这个问题和虚拟机定义有关系,在两台机器上分别执行virsh dumpxml --domain centos7.0 | grep emulator命令,你会发现,Kali上的输出是<emulator>/usr/bin/kvm</emulator>,而CentOS的输出是<emulator>/usr/libexec/qemu-kvm</emulator>。究其更本是这两台主机的设备模拟器的路径不一样。「Kali」上是/usr/bin/kvm,一个脚本,是对qemu-system-x86_64的包装;而「CentOS」上没有这个/usr/bin/kvm命令,但是它也有qemu-system-x86_64命令,而且qemu-kvm的手册与qemu-system-x86_64是一样的。

突然就猜测在安装虚拟机(virt-install)的时候能否指定这个参数,看了一下virt-install的手册,看到了--qemu-commandline选项,顺着指引看到「Pass-through of arbitrary qemu commands」手册。算是有了解决方案了。

解决方法:
修改Guest定义文件:virsh edit --domain centos7.0,添加两部分内容:

<!-- 1. 头部追加 xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0' -->
<domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <!-- 2. 指定命令行参数 -enable-kvm -->
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
  </devices>
  <!-- 2. 指定命令行参数 -enable-kvm -->
  <qemu:commandline>
    <qemu:arg value='-enable-kvm'/>
  </qemu:commandline>
</domain>

!!!如果你直接修改(没有使用virsh edit命令)了磁盘中的配置文件,则需要重启libvirtd服务,以重新加载磁盘的配置文件,否则你使用virsh edit命令看到的还还是旧的配置!!!

参考文献:
Cloubed hangs with error `/usr/bin/kvm: No such file or directory`

#2 hostname on destination resolved to localhost

问题描述:
error: internal error: hostname on destination resolved to localhost, but migration requires an FQDN

问题原因:
目的主机的主机名解析到了localhost上。

解决方法:
修改目的主机的主机名,不要用localhost作为主机名。

参考文献:
KVM online migration

#3 CPU model Haswell-noTSX is not supported by hypervisor

问题描述:
如题,这个问题转瞬即逝,没了…………

#4 unsupported configuration: unknown CPU feature: umip

问题描述:
虚拟机进行热迁移是产生了该错误,看样子是CPU不支持该指令。

问题原因:
推测是由于「源主机」和「目的主机」的CPU不兼容导致的,因此无法进行热迁移。

#5 cannot migrate domain with 1 snapshots

问题描述:
虚拟机迁移时产生如下错误

	error: Requested operation is not valid: cannot migrate domain with 1 snapshots

问题原因:
根据错误提示,错误的原因是Guest上有快照,因此无法迁移。

解决办法:
处理掉啊,不要了,我不要镜像了,没啥用。

#!/bin/sh

virsh snapshot-list centos7.0

virsh snapshot-delete "centos7.0" --snapshotname "ss-init"

如果在迁移中想要保留镜像,那你需要执行命令导出镜像定义,然后再导入。这个过程可能要手动处理,不能使用virsh migrate命令。

#6 Cannot check QEMU binary /usr/bin/qemu-system-x86_64

问题描述:
迁移虚拟机的时候产生如下错误:

error: Cannot check QEMU binary /usr/bin/qemu-system-x86_64: No such file or directory

问题原因:
迁移虚拟机的时候,需要在「目的主机」上重新定义「域」,然而「域」定义的时候,在XML文件中引用了「目的主机」上不存在的程序(实际上是设备模拟器)。

解决办法:
安装这个程序,因为远程主机是RHEL衍生版,遂:yum install -y qemu-system-x86.x86_64

其他错误

#1 CPU mode 'custom' for x86_64 kvm domain on x86_64 host is not supported by hypervisor

问题描述:

Starting install...
ERROR    unsupported configuration: CPU mode 'custom' for x86_64 kvm domain on x86_64 host is not supported by hypervisor
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
  virsh --connect qemu:///system start fedora
otherwise, please restart your installation.

问题原因:
未知。网上有人给出了原因,但是好像并不是我的情况,参考「Trying to settup VM will PCI passthrough - Could not access KVM kernel」一文。

解决方法:
重启之后,好了…………这个不是第一次“通过重启解决KVM的问题”了。

相关文章

「libvirt」- 修改默认的存储池
「KVM」- Networking
「KVM」- Kimchi(Web管理工具)
「libvirt」- 离线迁移
「KVM」- Virt-Manager
「KVM」- 管理工具
「KVM」- 环境搭建
「KVM」- 虚拟机迁移

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TbsReaderView 是腾讯浏览服务(TBS)提供的一种浏览器内核解决方案,用于在应用程序中显示各种文件类型,包括 PDF、DOC、PPT、XLS 等。如果您在使用 TbsReaderView 显示 PDF 文件时出现 "not supported by:pdf" 的错误提示,可能是以下原因导致的: 1. 您的设备上没有安装 PDF 阅读器。TbsReaderView 本身不支持 PDF 文件的读取,需要依赖系统中已经安装的 PDF 阅读器来实现。如果您的设备上没有安装 PDF 阅读器,就会出现 "not supported by:pdf" 的错误提示。您可以在 Google Play 商店中搜索 "PDF 阅读器" 下载并安装一个 PDF 阅读器,然后再次尝试打开 PDF 文件。 2. 您的设备上的 PDF 阅读器不兼容 TbsReaderView。TbsReaderView 依赖于设备上已安装的 PDF 阅读器来打开 PDF 文件,但是并不是所有的 PDF 阅读器都兼容 TbsReaderView。如果您尝试使用一个不兼容的 PDF 阅读器来打开 PDF 文件,就会出现 "not supported by:pdf" 的错误提示。您可以尝试在设备上安装一个兼容 TbsReaderView 的 PDF 阅读器,或者使用 TbsReaderView 支持的其他文件格式。 3. 您没有正确配置 TbsReaderView 的文件类型支持。在使用 TbsReaderView 显示文件时,需要正确配置文件类型支持,否则就会出现 "not supported by:pdf" 的错误提示。您可以在 TbsReaderView 的初始化代码中添加以下代码,来配置 PDF 文件类型的支持: ``` Bundle bundle = new Bundle(); bundle.putString("filePath", filePath); bundle.putString("tempPath", Environment.getExternalStorageDirectory() + "/" + "TbsReaderTemp"); boolean result = mTbsReaderView.preOpen(parseFormat("pdf"), false); if (result) { mTbsReaderView.openFile(bundle); } ``` 注意,parseFormat("pdf") 方法是用来获取文件格式的,需要在代码中实现。如果您没有正确配置文件类型支持,就会出现 "not supported by:pdf" 的错误提示。 希望以上解答对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值