我之前已经设置了几个基于 KVM 的网络,但从未遇到过这个问题,我一生都无法想象我以前会设置什么不同的网络。
设置
基本上,我已经完全拥有戴尔堆栈:
所有机器都运行 CentOS6.5,hypervisor,基本上是标准安装,有一些 sysctl 调整。
目前,我有一些测试 VM 的设置,它们的设置与它们的主机相似(CentOS 6.X,基本安装带有基本的 puppet 驱动配置)。所有虚拟机都是:
所有 VM 都使用 virtio 来处理网络、块设备(基本上是运行 virt-install 命令的标准结果)——例如(例如 libvirt 配置)
Run Code Online (Sandbox Code Playgroud)<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>
并且所有 VM 都可以访问 2 到 8 个 VCPU 以及 8 到 64GB 的 RAM,并且它们的驱动器是主机上的 LVM 卷
VM 中的一些简单文件副本和 dd 测试产生了完全可以接受的结果(在这些小规模综合测试中为 300MB/s - 800MB/s)
物理机之间的网络性能
我现在已经离开了 Jumbo …
我有一台在 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) 是否可以通过主机系统(基于 KVM)的控制台使用 libvirt 实时监控和收集来宾系统的统计信息(CPU、内存、HDD、网络等 - 类似于 dstat)?如果是,这些 guest 虚拟机是否需要通过 libvirt 创建?
在“虚拟硬件详细信息”中,它将该型号列为具有 9MB RAM 的“卷云”。RAM 字段无法更改,但如何创建视频 RAM?我的主机操作系统是 RH6,阵风操作系统是 Fedora16。
编辑:从来宾操作系统,当我运行xvinfo它显示“没有适配器存在”。
我试图使用 gstreamers xvimagesink 插件(使用 Xv 扩展的 XFree86 视频输出插件)播放视频。问题是 xvimagesink 正在使用硬件加速来提高视频性能,因此会出现错误Could not initialize Xv output。
我想我必须为来宾配置硬件加速。
当我尝试使用 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 中显示?
我无法从主机重新启动或关闭来宾虚拟机
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创建了一个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) 我试图将我的 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 之间的实时迁移)。我该怎么办?
我了解到 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)
我可能缺少什么?为什么当 qemu-kvm 完美运行时,libvirt 会告诉没有 KVM?
Error while creating domain: Error saving the server: Call to virDomainDefineXML failed: invalid argument: could not …Run Code Online (Sandbox Code Playgroud) 我有一个 .qcow2 图像,我可以轻松地将它移植到另一台计算机上。但我也想移植它的保存状态。它们存放在哪里?
我在 Manjaro/Arch。