如何将 KVM 镜像替换到其他分区?

Pid*_*una 1 virtualization linux libvirt qcow2 kvm-virtualization

我有这样的硬盘空间结构:

df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             16G     0   16G   0% /dev
tmpfs           3.2G  8.9M  3.2G   1% /run
/dev/md2        193G   35G  148G  19% /
tmpfs            16G     0   16G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            16G     0   16G   0% /sys/fs/cgroup
/dev/md4        492G   73M  466G   1% /mnt
Run Code Online (Sandbox Code Playgroud)

现在,我的 kvm-image 开启/dev/md2/ ls -l /kvm/vhdd/wwe.img -rw------- 1 libvirt-qemu kvm 163611607040 Mar 9 09:12 /kvm/vhdd/wwe.img

我需要将此图像替换为/dev/md4to /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/在我的配置中替换这条路径吗?请帮忙,我怕服务崩溃,谢谢。

Saq*_*hmi 5

备份原始虚拟机:

  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

将 VM 映像移动到分区 /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'/>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 虚拟世界职业摔跤

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



KVM - 从可用图像克隆来宾:

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

virsh shutdown basevm
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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

virt-sysprep -a /home/kvm/images/template.qcow2
Run Code Online (Sandbox Code Playgroud)

5- 在此之后,您不再需要基本 VM。如果不使用,请删除它。

virsh undefine basevm
rm /home/kvm/images/basevm.qcow2
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)