
내 저장 장치는 다음과 같이 마운트됩니다.
$ 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 백업:
- 버쉬 종료 WWE
- virsh 목록 --all
- cp /etc/libvirt/qemu/wwe.xml /etc/libvirt/qemu/orig-wwe.xml
- cp /kvm/vhdd/wwe.img /kvm/vhdd/orig-wwe.img
VM 이미지를 /mnt/kvm 파티션으로 이동합니다.
mkdir /mnt/kvm
mv /kvm/vhdd/wwe.img /mnt/kvm/wwe.img
XML 파일 편집: vim /etc/libvirt/qemu/wwe.xml
From: <source file='/kvm/vhdd/wwe.img'/> To: <source file='/mnt/kvm/wwe.img'/>
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.
-->
따라서 실제 절차는 다음과 같습니다.
virsh shutdown <vmname>
mv oldpath/image.qcow newpath/image.qcow
virsh edit <vmname>
태그 태그를 검색하여<source file="...">
그에 따라 경로를 변경하세요.virsh start <vmname>