
Мои устройства хранения данных смонтированы следующим образом:
$ 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
Резервная копия исходной виртуальной машины:
- virsh закрытие wwe
- список virsh --все
- cp /etc/libvirt/qemu/wwe.xml /etc/libvirt/qemu/orig-wwe.xml
- cp /kvm/vhdd/wwe.img /kvm/vhdd/orig-wwe.img
Переместить образ виртуальной машины в раздел /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.
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.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 )?
Если так, то я бы:
остановите виртуальную машину (используя poweroff или другую команду в самой виртуальной машине), затем дождитесь состояния остановки в virt-manager (или virsh)
переместить файл изображения в новое место
изменить местоположение изображения в определении виртуальной машины:
либо с помощью графического интерфейса virt-manager (удалить жесткий диск в определении виртуальной машины и добавить его снова из нового места),
или с помощью 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
перезапустите виртуальную машину.
решение3
В дополнение к тому, что уже было сказано, я бы рекомендовал использовать 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.
-->
Итак, фактическая процедура выглядит следующим образом:
virsh shutdown <vmname>
mv oldpath/image.qcow newpath/image.qcow
virsh edit <vmname>
Найдите тег tag<source file="...">
и измените путь соответствующим образом.virsh start <vmname>