원본 VM 백업:

원본 VM 백업:

내 저장 장치는 다음과 같이 마운트됩니다.

$ 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

원본 VM 백업:

  1. 버쉬 종료 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'/>
    
  4. virsh 시작 WWE

메모:언제든지 원본 파일을 사용하여 원래 상태로 복원할 수 있지만, 아래는 KVM Infra에서 VM 복제 및 이동에 사용되는 대체 방법입니다.



KVM - 사용 가능한 이미지에서 게스트 복제:

1- 기본 VM을 생성하고 OS를 설치한 후 기본 VM을 종료합니다.

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- 템플릿에서 새 VM 복제: 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 로 가정) 어딘가로 이동해야 합니까?

그렇다면 나는 다음과 같이 할 것이다:

  • 가상 머신을 중지(VM 자체에서 poweroff 또는 다른 명령 사용)한 다음 virt-manager(또는 virsh)에서 중지된 상태를 기다립니다.

  • 이미지 파일을 새 위치로 이동

  • VM 정의에서 이미지 위치 변경:

  • virt-manager GUI를 사용하거나(VM 정의에서 HDD를 제거하고 새 위치에서 다시 추가),

  • 또는 virsh를 사용합니다(VM 이름이 '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
    
  • VM을 다시 시작합니다.

답변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> 태그 태그를 검색하여 <source file="...">그에 따라 경로를 변경하세요.
  4. virsh start <vmname>

관련 정보