Como substituir a imagem do KVM para outra partição?

1

eu tenho essa estrutura de espaço de hdd-s:

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

Agora, minha imagem kvm está em /dev/md2 on / . ls -l /kvm/vhdd/wwe.img -rw------- 1 libvirt-qemu kvm 163611607040 Mar 9 09:12 /kvm/vhdd/wwe.img

Eu preciso substituir esta imagem para /dev/md4 para /mnt .

Como fazer isso? Eu posso parar minha máquina virtual. Mas o que devo fazer depois de parar? Devo apenas fazer cp ? Ou devo editar 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 este caminho /kvm/vhdd/ em minhas configurações? Por favor, ajudem, eu estou com medo de acidente de serviço, obrigado.

    
por Piduna 09.03.2018 / 10:18

2 respostas

4

Backup da VM original:

  1. virwe shutdown wwe
  2. lista de 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

Mover a imagem da VM para a partição / mnt / kvm:

  1. mkdir / mnt / kvm

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

  3. Edite o arquivo XML: vim /etc/libvirt/qemu/wwe.xml

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

Observação: você pode restaurar para o estado original usando arquivos orignal a qualquer momento, mas abaixo está uma maneira alternativa usada para clonar & movendo VM no KVM Infra.

KVM - Clone Convidados da imagem disponível:

1- crie uma VM base e instale o SO, encerre a VM base

virsh shutdown basevm

2- copie seu arquivo XML para template.xml e copie sua imagem para template.qcow2

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

3- no 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 o virt-sysprep no template.qcow2. para redefinir a imagem, por ex. irá remover chaves SSH, criar novo endereço MAC, limpar arquivos de log, etc.

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

5- depois desse ponto, você não precisa mais da VM base. Exclua se não estiver em uso.

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

6- Clonando novas VMs de 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 - Mova o convidado para outro host:

1- Após as etapas acima, transfira xml & arquivo 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
    
por 09.03.2018 / 16:31
2

Se eu entendi, sua necessidade é mover /kvm/vhdd/wwe.img para algum lugar em / mnt (digamos /mnt/kvm/vhdd/wwe.img)?

Se assim fosse eu:

  • pare a máquina virtual (usando poweroff ou outro comando na própria VM) e aguarde o estado parado no virt-manager (ou virsh)

  • mova o arquivo de imagem para o novo local

  • altere o local da imagem na definição da VM:

  • usando o GUI do virt-manager (remova o hdd na definição da VM e inclua novamente a partir do novo local),

  • ou com virsh (assumindo que o nome da VM é '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 mudança de local do arquivo como diferença)

    ~# virsh undefine wwe
    
    ~# virsh define wwe_new.xml
    
  • reinicie a VM.

por 09.03.2018 / 12:22