
我正在嘗試按照以下步驟將 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,
}