
以下の手順に従って、KVMゲストをUbuntu 14.04ホストから別のホストに移行しようとしています。ここで概説する。
これで、新しいホスト上の 1 つのフォルダーに「状態」ファイル、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
次に、ルートとグループkvmによって所有されていることを確認しました
その後、既存のVM(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
バージョン 6.0.0 以降では Linux 機能が削除されないため、QEMU を root 権限で実行することはお勧めしません。
私の場合は AppArmor でした。バッテリー用の SSDT ファイルを VM に追加したいと考えていました。AppArmor がアクセスを許可するフォルダーと、/home/something
許可されないフォルダー ( など) があります。/var/lib/libvirt/images/
は許可されているフォルダーの 1 つです。そこにファイルを配置しましたが、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,
}