「KVM」- 常見錯誤及注意事項 @20210306


啟動錯誤

#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的問題”了。


相關文章

「KVM」- Kimchi(Web管理工具)
「libvirt」- 離線遷移
「KVM」- 虛擬機遷移
「KVM」- 環境搭建
「KVM」- 管理工具
「QEMU, KVM and libvirt」- 雜記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM