![将 libvirt+KVM 虚拟机导出到文件](https://linux22.com/image/662950/%E5%B0%86%20libvirt%2BKVM%20%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%AF%BC%E5%87%BA%E5%88%B0%E6%96%87%E4%BB%B6.png)
我打算淘汰旧的 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”内