备份原始虚拟机:

备份原始虚拟机:

我的存储设备安装如下:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md2        193G   35G  148G  19% /
/dev/md4        492G   73M  466G   1% /mnt

我的 KVM 映像位于/kvm/vhdd/分区上/dev/md2

ls -l /kvm/vhdd/wwe.img
-rw------- 1 libvirt-qemu kvm 163611607040 Mar  9 09:12 /kvm/vhdd/wwe.img

我需要移动这个图像分区/dev/md4,即目录/mnt

如何做到这一点?我可以停止我的虚拟机。但停止后我应该做什么?我应该直接制作吗cp?还是我应该编辑配置?我发现

grep -R "/kvm" /etc/
/etc/libvirt/qemu.conf:#    "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
/etc/libvirt/storage/autostart/iso.xml:    <path>/kvm/iso</path>
/etc/libvirt/storage/autostart/vhdd.xml:    <path>/kvm/vhdd</path>
/etc/libvirt/storage/iso.xml:    <path>/kvm/iso</path>
/etc/libvirt/storage/vhdd.xml:    <path>/kvm/vhdd</path>
/etc/libvirt/qemu/wwe.xml:    <emulator>/usr/bin/kvm-spice</emulator>
/etc/libvirt/qemu/wwe.xml:      <source file='/kvm/vhdd/wwe.img'/>
/etc/libvirt/qemu/autostart/wwe.xml:    <emulator>/usr/bin/kvm-spice</emulator>
/etc/libvirt/qemu/autostart/wwe.xml:      <source file='/kvm/vhdd/wwe.img'/>
/etc/default/libvirtd:# Start libvirtd to handle qemu/kvm:
/etc/default/qemu-kvm:# /run/hugepages/kvm
/etc/apparmor.d/libvirt/libvirt-68d2ecf6-4569-49cc-871f-042a42ad1c03.files:  "/kvm/vhdd/wwe.img" rwk,

/kvm/vhdd/我是否应该在配置中替换此路径?请帮忙,我担心会导致服务崩溃,谢谢。

答案1

备份原始虚拟机:

  1. virsh 关闭 wwe
  2. virsh 列表 --all
  3. cp /etc/libvirt/qemu/wwe.xml /etc/libvirt/qemu/orig-wwe.xml
  4. cp /kvm/vhdd/wwe.img /kvm/vhdd/orig-wwe.img

将虚拟机映像移动到分区 /mnt/kvm:

  1. mkdir /mnt/kvm

  2. mv /kvm/vhdd/wwe.img /mnt/kvm/wwe.img

  3. 编辑 XML 文件:vim /etc/libvirt/qemu/wwe.xml

    From: <source file='/kvm/vhdd/wwe.img'/>
    
    To: <source file='/mnt/kvm/wwe.img'/>
    
  4. virsh 开始 wwe

笔记:您可以随时使用原始文件恢复到原始状态,但是下面是在 KVM Infra 中克隆和移动 VM 的另一种方法。



KVM-从可用映像克隆客户机:

1-创建基础虚拟机并安装操作系统,关闭基础虚拟机

virsh shutdown basevm

2- 将其 XML 文件转储到 template.xml 并将其图像复制到 template.qcow2

virsh dumpxml basevm > /etc/libvirt/qemu/template.xml
cp /home/kvm/images/basevm.qcow2 /home/kvm/images/template.qcow2

3- 在 template.xml 中将磁盘源文件指向 template.qcow2

<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='none'/>
  <source file='/home/kvm/images/template.qcow2'/>
  <target dev='vda' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

4- 在 template.qcow2 上运行 virt-sysprep。重置图像,例如将删除 SSH 密钥、创建新的 MAC 地址、清理日志文件等。

virt-sysprep -a /home/kvm/images/template.qcow2

5- 此后您不再需要基础 VM。如果不使用,请将其删除。

virsh undefine basevm
rm /home/kvm/images/basevm.qcow2

6- 从模板克隆新虚拟机:template.xml 和 template.qcow2

virt-clone --connect qemu:///system --original-xml /etc/libvirt/qemu/template.xml --name server --file /home/kvm/images/template.qcow2

KVM-将客户机移动至另一台主机:

1- 完成上述步骤后,将 xml 和图像文件传输到新的主机 KVM:

scp /etc/libvirt/qemu/template.xml kvm02:/etc/libvirt/qemu/template.xml
scp /home/kvm/images/template.qcow2 kvm02:/home/kvm/images/template.qcow2

virt-sysprep -a /home/kvm/images/template.qcow2
virsh define /etc/libvirt/qemu/template.xml
virsh start vm

答案2

如果我理解正确,您需要将 /kvm/vhdd/wwe.img 移动到 /mnt 中的某个位置(比如说 /mnt/kvm/vhdd/wwe.img )?

如果是这样的话我会:

  • 停止虚拟机(使用 poweroff 或虚拟机本身中的其他命令),然后等待 virt-manager(或 virsh)中的停止状态

  • 将图像文件移动到新位置

  • 更改虚拟机定义中的图像位置:

  • 或者使用 virt-manager GUI(删除 VM 定义中的硬盘并从新位置再次添加),

  • 或者使用 virsh(假设虚拟机名称是“wwe”),例如:

    ~# virsh dumpxml wwe > wwe.xml
    
    ~# sed "s[file='/kvm/vhdd/wwe.img'[file='/mnt/kvm/vhdd/wwe.img'[" wwe.xml > wwe_new.xml
    
    ~# diff wwe.xml wwe_new.xml
    

    (将仅显示文件位置变化作为差异)

    ~# virsh undefine wwe
    
    ~# virsh define wwe_new.xml
    
  • 重新启动虚拟机。

答案3

除了已经说过的之外,我建议使用virsh edit而不是直接编辑 /etc 中的 xml 文件。此文件中的注释如下:

<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit vmname
or other application using the libvirt API.
-->

所以实际的过程是这样的:

  1. virsh shutdown <vmname>
  2. mv oldpath/image.qcow newpath/image.qcow
  3. virsh edit <vmname> 搜索标签tag<source file="...">并相应更改路径。
  4. virsh start <vmname>

相关内容