我有 2 个存储池。
如何使用 libvirt API 将 qcow 图像从 remote_images 复制到 host_images?
我试过使用明显的 vol-clone,但显然它不能跨存储池工作
我试过使用 vol-download 但这需要很长的时间(500MB 大约需要 10 分钟以上)
我的架构错了吗?我不应该尝试使用 libvirt 来控制自动化的这些方面吗?
我想在自动化的所有方面都使用 libvirt,这样我就可以在我的工具使用上保持一致。但是如果这些工具不起作用,我就不能继续使用 libvirt。
我也想知道如果 vol-clone 不起作用 KVM 如何执行迁移到另一台主机?如果不是 libvirt,它使用哪些工具进行迁移?
我在今天管理的虚拟机上打开控制台,看到一些内核消息:
[5912557.130943] Uhhuh. NMI received for unknown reason 20 on CPU 0.
[5912557.131115] Do you have a strange power saving mode enabled?
[5912557.131287] Dazed and confused, but trying to continue
[6064281.393568] Uhhuh. NMI received for unknown reason 30 on CPU 1.
[6064281.393888] Do you have a strange power saving mode enabled?
[6064281.394235] Dazed and confused, but trying to continue
Run Code Online (Sandbox Code Playgroud)
这只是其中的几个,20 和 30 都发生在 CPU 0 和 1 上。
在我的无头 debian 11(牛眼)服务器上,当我尝试安装时libvirt-daemon-system,apt几乎会安装整个图形环境,包括音频库和所有内容:
mic@micserver:~$ sudo apt install libvirt-daemon-system
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
adwaita-icon-theme alsa-topology-conf alsa-ucm-conf at-spi2-core augeas-lenses dbus-user-session dconf-gsettings-backend dconf-service fontconfig glib-networking glib-networking-common
glib-networking-services gsettings-desktop-schemas gstreamer1.0-libav gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-x gtk-update-icon-cache hicolor-icon-theme i965-va-driver
ibverbs-providers intel-media-va-driver ipxe-qemu jq libaa1 libaacs0 libasound2 libasound2-data libass9 libasyncns0 libatk-bridge2.0-0 libatk1.0-0 libatk1.0-data libatspi2.0-0 libaugeas0 libavc1394-0
libavcodec58 libavfilter7 libavformat58 libavutil56 libbdplus0 libbluray2 libbrlapi0.8 libbs2b0 libcaca0 libcacard0 libcairo-gobject2 libcairo2 libcapstone4 …Run Code Online (Sandbox Code Playgroud) 我最近在 Arch Linux 上安装了 virt-manager,与在 Ubuntu 下不同,第一次启动 virsh-edit 时没有提示我选择文本编辑器。相反,XML 文件是在 vi(或 vim,不确定)中打开的。
从 RedHat 档案中的这个线程中,我想如果我只是添加到~/.bashrc:
export EDITOR=/usr/bin/nano
Run Code Online (Sandbox Code Playgroud)
这样就可以解决问题。但设置 EDITOR 环境变量不起作用。
此外,启动它EDITOR=geany sudo virsh edit myWINVM给出了相同的结果,就像尝试使用不同的编辑器一样:EDITOR=geany sudo virsh edit myWINVM 如此处所述
我看到该变量实际上已被设置:
[~]$ printenv
SHELL=/bin/bash
SESSION_MANAGER=local/virtland:@/tmp/.ICE-unix/5451,unix/virtland:/tmp/.ICE-unix/5451
WINDOWID=27262979
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg
XDG_MENU_PREFIX=xfce-
SSH_AUTH_SOCK=/tmp/ssh-j36TZui4fOt5/agent.5457
DESKTOP_SESSION=Xfce Session
SSH_AGENT_PID=5458
EDITOR=/usr/bin/nano
...
Run Code Online (Sandbox Code Playgroud)
但是virsh edit MYVM仍然在 vi 中打开 XML。
我需要在 Arch 中做一些不同的事情吗?virsh 最近的更新中更改此设置的方法是否已更改?
是否有一种简单的方法可以在 KVM 来宾系统上运行 X11 应用程序,就像它在主机系统上的显示方式一样?
我知道我可以使用 X11 转发 ssh 到访客,但我想知道是否有本地 KVM/libvirt 方法或更简单的方法。
在我的 CentOS 7.2 中,我安装了以下软件包:
yum install -y epel-release qemu-kvm libvirt virt-install bridge-utils
Run Code Online (Sandbox Code Playgroud)
然后当我显示ip a:
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether e8:9a:8f:50:4a:dc brd ff:ff:ff:ff:ff:ff
inet 13.19.241.25/29 brd 13.19.241.31 scope global em1
valid_lft forever …Run Code Online (Sandbox Code Playgroud) 每次启动/停止 KVM 时,都会libvirtd 3.0.0-4在系统日志中引发以下错误:
libvirtd[3145]: 2018-08-07 21:00:19.699+0000: 3145: \
error : qemuMonitorIO:710 : internal error: \
End of file from qemu m onitor
virtlogd[2753]: 2018-08-07 21:00:19.901+0000: 2753: \
error : virNetSocketReadWire:1801 : \
End of file while reading data: Input/output error
Run Code Online (Sandbox Code Playgroud)
有没有人遇到同样的问题?
我正在尝试使用我使用本教程编译的 Qemu 二进制文件,因为与我的操作系统 Debian 一起打包的 Qemu 版本似乎不支持 Spice 的 OpenGL 加速。成功编译后,我尝试将 <emulator> 标记设置为 /usr/local/bin 中新 Qemu 可执行文件的路径,但收到以下错误:
error: internal error: Failed to probe QEMU binary with QMP: libvirt: error : cannot execute binary /usr/local/bin/qemu-2.12.1/x86_64-softmmu/qemu-system-x86_64: Permission denied
我的 virsh 编辑配置文件的“模拟器”部分如下:
<emulator>/usr/bin/kvm</emulator>
我尝试过更改文件的权限和所有权,确保允许执行 ( chmod a+x),但似乎都不起作用。
如果还有其他方式使用Qemu的OpenGL加速功能,请告诉我。
我目前正在使用 Debian Stretch,以及来自“测试”存储库的 virt-manager、libvirt-daemon 和 qemu-kvm,在 Intel Core i5-8400 上使用集成 GPU。我已经编译了 Qemu,因此可以通过“libvirglrenderer”使用 OpenGL 3D 加速功能。
我想在我的 Debian 上玩一点 KVM,我安装了所需的工具。这三个组出现在/etc/group文件中:kvm、libvirt和libvirt-qemu。每个小组的目的是什么?
现在我知道该libvirt组允许普通用户(通过 policykit)连接到 libvirtd 守护进程而无需询问 root 密码,因此它允许创建/删除/配置/管理虚拟机。
我也知道,/dev/kvm设备已经设置了kvm组。当用户拥有此设备的读/写权限时,他可以做什么?我应该向这个组添加一个普通用户吗?如果是这样,为什么?
我真的不知道这个libvirt-qemu小组的目的是什么。看起来它是多余的,但是网络上的许多 HowTo 都建议将普通用户也添加到该组中。这是必需的吗?
太长了;
在 Ubuntu 20.04.1 上,我尝试使用 KVM 运行 VM。安装所需的软件包后,我仍然收到以下错误:
sudo systemctl status libvirtd
Unit libvirtd.service could not be found.
Run Code Online (Sandbox Code Playgroud)
以下是我所做的 -
a) 检查 kvm 支持
$ sudo kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
Run Code Online (Sandbox Code Playgroud)
b) 安装所需的包
$ sudo apt install -y qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
Run Code Online (Sandbox Code Playgroud)
现在,上面应该是一切,我必须能够打开 virt-manager gui 并开始,并且 libvertd 服务应该已经启动。但是,我的机器上仍然没有运行 libvirtd 服务,并且没有安装 libvirtd.service 单元。
显然,virt-manager 无法连接到 demo,因此出现以下错误 - 执行后$ sudo virt-manager--> virt-manager GUI 以 root 权限启动。

窗户上清楚地写着——
libvirtd 服务似乎未安装。安装并运行 libvirtd 服务来管理该主机上的虚拟化。
显然,创建虚拟机是不可行的,下面是尝试创建虚拟机时出现的错误。

参考 - …
libvirt ×10
kvm ×8
qemu ×3
debian ×2
virt-manager ×2
apt ×1
bash ×1
dependencies ×1
editors ×1
linux ×1
linux-kernel ×1
networking ×1
nmi ×1
virsh ×1
x11 ×1