将 libvirt+KVM 虚拟机导出到文件

将 libvirt+KVM 虚拟机导出到文件

我打算淘汰旧的 libvirt + KVM 服务器,但我需要保留虚拟机。不幸的是,网络已断线,我无法与系统建立连接。

有什么方法可以使用virsh或其他实用程序导出虚拟机吗?

澄清:我需要磁盘和所有东西。我将把机器部署到另一台服务器。

答案1

如果你需要使用 virsh 备份虚拟机配置,则可以使用以下命令

virsh dumpxml vmname > vmname.xml 

如果你需要将虚拟机移动到其他服务器,你可以转储虚拟机配置并传输 xml,如果你使用文件作为虚拟机的后端存储,你可以使用 scp 或 rsync 将文件复制到其他服务器,当你复制虚拟机的磁盘文件时,你可以尝试使用以下命令启动虚拟机virsh define /tmp/myvm.xml && virsh start myvm

答案2

您应该能够从快照中对磁盘进行映像处理:

首先您需要确保虚拟机没有运行:

virsh suspend vm

现在您可以创建快照,确保调整大小100米和名字虚拟机根目录快照以满足您自己的需要。

lvcreate -L 100M -n vm-root-snapshot -s /dev/sysvg/vm-root

此后您可以重新启动虚拟机。

virsh resume vm

现在您有了快照,您可以创建图像并删除快照:

dd if=/dev/mapper/sysvg-vm--root--snapshot of=/tmp/vm-root.img bs=1M
lvremove /dev/mapper/sysvg-vm--root--snapshot

可以将映像复制到新服务器,并使用 dd 导入到新服务器上的 LVM

dd if=/tmp/vm-root.img of=/dev/mapper/sysvg-vm--root bs=1M

也不要忘记导入你的 XML 文件。

virsh define /path/to/vm.xml

答案3

此外virsh dumpxml,还将把虚拟机设置导出到 XML 文件:

复制虚拟机磁盘映像,如果它们是稀疏的或位于块卷上,则正确的方法是使用qemu-img convert -O output_format source destination

要导入,请编辑 XML 以反映磁盘映像的新位置,然后运行virsh define path/to/dumpXML

答案4

您可以在“/etc/libvirt/qemu”文件夹中找到您的 VM 配置文件(由 导出virsh dumpxml vmname > vmconfig.xml)以及 qemu 网络配置。然后从新的 libvirt 安装文件夹手动将 vm 配置文件复制到相同的 libvirt“/etc/libvirt/qemu”。

如果需要,您还可以备份/比较所有 libvirt *.conf 配置文件,以比较之前安装的所有配置。它们位于“/etc/libvirt”内

相关内容