[背景:我想实际测试如何在未连接时关闭静态网络接口?]
我正在使用 libvirt(通过virt-manager)设置 QEMU-KVM 虚拟机。我在上面放了两个网卡(都是 virtio)。它们桥接到主机上的物理 NIC。
我想测试当我“拔掉”一个 NetworkManager 时它会做什么。但是在 virt-manager 中没有按钮/复选框,也没有快速的谷歌搜索出现任何东西。
如何模拟拔掉网线?
我试图了解 VM 生态系统的所有组件是如何组合在一起的。
有什么区别:
哪个由virsh和控制virt-install?
这个评论说 libvirt 是 QEMU 之上的抽象,QEMU 是 KVM 之上的抽象。然而官方的 QEMU 文档说 QEMU 是一个处理器模拟器,这听起来像是最低级别的组件。
互联网上有很多资源可以从 VirtualBox 实例创建自定义 vagrant box。但我想知道直接从 kvm/libvirt 实例创建自定义 vagrant box 的直接方法。请不要建议 vagrant-mutate 或任何将 VirtualBox 转换为其他提供程序的工具。
我对 virt-manager / libvirt / KVM 有点迷茫。
我有一个运行良好的 KVM VM (Windows XP)。
VM 由一个 4GB 左右的文件(一个.img)支持。
现在我想做一些非常简单的事情:我想复制我的虚拟机。
我想“好吧,没问题,让我们复制 4GB 文件并复制 XML”文件。
但随后 libvirt 常见问题解答以全部大写表示:“你不应该关心 XML 存储在哪里”
好吧,我不应该在意。但是我该如何复制我的虚拟机呢?
我想创建一个新的 VM,它是该 VM 的副本。
我正在使用 Arch Linux,无论是主机还是访客。对于 UEFI 启动,我已安装edk2-ovmf并让访客使用固件/usr/share/edk2-ovmf/x64/OVMF_CODE.fd。我想创建虚拟机的快照,但收到错误:
Error creating snapshot: Operation not supported: internal snapshots of a VM with pflash based firmware are not supported
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File "/usr/share/virt-manager/virtManager/details/snapshots.py", line 237, in _do_create_snapshot
self.vm.create_snapshot(xml)
File "/usr/share/virt-manager/virtManager/object/domain.py", line 1124, in create_snapshot
self._backend.snapshotCreateXML(xml, flags)
File "/usr/lib/python3.9/site-packages/libvirt.py", line 3059, in snapshotCreateXML
raise libvirtError('virDomainSnapshotCreateXML() failed')
libvirt.libvirtError: Operation not supported: internal snapshots of a VM with pflash based firmware are not …Run Code Online (Sandbox Code Playgroud) 我有一台运行 CentOS 6.5 的物理服务器,有一个接口连接到 Internet(有一个公共 IP 地址)。在这台服务器中,我通过 libvirt 使用 KVM 创建了两个虚拟机,每个虚拟机都有一个接口。我想为每个 VM 分配一个公共 IP 地址并继续使用与物理服务器的连接。
我尝试了各种方法,比如添加一个带有brctl服务器物理接口和两个 VM 虚拟接口的 Linux 桥接器,但它不起作用,我失去了与物理服务器的连接。
我愿意使用 Linux 网桥或 libvirt 网络。
如何在虚拟机和物理服务器中获取公共 IP 地址?
现在,每当我使用 vagrant 时,它都会尝试libvirt用作提供程序。我想默认使用 VirtualBox。
vagrant-libvirt 未安装。
这很麻烦,因为有些命令不起作用,例如vagrant status:
[florian@localhost local]$ vagrant status
The provider 'libvirt' could not be found, but was requested to
back the machine 'foobar'. Please use a provider that exists.
[florian@localhost local]$ vagrant status --provider=virtualbox
An invalid option was specified. The help for this command
is available below.
Usage: vagrant status [name]
-h, --help Print this help
Run Code Online (Sandbox Code Playgroud) 我有当前的 libvirt 1.2.20 我想传递给我的机器,用 virt-manager 创建一些 qemu 标志。我编辑了文件并添加
</devices>
<qemu:commandline>
<qemu:arg value='-L pc-bios'/>
</qemu:commandline>
</domain>
Run Code Online (Sandbox Code Playgroud)
但不起作用我也尝试从 virsh 编辑
virsh edit domain
Run Code Online (Sandbox Code Playgroud)
并放
<qemu:commandline>
<qemu:arg value='-L pc-bios'/>
</qemu:commandline>
Run Code Online (Sandbox Code Playgroud)
但是给我这个错误
errore: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng
Element domain has extra content: qemu:commandline
Failed. Try again? [y,n,i,f,?]:
Run Code Online (Sandbox Code Playgroud)
如何正确传递qemu命令行?谢谢
这与我在 Ask Ubuntu: AddPhysical Partition to QEMU/KVM virtual machine in virt-manager 上的问题有关(如果需要,请参阅末尾处的“更新”)。
每次从 virt-manager 启动虚拟机时,是否有一种好方法可以在主机上运行任意脚本?
原因是我想自动卸载ESP分区/dev/sda1(作为 挂载在主机中/boot/efi),并在虚拟机断电时重新挂载它。
[更新]我使用的脚本可以在这里找到。
libvirt ×10
kvm ×6
qemu ×3
linux ×2
vagrant ×2
virsh ×2
arch-linux ×1
automounting ×1
bridge ×1
fedora ×1
mount ×1
networking ×1
scripting ×1
snapshot ×1
virt-manager ×1
virtualbox ×1