Назад | Перейти на главную страницу

Как заменить образ KVM на другой раздел?

у меня есть эта структура пространства 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

Теперь мой kvm-образ включен /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. выключение virsh wwe
  2. список virsh - все
  3. cp /etc/libvirt/qemu/wwe.xml /etc/libvirt/qemu/orig-wwe.xml
  4. cp /kvm/vhdd/wwe.img /kvm/vhdd/orig-wwe.img

Переместите образ ВМ в раздел / 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 start wwe

Примечание: Вы можете восстановить исходное состояние с помощью исходных файлов в любое время, однако ниже приведен альтернативный способ, используемый для клонирования и перемещения виртуальной машины в KVM Infra.



KVM - Клонировать гостей из доступного изображения:

1- создать базовую виртуальную машину и установить ОС, выключить базовую виртуальную машину

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- запустить virt-sysprep на template.qcow2. для сброса изображения, например удалит ключи SSH, создаст новый MAC-адрес, очистит файлы журналов и т. д.

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

5- после этого вам больше не нужна базовая виртуальная машина. Удалите его, если он не используется.

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

6- Клонирование новых виртуальных машин из Template: 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 и изображение на новый 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

Если я понимаю, вам нужно переместить /kvm/vhdd/wwe.img куда-нибудь в / mnt (скажем, /mnt/kvm/vhdd/wwe.img)?

Если да, то я бы:

  • остановите виртуальную машину (используя poweroff или другую команду в самой виртуальной машине), затем дождитесь состояния остановки в virt-manager (или virsh)

  • переместите файл изображения в новое место

  • изменить расположение образа в определении виртуальной машины:

  • либо с помощью графического интерфейса виртуального менеджера (удалите жесткий диск в определении виртуальной машины и добавьте его снова из нового места),

  • или с помощью virsh (при условии, что имя виртуальной машины - 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
    
  • перезапустите виртуальную машину.

В дополнение к тому, что уже было сказано, я бы рекомендовал использовать virsh edit вместо того, чтобы редактировать xml-файл напрямую в / etc. В комментариях к этому файлу говорится:

<!--
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>