标签: libvirt

KVM(virtio 驱动程序)的网络性能不佳 - 更新:使用 vhost_net

我之前已经设置了几个基于 KVM 的网络,但从未遇到过这个问题,我一生都无法想象我以前会设置什么不同的网络。

设置

基本上,我已经完全拥有戴尔堆栈:

  • 2x Dell N2024(堆叠千兆交换机)
  • 几个用于 KVM 管理程序的 Dell R720
  • 2 个用于网关/防火墙的 Dell R320

所有机器都运行 CentOS6.5,hypervisor,基本上是标准安装,有一些 sysctl 调整。

目前,我有一些测试 VM 的设置,它们的设置与它们的主机相似(CentOS 6.X,基本安装带有基本的 puppet 驱动配置)。所有虚拟机都是:

  • 桥接到两个物理分离的网络之一(即每个管理程序有两个以太网连接,一个用于公共/DMZ 桥接 LAN,另一个用于私有)
  • 所有 VM 都使用 virtio 来处理网络、块设备(基本上是运行 virt-install 命令的标准结果)——例如(例如 libvirt 配置)

    <interface type='bridge'>
          <mac address='52:54:00:11:a7:f0'/>
          <source bridge='dmzbr0'/>
          <model type='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    
    Run Code Online (Sandbox Code Playgroud)
  • 并且所有 VM 都可以访问 2 到 8 个 VCPU 以及 8 到 64GB 的 RAM,并且它们的驱动器是主机上的 LVM 卷

VM 中的一些简单文件副本和 dd 测试产生了完全可以接受的结果(在这些小规模综合测试中为 300MB/s - 800MB/s)

物理机之间的网络性能

我现在已经离开了 Jumbo …

networking centos libvirt kvm-virtualization virtio

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

如何将原始磁盘映像转换为基于另一个映像的写时复制映像以与 kvm 和 virt-manager 一起使用?

我有一台在 kvm 上运行的虚拟 Windows 机器。目前它有一个 90GB 的原始磁盘映像。我想克隆这个 VM,而不必保留 90GB 原始磁盘映像的两个副本。

这样做的一个好方法是基于原始图像制作两个新的 qcow 或 qcow2 图像。首先,我将原始图像转换为 qcow2 图像:

qemu-img convert -O qcow2 basewindowsxp.img basewindowsxp.qcow2
Run Code Online (Sandbox Code Playgroud)

然后我尝试创建一个由这个支持的新图像:

qemu-img create -F qcow2 -f qcow2 -b `pwd`/basewindowsxp.qcow2 windowsxp-1.qcow2
Run Code Online (Sandbox Code Playgroud)

然后我使用 virt-manager 将原始 VM 指向 windowsxp-1.qcow2。但是,当我尝试以这种新配置启动 VM 时,virt-manager 报告错误:

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/engine.py", line 588, in run_domain
    vm.startup()
  File "/usr/share/virt-manager/virtManager/domain.py", line 150, in startup
    self._backend.create()
  File "/usr/lib/python2.6/dist-packages/libvirt.py", line 300, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: internal error unable …
Run Code Online (Sandbox Code Playgroud)

libvirt qemu qcow2 kvm-virtualization

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

通过libvirt进行监控和统计

是否可以通过主机系统(基于 KVM)的控制台使用 libvirt 实时监控和收集来宾系统的统计信息(CPU、内存、HDD、网络等 - 类似于 dstat)?如果是,这些 guest 虚拟机是否需要通过 libvirt 创建?

virtualization linux libvirt kvm-virtualization

4
推荐指数
1
解决办法
7132
查看次数

如何在 libvirt/KVM gui 中增加视频内存?

在“虚拟硬件详细信息”中,它将该型号列为具有 9MB RAM 的“卷云”。RAM 字段无法更改,但如何创建视频 RAM?我的主机操作系统是 RH6,阵风操作系统是 Fedora16。

编辑:从来宾操作系统,当我运行xvinfo它显示“没有适配器存在”。

我试图使用 gstreamers xvimagesink 插件(使用 Xv 扩展的 XFree86 视频输出插件)播放视频。问题是 xvimagesink 正在使用硬件加速来提高视频性能,因此会出现错误Could not initialize Xv output

我想我必须为来宾配置硬件加速。

virtual-machines libvirt kvm-virtualization

4
推荐指数
1
解决办法
3万
查看次数

libvirtError 该域已存在,但 virsh 列表未显示它

当我尝试使用 OpenStack 启动一个实例时,我在 nova-compute.log 中收到以下错误:

(nova.rpc): TRACE: libvirtError: operation failed: domain 'instance-0000000a' already exists with uuid 5f81a7d2-1b0f-8c72-4e1e-377c275e9289
Run Code Online (Sandbox Code Playgroud)

但是, virsh 不显示任何域:

$ sudo virsh list
 Id Name                 State
----------------------------------
Run Code Online (Sandbox Code Playgroud)

如果该域在那里,为什么不在 virsh 中显示?

libvirt openstack

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

Libvirt:无法关闭或重新启动虚拟来宾

我无法从主机重新启动或关闭来宾虚拟机

virsh -c qemu:///system reboot vm1
Domain vm1 is being rebooted
Run Code Online (Sandbox Code Playgroud)

执行此操作后,没有任何反应。来宾虚拟机继续工作。

有人可以帮忙吗?我正在使用 CentOS 6.3、libvirtd、kvm。来宾虚拟机也是 CentOS 6.3

libvirt centos6 kvm-virtualization

4
推荐指数
1
解决办法
9838
查看次数

Libvirt 来宾在关机后被销毁

我用Libvirt创建了一个VM,当我强行或使用ACPI关闭它时,它会被删除。我创建它:

<domain type='kvm'>
    <name>deneme2</name>
    <memory>2097152</memory>
    <vcpu>1</vcpu>
    <os>
        <type>hvm</type>
        <boot dev="hd" />
    </os>
    <features>
       <acpi/>
    </features>
    <on_poweroff>preserve</on_poweroff>
    <on_reboot>restart</on_reboot>
    <on_crash>restart</on_crash>
    <on_lockfailure>poweroff</on_lockfailure>
    <devices>
        <graphics type='vnc' port='-1'/>
        <disk type='file' device='disk'>
            <driver name='qemu' type='qcow2'/>
            <source file='/home/mustafa/buki/vms/deneme2/disk0.img'/>
            <target dev='vda' bus='virtio'/>
        </disk>
        <disk type='file' device='disk'>
            <source file='/home/mustafa/buki/vms/deneme2/cloud-init.img'/>
            <target dev='vdb' bus="virtio"/>
        </disk>
        <interface type='network'>
            <source network='br0-bridge'/>
            <mac address='00:16:3e:5a:41:9c'/>
            <model type="virtio" />
        </interface>

    </devices>
Run Code Online (Sandbox Code Playgroud)

但是,尽管我正确使用了 on_poweroff 事件,但它会立即被删除。

$ virsh dumpxml deneme2 | grep "on_poweroff"
  <on_poweroff>preserve</on_poweroff>

$ virsh shutdown deneme2 --mode acpi
Domain deneme2 is being shutdown

$ virsh list …
Run Code Online (Sandbox Code Playgroud)

libvirt qemu kvm-virtualization shutdown

4
推荐指数
1
解决办法
4804
查看次数

KVM/libvirt:如何在具有不同 CPU 的 2 台主机之间迁移

我试图将我的 KVM 主机从带有 AMD cpu 的主机迁移到带有 Intel CPU 的主机,但是当我运行时virsh start guest_name我得到了error: unsupported configuration: CPU model ... is not supported by hypervisor.

我知道 KVM 支持这样的迁移(在 FAQ 中他们甚至谈到了 64 位 AMD/Intel CPU 之间的实时迁移)。我该怎么办?

libvirt kvm-virtualization

4
推荐指数
1
解决办法
3220
查看次数

即使 qemu-kvm 可以工作,Libvirt 也没有 KVM 功能

我了解到 CirrusCI 在其公共存储库的免费软件包中提供嵌套虚拟化,我正在尝试利用它来测试我的 Ansible 剧本。

不幸的是,libvirt 坚持认为 CI 环境不支持完全虚拟化。所有检查(我知道的)都证明了相反的情况,并且 qemu-kvm 在直接调用时可以正常工作。我几乎可以肯定问题出在我的主机操作系统配置上,而不是出在 CI 引擎上。我见过其他人出于他们的目的(Android 仿真、氧化还原测试)在 CirrusCI 上使用完全虚拟化。

我使用 Debian 10 作为主机系统,来自 DockerHub 的超薄映像,并安装了以下额外的软件包(--no-install-recommends):

bridge-utils  libguestfs-tools       python3-dev
coreutils     libosinfo-bin          python3-venv
cpu-checker   libssl-dev             qemu-kvm
curl          libvirt-clients        qemu-kvm
gcc           libvirt-daemon         qemu-utils
gpg           libvirt-daemon-system  systemd
gpg-agent     linux-image-amd64      vagrant
iproute2      make                   vagrant-libvirt
kmod          procps                 virt-goodies
libc-dev      python3                virtinst
libffi-dev
Run Code Online (Sandbox Code Playgroud)

基础图像 CirrusCI 配置

我可能缺少什么?为什么当 qemu-kvm 完美运行时,libvirt 会告诉没有 KVM?

libvirt 错误

Error while creating domain: Error saving the server: Call to virDomainDefineXML failed: invalid argument: could not …
Run Code Online (Sandbox Code Playgroud)

debian libvirt kvm-virtualization

4
推荐指数
1
解决办法
5871
查看次数

libvirt“保存的状态/快照”存储在哪里?

我有一个 .qcow2 图像,我可以轻松地将它移植到另一台计算机上。但我也想移植它的保存状态。它们存放在哪里?

我在 Manjaro/Arch。

linux libvirt qemu kvm-virtualization

4
推荐指数
1
解决办法
342
查看次数