
Meus dispositivos de armazenamento são montados da seguinte forma:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md2 193G 35G 148G 19% /
/dev/md4 492G 73M 466G 1% /mnt
Minha imagem KVM está localizada /kvm/vhdd/
na partição/dev/md2
ls -l /kvm/vhdd/wwe.img
-rw------- 1 libvirt-qemu kvm 163611607040 Mar 9 09:12 /kvm/vhdd/wwe.img
Preciso mover esta partição de imagem /dev/md4
, ou seja, diretório /mnt
.
Como fazer isso? Posso parar minha máquina virtual. Mas o que devo fazer depois de parar? Devo apenas fazer cp
? Ou devo editar as configurações? eu encontrei
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,
Devo substituir esse caminho /kvm/vhdd/
em minhas configurações? Por favor me ajude, estou com medo de travar o serviço, obrigado.
Responder1
Backup da VM original:
- desligamento virsh wwe
- lista virsh --todos
- cp /etc/libvirt/qemu/wwe.xml /etc/libvirt/qemu/orig-wwe.xml
- cp /kvm/vhdd/wwe.img /kvm/vhdd/orig-wwe.img
Mova a imagem da VM para a partição /mnt/kvm:
mkdir /mnt/kvm
mv /kvm/vhdd/wwe.img /mnt/kvm/wwe.img
Edite o arquivo XML: vim /etc/libvirt/qemu/wwe.xml
From: <source file='/kvm/vhdd/wwe.img'/> To: <source file='/mnt/kvm/wwe.img'/>
virsh começar wwe
Observação:Você pode restaurar o estado original usando arquivos originais a qualquer momento, no entanto, abaixo está uma forma alternativa usada para clonar e mover VM no KVM Infra.
KVM - Clonar convidados da imagem disponível:
1- crie uma VM base e instale o SO, desligue a VM base
virsh shutdown basevm
2- despeje seu arquivo XML em template.xml e copie sua imagem em template.qcow2
virsh dumpxml basevm > /etc/libvirt/qemu/template.xml
cp /home/kvm/images/basevm.qcow2 /home/kvm/images/template.qcow2
3- em template.xml aponte o arquivo de origem do disco para 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- execute virt-sysprep em template.qcow2. para redefinir a imagem, por exemplo, removerá chaves SSH, criará um novo endereço MAC, limpará arquivos de log, etc.
virt-sysprep -a /home/kvm/images/template.qcow2
5- após este ponto você não precisa mais da VM base. Exclua-o se não estiver em uso.
virsh undefine basevm
rm /home/kvm/images/basevm.qcow2
6- Clonando novas VMs do Template: template.xml e template.qcow2
virt-clone --connect qemu:///system --original-xml /etc/libvirt/qemu/template.xml --name server --file /home/kvm/images/template.qcow2
KVM - Mover convidado para outro host:
1- Após as etapas acima, transfira o arquivo xml e de imagem para o novo Host 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
Responder2
Se bem entendi, sua necessidade é mover /kvm/vhdd/wwe.img para algum lugar em /mnt (digamos /mnt/kvm/vhdd/wwe.img )?
Se sim, eu faria:
pare a máquina virtual (usando poweroff ou outro comando na própria VM) e aguarde o estado interrompido no virt-manager (ou virsh)
mova o arquivo de imagem para um novo local
altere a localização da imagem na definição da VM:
usando a GUI do virt-manager (remova o disco rígido na definição da VM e adicione novamente do novo local),
ou com virsh (assumindo que o nome da VM seja 'wwe'), por exemplo:
~# 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
(mostrará apenas a alteração da localização do arquivo como diferença)
~# virsh undefine wwe ~# virsh define wwe_new.xml
reinicie a VM.
Responder3
Além do que já foi dito eu recomendaria usar virsh edit
em vez de editar o arquivo xml diretamente em /etc. Os comentários neste arquivo dizem:
<!--
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.
-->
Portanto, o procedimento real é assim:
virsh shutdown <vmname>
mv oldpath/image.qcow newpath/image.qcow
virsh edit <vmname>
Procure por tag tag<source file="...">
e altere o caminho de acordo.virsh start <vmname>