啟動錯誤
#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」- 雜記
