标签: libvirt

替代virsh(libvirt)

我正在使用virsh列表显示计算机上运行的vms列表.我希望在过程中以2d数组的形式打印信息.

解决此问题的一种方法是使用输出,使用标记生成器并将其存储在数组中.但是有没有其他方法可以直接将其转换为数组或其他形式,以便代码更具可伸缩性.(我能想到的是在python中使用libvirt api)

python list libvirt virtual-machine

7
推荐指数
1
解决办法
5892
查看次数

我可以使用带有QEMU后端的libvirt Python模块注册事件回调吗?

我想编写一些代码来监控由libvirt管理的QEMU下运行的域的事件.但是,尝试注册事件处理程序会产生以下错误:

>>> import libvirt
>>> conn = libvirt.openReadOnly('qemu:///system')
>>> conn.domainEventRegister(callback, None)
libvir: Remote error : this function is not supported by the connection driver: no event support
Run Code Online (Sandbox Code Playgroud)

(在这种情况下,"回调"是一个简单打印其​​参数的存根函数.)

我能够找到关于libvirt事件处理的示例似乎并不具体说明哪些后端虚拟机管理程序支持哪些功能.这预计适用于QEMU后端吗?

我正在运行Fedora 16系统,其中包括libvirt 0.9.6qemu-kvm 0.15.1.

对于那些通过<searchengine>找到自己的人:

更新2013-10-04

许多月和一些Fedora版本之后,libvirt git存储库中的event-test.py代码在Fedora 19上正确运行.

python virtualization qemu libvirt

7
推荐指数
1
解决办法
2948
查看次数

如何在libvirt中创建瞬态域?

如何使用libvirt创建瞬态域?(使用QEMU/KVM作为后端)

该文档讨论了此链接上的瞬态域和持久域之间的区别:http://wiki.libvirt.org/page/VM_lifecycle#Transient_guest_domains_vs_Persistent_guest_domains

尽管如此,我还没有找到任何关于如何创建一个的具体例子.

我找到的唯一指针是在这封电子邮件中:https://www.redhat.com/archives/libvirt-users/2011-August/msg00057.html,其中维护者建议在XML的描述字段中添加<transient/>标记<disk>.

当我尝试时,我得到了这个令人失望的答案:"libvirtError: unsupported configuration: transient disks not supported yet".

这个功能真的"还不支持",还是我错过了什么?该文档让我觉得应该支持这一点.

任何与C或Python绑定,virsh或virt-manager相关的答案都将受到高度赞赏!

virtualization kvm qemu libvirt

7
推荐指数
1
解决办法
3323
查看次数

为什么virtio-scsi比我实验中的virtio-blk慢得多(over和ceph rbd image)?

嗨我最近做了一个关于rbd到qemu目标的virtio-scsi实验(用于它的DISCARD/TRIM支持),并将吞吐量和iops与同一台机器上的rbd设置中的virtio-blk进行了比较,在客户端使用fio .连续读写的吞吐量小7倍(42.3MB/s vs 309MB/s),随机读写中的iops小10倍(546 vs 5705).

我所做的是使用OpenStack Juno设置一个虚拟机,它给了我rbd设置的virtio-blk.然后我修改了libvirt configure xml中的相关部分,由此:

<disk type='network' device='disk'>
  <driver name='qemu' type='raw' cache='writeback'/>
  <auth username='cinder'>
    <secret type='ceph' uuid='482b83f9-be95-448e-87cc-9fa602196590'/>
  </auth>
  <source protocol='rbd' name='vms/c504ea8b-18e6-491e-9470-41c60aa50b81_disk'>
    <host name='192.168.20.105' port='6789'/>
  </source>
  <target dev='vda' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
Run Code Online (Sandbox Code Playgroud)

对此:

<disk type='network' device='disk'>
  <driver name='qemu' type='raw' cache='writeback' discard='unmap'/>
  <auth username='cinder'>
    <secret type='ceph' uuid='482b83f9-be95-448e-87cc-9fa602196590'/>
  </auth>
  <source protocol='rbd' name='vms/c504ea8b-18e6-491e-9470-41c60aa50b81_disk'>
    <host name='192.168.20.105' port='6789'/>
  </source>
  <target dev='vda' bus='scsi'/>
  <controller type='scsi' model='virtio-scsi' index='0'/>
</disk>
Run Code Online (Sandbox Code Playgroud)

软件版本是:

qemu 2.5.1

libvirt 1.2.2

内核 3.18.0-031800-generic#201412071935 SMP Mon Dec …

performance qemu scsi libvirt block-device

7
推荐指数
1
解决办法
6093
查看次数

如何在python中处理交互式API

我处于这样一种情况,我需要将一些文本传递给API生成的提示(对于API而言,这是一个非常奇怪的行为,这是我第一次碰到这个),如下所示:

kvm_cli = libvirt.open("qemu+ssh://han@10.0.10.8/system")
Run Code Online (Sandbox Code Playgroud)

然后一个提示出现询问ssh密码(password for 10.0.10.8 is:),我必须手动输入它,以便继续前进并产生kvm_cli我需要的对象.

我尝试使用该pexpect模块来处理这个问题,但它是用于OS命令行而不是API.

通过使用ssh认证文件也可以解决这个问题,但在我们的场景中它不是一种有利的认证方法.

由于我们对'open'方法的包装不是交互式的,我们不能要求用户输入密码,你们有什么想法我怎么能解决它?

python libvirt

6
推荐指数
1
解决办法
1668
查看次数

libvirtError:内部错误无法为给定数据找到合适的CPU模型

我试图在全新安装OpenStack后运行一个简单的实例.实例无法启动,在日志中我发现"libvirtError:内部错误无法找到适合给定数据的CPU模型".请帮忙.

一些信息:

libvirt.x86_64 0.10.2.6-5.el6.centos.alt

qemu-kvm.x86_64 2:0.12.1.2-2.355.0.1.el6.centos.6

CentOS发布6.4(最终版).(Linux 3.4.54-8.el6.centos.alt.x86_64#1 SMP Tue Jul 23 17:29:30 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux)

/usr/libexec/qemu-kvm  --cpu ?
x86       Opteron_G5  AMD Opteron 63xx class CPU                      
x86       Opteron_G4  AMD Opteron 62xx class CPU                      
x86       Opteron_G3  AMD Opteron 23xx (Gen 3 Class Opteron)          
x86       Opteron_G2  AMD Opteron 22xx (Gen 2 Class Opteron)          
x86       Opteron_G1  AMD Opteron 240 (Gen 1 Class Opteron)           
x86          Haswell  Intel Core Processor (Haswell)                  
x86      SandyBridge  Intel Xeon E312xx (Sandy Bridge)                
x86         Westmere  Westmere E56xx/L56xx/X56xx …
Run Code Online (Sandbox Code Playgroud)

kvm libvirt openstack

6
推荐指数
1
解决办法
8839
查看次数

KVM 中的动态内存分配

我有 Ubuntu 16.04 主机,我在上面使用 KVM 安装了一个虚拟来宾(Windows server 2012)。可用的总 RAM 为 16 GB。

我已经安装了 virtio 气球驱动程序。我已经为 Windows 分配了 4GB 的当前内存和 12GB 的最大内存。但是,Windows 将 8GB 未分配内存视为已用内存。

来宾中的内存使用情况

当我打开一些繁重的应用程序时,分配的内存仅限于 4GB 的可用内存。在 Windows 中使用全部内存时,计算机的行为方式相同(运行不顺畅)。

Windows 可以看到所有 12 GB 的 RAM,但只能使用 4 GB。如何确保 Windows 可以利用所有 12GB 内存?

ram memory-management kvm libvirt virtual-machine

6
推荐指数
1
解决办法
9257
查看次数

主机不支持请求的功能:CPUID.01H:EDX.ds [位 21] 此警告是否影响虚拟机性能或使用?

从VM qemu日志中发现了很多警告,这个警告是否影响虚拟机性能或使用?, 是我的 libvirt.xml 文件有问题吗?或者支持热插拔会有这些警告

这是我的 libvirt xml 配置:

<domain type='kvm' id='315'>
  <name>instance-000005b2</name>
  <uuid>793fe065-36a6-4840-80cf-840ebed41d3e</uuid>
  <maxMemory slots='32' unit='KiB'>68719476736</maxMemory>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='auto'>8</vcpu>
  <vcpus>
    <vcpu id='0' enabled='yes' hotpluggable='no' order='1'/>
    <vcpu id='1' enabled='yes' hotpluggable='yes' order='2'/>
    <vcpu id='2' enabled='yes' hotpluggable='yes' order='3'/>
    <vcpu id='3' enabled='yes' hotpluggable='yes' order='4'/>
    <vcpu id='4' enabled='yes' hotpluggable='yes' order='5'/>
    <vcpu id='5' enabled='yes' hotpluggable='yes' order='6'/>
    <vcpu id='6' enabled='yes' hotpluggable='yes' order='7'/>
    <vcpu id='7' enabled='yes' hotpluggable='yes' order='8'/>
  </vcpus>
  <cputune>
    <shares>2048</shares>
    <vcpupin vcpu='0' cpuset='0-9,20-29'/>
    <vcpupin vcpu='1' cpuset='0-9,20-29'/>
    <emulatorpin cpuset='0-9,20-29'/>
  </cputune>
  <numatune>
    <memory mode='strict' nodeset='0'/> …
Run Code Online (Sandbox Code Playgroud)

linux kvm qemu libvirt virtual-machine

6
推荐指数
1
解决办法
2万
查看次数

是否可以在 x86_64 主机上运行 ARM64 vagrant 实例

我正在尝试在 x86_64 主机上运行 ARM64 Ubuntu VM 以用于开发目的。我在他们的网站上搜索了 vagrant box 只找到了这个:

https://app.vagrantup.com/boxes/search?provider=libvirt&q=arm64&sort=downloads&utf8=%E2%9C%93

但是,我未能启动该 VM(使用vagrant up --provider libvirt),因为它似乎使用qemu-system-x86_64用作模拟器而不是qemu-system-aarch64. 我用的vagrantfile?

Vagrant.configure("2") do |config|
  config.vm.box = "MalibuKoKo/ubuntu-18.04.3-server-arm64-raspberry-4"
  config.vm.define "ubuntu18.04-aarch64"
  config.vm.provider :libvirt do |libvirt|
    libvirt.machine_arch = "aarch64"
    libvirt.uri = 'qemu:///system'
    libvirt.emulator_path = "/usr/bin/qemu-system-aarch64"
  end
end
Run Code Online (Sandbox Code Playgroud)

任何建议如何提出它?谢谢

linux qemu libvirt vagrant vagrantfile

6
推荐指数
0
解决办法
631
查看次数

无法在 Windows 10 上的 WSL2(适用于 Linux 2 的 Windows 子系统)内实例化 qemu-kvm VM

我目前正在 Windows 10 Fast Ring 版本(Build 20161)上尝试适用于 Linux v2 的 Windows 子系统。更具体地说,我尝试使用嵌套虚拟化运行 qemu-kvm 虚拟机,但每次使用 virt-manager 创建新虚拟机的尝试都以失败告终。

\n

我在 WSL2 实例中使用 Ubuntu 18.04,带有自定义构建的内核(其中包括与虚拟化相关的所有内容 - 请参阅本指南: https: //boxofcables.dev/accelerated-kvm-guests-on-wsl-2/)和“在我的 WSL 配置文件中,“nestedVirtualization”设置为“true”。更重要的是,“sudo kvm-ok”在 Ubuntu 实例中运行时会返回积极的结果。

\n

我确实在 Ubuntu WSL 中安装了 DBUS,并且该服务正在运行,所以我相信这不是问题的根源。我正在使用 VcXsrv 来显示 X11 窗口。

\n

以下是我每次尝试时遇到的错误:

\n

Libvirtd.log

\n
2020-07-07 03:33:24.507+0000: 1273: info : libvirt version: 4.0.0, package: 1ubuntu8.17 (Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 06 May 2020 14:18:23 -0400)\n2020-07-07 03:33:24.507+0000: 1273: info : hostname: LAPTOP-DRAGOS\n2020-07-07 03:33:24.507+0000: 1273: error : udevGetDMIData:1818 : internal error: …
Run Code Online (Sandbox Code Playgroud)

kvm qemu libvirt windows-subsystem-for-linux ubuntu-18.04

6
推荐指数
1
解决办法
2万
查看次数