问题标签 [virsh]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qemu - virt-aa-helper 不在 AppArmor 生成的规则中添加存储池的路径
我在新的 Ubuntu 20.04 主机 (libvirtd (libvirt) 6.0.0) 上有一个新的 VM,由于 AppArmor 拒绝对 VM 磁盘的读取访问而无法启动。磁盘定义如下:
在 VM 启动期间,它失败并显示以下消息:
权限是正确的,我已经通过禁用 AppArmor 进行了验证,并且内核日志中还打印了以下内容:
查看virt-aa-helper
in生成的配置文件/etc/apparmor.d/libvirt/
(在 VM 启动时),我可以看到以下内容:
由于某种原因,磁盘的路径丢失,而 ISO 已正确添加。我可以在以下位置看到默认池的路径/etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
:
我怀疑卷中的磁盘文件应该有一个条目。为什么不virt-aa-helper
加呢?
performance - 通过 virsh (QEMU/KVM) 进行实时快照后客户机性能下降
我遇到了一个奇怪的问题,我无法在其他地方找到解决方案。也许你可以帮助我。
我有一个运行 Ubuntu 20 LTS 的系统,它是六个来宾(四个 Ubuntu 20 LTS 和两个 Windows Server 2019)的主机,它们运行得非常快,直到我拍摄了实时快照。我在使用 QCOW2 文件时在 QEMU/KVM 上运行来宾,并且我正在使用 virsh 来管理这些虚拟系统。
我使用以下命令拍摄来宾的实时快照(没有 RAM 状态):
这几乎可以立即对特定来宾的所有虚拟磁盘进行快照,并创建新的增量文件,将差异写入其中。然后,我为所有客人和所有磁盘提供以下结构:
复制快照后,我使用以下命令将它们提交到它们的基本文件:
之后,我删除了快照,所有这些工作都没有产生任何错误。然而,在拍摄快照之后,虽然所有的来宾仍在运行,没有任何错误,但每个虚拟机在 shell 中的任何命令都非常慢。此外,我可以通过主机上的顶部看到,每个来宾的 RAM 使用量已大大减少(例如,Windows Server 2019 的 GUI 从 25 GB 减少到 2.5 GB)。
似乎所有缓存的数据都从 RAM 中删除了,这当然会大大降低性能。但是,拍摄快照(没有 --quiesce 参数)不应该导致这种行为,或者?。重新启动所有来宾后,一切都恢复得很快(而快照结构没有任何改变)。
您知道哪种配置或情况会导致这种行为吗?
先感谢您!
- - - 编辑 - - -
似乎实际的问题是在拍摄快照后通过 scp/rsync 复制文件,因为其中一个程序(rsync?)耗尽了主机上的所有内存,导致将客人的部分 RAM 交换到磁盘.
即使在复制过程完成后,复制的数据似乎仍保留在主机缓存中,并且客户机正在进一步使用主机的部分交换空间。
这当然解释了客人的糟糕表现。它可以通过使用以下命令清除页面缓存和交换空间来修复:
但请注意,在暂停客户机操作的情况下,清除交换空间可能需要几个小时。要么应该在晚上不使用它们时完成,要么应该从根本上解决问题,即在 rsync/scp 部分。
qemu - virsh 的问题 / 无法连接到 qemu
我正在尝试设置 KVM,但是在运行时$ sudo virsh net-define br10.xml
我得到了这个:
error: failed to connect to the hypervisor
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory
当跳转到 virt-manager GUI 时,会出现这个对话框Unable to connect to libvirt qemu:///system.
我检查了我是否同时在 kvm 和 libvirt 组中,这似乎没问题。我还检查了运行时是否创建了 libvrt-sock 文件,$ sudo systemctl start libvirtd.service
但什么也没有。
qemu - QEMU-KVM 自动设置 filterref 参数
如果这是一个简单的问题,我很抱歉,但我刚刚开始使用 qemu,找不到简单的方法来做到这一点。
我正在尝试自动化我的 KVM 部署。我目前遇到的问题是我找不到自动为 filterref 设置参数的方法。
这就是我的virt-install网络选项当前的样子,并且目前运行良好。
但是我找不到任何东西来设置一个参数来定义它应该被锁定到的 IP 地址。这是我在 xml 中想要的结果:
我正在寻找一种自动添加该参数的方法,最好是直接使用virt-install
或在某种程度上我可以运行脚本,输入我想要设置的几个变量。此时,VM 已经在运行并等待设置完成,并加载了过滤器。基本上我希望在第一次启动之前加载参数,这样任何人都不会试图弄乱 ip 地址。
这可能吗?
这是我现在刚刚复制到控制台的整个“脚本”。
virsh 版本输出:
我在 CentOS Linux 版本 8.3.2011 上。
kvm - virsh 功能不包括 qemu 或 kvm
我是 Libvirt 和 Qemu 的新手。我已经在 centos 8 上安装了 Libvirt 7.1.0 和 qemu-kvm 4.2.0。我根据 https://libvirt.org/compiling.html的说明配置和构建了 libvirt 。
但是当我尝试使用 virsh 创建虚拟机时,它显示以下错误:
# virsh create /home/abc.xml
error: Failed to create domain from /home/abc.xml error: invalid argument: could not find capabilities for arch=x86_64 domaintype=kvm
当我检查管理程序功能时,它不会在来宾域类型中显示 qemu 或 kvm。
#virsh capabilities
ceph - CEPH 池 img - virsh live attach
我想将 Ceph rbd 块映像附加到正在运行的 VM。我可以通过编辑 vm xml 来附加 img1,所以一切都在这里工作。但我想让它实时连接。
从主机 lvl 可以看到池和图像
我试图多个驱动程序/子驱动程序/类型 - 但没有运气
如何将 CEPH rbd 卷附加到正在运行的 VM?
libvirt - libvirt:: 通过命令更改引导顺序
是否有任何 libvirt 命令可用于更改 VM 的引导顺序?我知道编辑 xml 文件可以完成此操作,但我需要一个命令来执行此操作,因为我必须在脚本中编写命令。
谢谢,狮子座
python - 在 Python 中退出控制台连接
我正在编写一些 python 代码来登录到包含虚拟应用程序 (VTA) 的白盒设备。将安装两个不同的 VTA,代码将登录到物理设备,然后使用 virsh 控制台(VTA 的名称)登录到 VTA。
我遇到的问题是退出一个 VTA,然后 virsh 控制台进入另一个。exit 命令只是让我再次进入登录提示,但不会退出控制台连接。
为此,我必须发送一个“control + ]”才能跳出控制台。我一直在网上搜索以尝试找到解决方案,但我发现的唯一选择是发送并“退出”,然后是“\x1b”。但是,这实际上并没有跳出控制台窗口。相反,它结束了我不想要的会话。
有没有办法在 python 中发送“Control + ]”?
以下是一些显示步骤的代码:
当这个函数完成时,代码的第二部分调用一个类似的函数。但是它失败了,因为之前的函数没有断开控制台连接。当代码仍在前一个 VTA 中时,它会尝试为下一个函数发送命令。
这是一个显示它在做什么的输出:
上面的输出表明,当 exit 命令运行并后跟 \x1b 时,它没有正确退出,而是尝试从下一部分发送“virsh list”命令。
openstack - Openstack - 将模拟器固定到多个 CPU
我有一个 Openstack 环境。
我想部署一个具有 4 个 VCPU 的实例,这样每个 VCPU 在主机中将有 2 个相应的 CPU:一个负责 VCPU 的负载,另一个负责模拟。
因此,该主机总共将为该实例固定 8 个 CPU。
我的实例正在使用具有以下属性的风味:
hw:cpu_policy=专用
hw:cpu_thread_policy=隔离
hw:emulator_threads_policy=isolate(为了隔离模拟器使用的CPU)
硬件:numa_nodes=1
聚合实例额外规格:固定=真
我的问题:
根据实例 XML 文件,主机中仅固定了 5 个 CPU:
是否可以在 Openstack 中添加任何配置/属性以将“emulatorpin”设置为 4 个不同的 CPU?
我不喜欢使用“virsh”命令(“virsh edit”或“virsh emulatorpin”),因为它们似乎无法正常工作。(即使重启实例后手动更改 XML 文件也不会生效)
任何帮助将不胜感激!