у меня есть эта структура пространства 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/
в моих конфигах? Пожалуйста, помогите, я боюсь вывести из строя сервис, спасибо.
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 start wwe
Примечание: Вы можете восстановить исходное состояние с помощью исходных файлов в любое время, однако ниже приведен альтернативный способ, используемый для клонирования и перемещения виртуальной машины в KVM Infra.
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
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.
-->
Итак, фактическая процедура выглядит так:
virsh shutdown <vmname>
mv oldpath/image.qcow newpath/image.qcow
virsh edit <vmname>
Искать тег тег <source file="...">
и соответственно измените путь.virsh start <vmname>