我正在寻找一个基于 Web 的虚拟机管理器,它可以在我们的 Ubuntu 服务器上运行。理想情况下,我需要一些东西,我们的团队可以使用它来创建 VM、测试构建和打包,然后恢复到原始状态或删除。
libvirt 有一个 API,但我找不到任何使用它的网络应用程序。
谢谢
我正在使用 KVM 和 libvirt,并且每隔 2-3 分钟左右就会在主机和来宾上遇到一次小型网络冻结。冻结持续 1-2 秒。使用的操作系统是 Ubuntu 10 LTS 服务器版。
我正在使用标准的桥接设置,主机还作为来宾的路由器(因为数据中心总是将来宾 IP 路由到主机)。除了偶尔每隔几分钟网络冻结之外,这一切都很好。mtr来自外部机器的跟踪报告大约 1-2% 的数据包丢失(对于主机和来宾)。
我发现当我在主机 (/proc/sys/net/ipv4/ip_forward) 上禁用 ip 转发时,不再发生冻结(但是来宾显然没有网络连接),所以我猜这是一个软件相关的问题而不是硬件问题。
我已经尝试在来宾中切换到替代网络驱动程序(从 virtio 到 e1000/rtl),禁用我们的 iptables 数据包过滤,使用各种网络选项(关闭/打开 icmp 重定向等),但这并没有改变任何事物。
对此的任何想法和想法都非常感谢。
谢谢,托比亚斯
我正在运行 KVM 作为虚拟化引擎。
有没有办法让 QEMU/libvirt 在来宾从内部关闭时在主机上运行脚本(现在关闭 -h)?
我希望能够在来宾停止时运行一些自定义清理任务。
我目前正在开展一个项目,在该项目中我使用 Vagrant 和 Ansible 配置在 VirtualBox 中创建本地环境。我目前在一所大学工作,我们有一个 XenServer 管理程序(免费版)。我无法直接从我的位置访问虚拟机管理程序,但我可以通过 ssh 连接到同一网络上的 Ubuntu 服务器并转发端口,以便我可以使用 XenCenter 连接到它:
ssh <remote machine> -L80:<xen-server>:80 -L443:<xen-server>:443 -L5900:<xenserver>:5900 -L59001...etc to 5910
Run Code Online (Sandbox Code Playgroud)
59xx 端口是因为 XenCenter 将 VNC 控制台放在这些端口上。(我实际上在 Windows 上使用腻子,因为我无法让 OpenXenCenter/Linux 与这种类型的隧道连接)。Citrix XenCenter 连接正常,我可以创建一个新的 VM,但是我无法通过 XenCenter 或其他 VNC 客户端访问控制台。
如果我能让 VNC 控制台工作,我可以创建一个基本框,然后复制它并根据需要使用不同的 ansible playbook 重新配置副本。
但我真的不在乎能否获得控制台,只要我可以自动配置单个 VM。如果我能用另一台机器上的客户端指向虚拟机管理程序并编写具有特定 IP 地址的 VM 创建脚本,那就太好了。Vagrant 不支持 Xen 作为提供者。我发现使用 libvirt 的 Xen 支持有限,但即便如此,它似乎更适合安装在标准发行版(如 Ubuntu 或 OpenSUSE)上的 Xen,而不是作为独立的 Citrix Hypervisor。有 xen-tools,但这似乎也适用于本地 linux 发行版上的 xen。
有没有办法使用 Vagrant 或其他类型的配置工具远程配置 XenServer 实例?
在文档中不太清楚如何在 Ubuntu 12.04 中安装和使用 qemu-guest-agent。
任何人都可以帮助我吗?
http://wiki.libvirt.org/page/Qemu_guest_agent
它是在域内运行的守护程序,旨在帮助管理应用程序执行需要来宾操作系统帮助的功能。我想使用 guest-network-get-interfaces qemu-guest-agent 命令知道来宾 VM 的 IP 地址。
有没有其他方法可以找到来宾 VM 的 IP 地址?
arp -an, arpwatch ,echo syslog | grep $mac_address 在我的场景中没有用?
virsh save vm_name memdump然后virsh restore memdump恢复一个(正在运行的)VM 就好了。
但是,VM 在 之后关闭virsh save。我正在为 KVM 虚拟机编写“实时”备份和恢复脚本,因此在备份部分,我显然需要在备份后运行虚拟机。virsh restore memdump备份后立即执行不是问题,但在我看来基本上没有必要 - 我“应该”能够暂停虚拟机,将其内存保存到文件中,然后简单地恢复/取消挂起虚拟机。
这对于内存很少的虚拟机来说并不是真正的问题,但是如果虚拟机有相当大的工作内存,那么它会不必要地延长备份时间。
不幸的是,即使我virsh suspend在virsh save.
有没有办法做到这一点?(即暂停、保存、取消暂停)
我正在使用以下脚本安装新的 Fedora Server 虚拟机
virt-install \
--name theta-1 \
--ram 8000 \
--disk path=/dev/vg/t1.img \
--vcpus 8 \
--os-type linux \
--os-variant fedora25 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location=/home/user/Fedora-Server-dvd-x86_64-25-1.3.iso \
--extra-args 'console=ttyS0,115200n8 serial'
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时(作为 root 用户)
Installation starts...
Getting file .treeinfo... | 1.5 kB 00:00:00
Getting file vmlinuz... | 6.5 MB 00:00:00
Getting file initrd.img... | 49 MB 00:00:00
ERROR internal error: qemu unexpectedly closed the monitor: 2017-02-17T08:58:23.976542Z qemu-system-x86_64: -drive file=/home/user/Fedora-Server-dvd-x86_64-25-1.3.iso,format=raw,if=none,id=drive-ide0-0-0,readonly=on: Could not open '/home/user/Fedora-Server-dvd-x86_64-25-1.3.iso': …Run Code Online (Sandbox Code Playgroud) 我在编辑 libvirt 的 host-xml 以让 qemu 将 TCP 连接转发到来宾时遇到问题。 这个问题链接到一篇建议添加-redir到 Qemu 命令行的博客文章。但这在最近停止工作。
错误:内部错误:qemu 意外关闭了监视器:qemu-system-x86_64:-redir tcp:5564::3389:不推荐使用 -redir 选项。请改用“-netdev user,hostfwd=...”。
但是,这不是开箱即用的,即我在主机上获得了开放端口,但它没有通过客户端。
我像这样编辑了我的 XML:
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
.
.
.
</devices>
<qemu:commandline>
<qemu:arg value='-net'/>
<qemu:arg value='user,hostfwd=tcp::22222-:22,hostfwd=tcp::8000-:8000'/>
</qemu:commandline>
</domain>
Run Code Online (Sandbox Code Playgroud)
我的测试是nc -l -p 8000在客户端和telnet localhost 8000主机上运行。Telnet 表示一个打开的 TCP 连接,但客户端没有收到任何东西。
我想这是因为 libvirt 已经包含了一个-net user,...选项,不知何故我新定义的选项没有正确处理。 ps aux | grep qemu显示这个:
qemu-system-x86_64 -enable-kvm -name guest=myguestsname,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=~/.config/libvirt/qemu/lib/domain-28 -myguestsname/master-key.aes -machine pc-i440fx-artful,accel=kvm,usb=off,vmport=off,dump-guest-core=off -cpu Skylake-Client -m …
我在 Debian 9.9 上安装了 kvm 来宾和主机,在 AMD 机器上安装了 kde
qemu-kvm 1:2.8+dfsg-6+deb9u7 amd64
fr-ch的可用我正在尝试在 Fedora 32 上使用几乎默认安装的 libvirt/kvm。
安装 libvirt 后,我正在尝试启动default网络:virsh net-start default.
但是由于某种原因,有许多链丢失了,所以它失败了。例如,libvirt 尝试加载的新规则开始于:
-A IN_libvirt_allow -p udp --dport 67 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
但是没有IN_libvirt_allow(或IN_libvirt_post, FORWARD_OUT_ZONES, ...)。
我确实有一些与 libvirt 相关的链,例如LIBVIRT_INP/ LIBVIRT_OUT,但我不确定哪些属于 libvirt,哪些属于 firewalld 以及它们应该如何协同工作。
我缺少什么设置?
libvirt ×10
linux ×3
networking ×3
qemu ×3
fedora ×1
forwarding ×1
provisioning ×1
ubuntu ×1
vagrant ×1
virsh ×1
virt-install ×1
vnc ×1
xen ×1
xenserver ×1