Ubuntu 14.04 KVM - 錯誤:內部錯誤:連接到監視器時退出進程:qemu-system-x86_64:

Ubuntu 14.04 KVM - 錯誤:內部錯誤:連接到監視器時退出進程:qemu-system-x86_64:

我正在嘗試按照以下步驟將 KVM 來賓從一台 Ubuntu 14.04 主機遷移到另一台主機此處概述

我現在將“state”檔案、xml 配置和 qcow2 img 檔案放在新主機上的單一資料夾中,並確保更新 xml 配置以指向 qcow2 映像檔的新位置。

當我嘗試運行時,virsh create [guest-id].xml出現以下錯誤訊息:

error: internal error: process exited while connecting to monitor: 
qemu-system-x86_64: -drive file=/media/stuart/storage2/kvm/dns.technostu.com/dns.technostu.com.img,if=none,id=drive-virtio-disk0,format=raw: 
could not open disk image /media/stuart/storage2/kvm/dns.technostu.com/dns.technostu.com.img: 
Could not open '/media/stuart/storage2/kvm/dns.technostu.com/dns.technostu.com.img': Permission denied

調試和嘗試的解決方法

  • 我已經將自己新增至 libvirtd 群組並重新登入。

  • 我確保檔案路徑是正確的

  • 我將 .img 檔案的所有權更改為自己,但是在使用和不使用 sudo 運行命令後,檔案的所有權不斷更改為root:root具有權限-rwxr-xr-x

  • 我嘗試跑步

    sudo apt-get install apparmor-profiles apparmor-utils
    sudo aa-complain /usr/lib/libvirt/virt-aa-helper
    

    這個帖子,但這並沒有奏效。

  • 我嘗試按照指定更改 xml 文件中的模擬器這裡

為了在 Ubuntu 14.04 上的新主機上「匯入」來賓系統,我需要做什麼?

答案1

我有類似的問題。

將我的用戶加入 kvm 群組

sudo usermod -a -G kvm username

然後我確保它/dev/kvm屬於 root 和群組 kvm

之後我將現有虛擬機器(從 VirtualBox 轉換而來)的所有權變更為使用者名稱:kvm

最後我group=kvm user=username在 qemu.conf 中設定了這為我解決了這個問題

答案2

關閉並再次打開電腦(安裝後我沒有重新啟動kvm)將錯誤訊息更改為:

error: internal error: process exited while connecting to monitor: qemu-system-x86_64

當谷歌搜尋該錯誤時,我發現這個帖子建議將以下內容添加到

user = "root"
group = "root"

/etc/libvirt/qemu.conf文件。請務必包含引號。

再次重新啟動後,我能夠virsh create [guest-id].xml成功運行。

答案3

不建議以 root 權限執行 QEMU,因為從版本 6.0.0 開始,它不會剝奪 Linux 功能。

就我而言,它是 AppArmor。我想向虛擬機器添加電池的 SSDT 檔案。 AppArmor 允許存取某些資料夾,而其他資料夾(例如/home/something)則不允許存取。/var/lib/libvirt/images/是允許的資料夾之一。儘管我將文件放在那裡,但 AppArmor 策略仍然不允許它(如 所示sudo cat /var/log/kern.log | grep -C 10 apparmor | grep -C 10 qemu)。有效的方法是像這樣/var/lib/libvirt/images/SSDT1.dat rk添加:/etc/apparmor.d/libvirt/TEMPLATE.qemu

#
# This profile is for the domain whose UUID matches this file.
#

#include <tunables/global>

profile LIBVIRT_TEMPLATE flags=(attach_disconnected) {
  #include <abstractions/libvirt-qemu>
  /var/lib/libvirt/images/SSDT1.dat rk,
}

相關內容