HP и Dell и предлагают платформы управления (InsightManager и OpenManage соответственно), которые теоретически делают это. Необходимо установить агенты на всем так, что это может вытащить корректную информацию о BIOS из каждого устройства, но это может быть сделано. Они - все еще склонный отказ и не всегда умеют вытащить информацию о поддержке из соответствующих веб-сайтов, хотя это лучше, чем отслеживание всего этого на страницах Wiki и электронных таблицах.
Многие примеры работают с конкретными конфигурациями. Этот всегда работает, независимо от того, какую конфигурацию использует ваш сервер Apache: virsh net-autostart NETNAME )
Да, достаточно простого копирования XML-файла и образов виртуальных дисков, но это, очевидно, исключает «живую» миграцию. Во время этой процедуры виртуальную машину необходимо отключить.
После копирования в место назначения необходимо перезагрузить или перезапустить libvirtd
, чтобы распознать новый файл XML.
Поскольку я еще не могу комментировать, я должен опубликовать это дополнение к ответу dyasny следующим образом.
Если у виртуальной машины есть снимки, которые вы хотите сохранить, вы должны сбросить снимок xml -файлы в источнике с virsh snapshot-dumpxml $ dom $ name> file.xml
для каждого снимка в списке снимков виртуальной машины virsh snapshot-list --name $ dom
.
Затем в месте назначения используйте virsh snapshot-create --redefine $ dom file.xml
, чтобы завершить миграцию снимков.
Если вам также важно, какой снимок является текущим, то дополнительно выполните в источнике:
virsh snapshot-current --name $ dom
и в месте назначения:
virsh snapshot-current $ dom $ name
Затем вы можете использовать virsh snapshot-delete - -metadata $ dom $ name
для каждого снимка, чтобы удалить файлы xml в источнике, или вы можете просто удалить их из / var / lib / libvirt / qemu / snapshots / $ guestname
Источники:
Эти инструкции применимы к виртуальной машине, использующей предоставленный LVM диск, и предполагается, что Python находится на каждом из хостов
Загрузить сценарий blockync.py из https://gist.github.com/rcoup/1338263 и поместите на исходный и целевой хосты в папку / home / user.
Вам также потребуется доступ sudo к «root» на обеих машинах.
В качестве альтернативы вы можете делать все как root, но только если ваш ssh-ключ дает вам root-доступ по крайней мере к целевой машине. ** В этом случае удалите имя пользователя из командных строк.
ssh (скрыто) как ваш пользователь, поэтому не становитесь пользователем sudo * Список машин сsudo virsh --all
sudo virsh dumpxml larry> larry.xml
Скопируйте скопированное определение на новую машину («целевой» хост), например :
scp -p larry.xml 10.10.10.38:larry.xmlвы можете изменить внутренний IP-адрес на имя целевого сервера dom0 ** Примечание: лучше всего использовать IP-адрес для цели, например:
scp -p larry.xml (скрытый) вы не можете скопировать из-за ключей cat larry.xml и скопируйте его Затем вы можете использовать ssh на другом компьютере, создать файл и вставить его.
Найдите размер и имя диска виртуальной машины, используя
sudo lvs --units B.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_root vg1 -wi-ao---- 53687091200B lv_swap vg1 -wi-ao---- 17179869184B vm_vsrv1 vg1 -wi-ao---- 193273528320B vm_vsrv10 vg1 -wi-ao---- 64424509440B vm_vsrv11 vg1 -wi-ao---- 161061273600B vm_vsrv12 vg1 -wi-ao---- 204010946560B vm_vsrv2 vg1 -wi-ao---- 140110725120B vm_vsrv3 vg1 -wi-ao---- 128849018880B vm_larry vg1 -wi-ao---- 69793218560B vm_vsrv5 vg1 -wi-ao---- 257698037760B vm_vsrv6 vg1 -wi-ao---- 64424509440B vm_vsrv7 vg1 -wi-ao---- 161061273600B vm_vsrv8 vg1 -wi-ao---- 64424509440B vm_vsrv9 vg1 -wi-ao---- 214748364800B
ls -l / dev / vg1 / vm_larry: lrwxrwxrwx. 1 root root 8 31 января 13:57 / dev / vg1 / vm_larry -> ../dm-11
ssh (скрытый) как ваш собственный пользователь. т.е. не становитесь root.
Создайте файл определения тома, например:
vi larry.domainname.com.au-vol.xmlили
nano larry.domainname.com.au-vol.xmlсо следующими строками: ПРИМЕЧАНИЕ. Вам нужно будет взять размер в байтах от исходной виртуальной машины и поместить в сценарий ниже. Команда для размера на исходной машине была sudo lvs --units B
larry.domainname.com.au
69793218560
69793218560
<цель>
/dev/centos/larry.domainname.com.au
<разрешения>
0600
0
6
Примечание: это определение для диска размером 69793218560 байтов для виртуальной машины, при необходимости измените виртуальную машину.
Примечание:имя и последняя часть пути должны совпадать и использоваться в качестве имени нового диска.
Создайте новый диск из определения, используя
sudo virsh vol-create --pool centos larry.domainname.com.au-vol.xml
, он скажет Vol larry.domainname.com.au, созданный из larry. domainname.com.au-vol.xml
Сделайте файл дискового устройства доступным:
sudo chgrp wheel /dev/mapper/centos-larry.domainname.com.au
sudo chmod g+rw /dev/mapper/centos-larry.domainname.com.au
Отредактируйте скопированное определение xml, например:
vi larry.xml
Найдите определение диска в файле (ищите "source dev =") и замените устройство на только что созданное (вы можете ls / dev / centos / увидеть vm), например: / dev / drbd4 -> /dev/centos/larry.domainname.com.au
** Найдите ссылки на «br1» в разделах интерфейса и измените его на «br0», например вы меняете исходный мост, поэтому строка выглядит так
Войдите на исходный хост, например,
ssh (скрытый) рекомендуется выключить виртуальную машину на исходном хосте перед выполнением окончательной синхронизации, но это не обязательно сделанный. (virsh shutdown NameOfMachine)
Если это еще не сделано на исходном хосте, загрузите скрипт blockync.py с https://gist.github.com/rcoup/1338263
Если ваше имя пользователя - user (например, ), затем скопируйте сценарий blocksync.py на обе машины в / home / user и chown user: user и chmod 755 сценарий.
scp -p blocksync.py user@10.10.10.38:blocksync.py
sudo -E python blocksync.py /dev/vg1/vm_larry user@10.10.10.38 /dev/mapper/centos-larry.domainname.com.au -b 4194304
Примечание: имя первого устройства для исходного хоста, как определено командой lvs; это с исходного хоста [[chewie]].
Примечание: это уничтожит содержимое целевого диска, убедитесь, что /dev/mapper/centos-larry.domainname.com. au правильно!
Примечание: синхронизация займет много времени - около 100 секунд на гигабайт, то есть: 90 минут для 60-гигабайтного диска.
Однако вы можете выполнить синхронизацию во время использования виртуальной машины; последующие синхронизации могут быть на 25 процентов быстрее
Сценарий распечатает параметры, которые он использует (может появиться сообщение об устаревшем модуле, это нормально). Затем он отображает команду ssh, которую он использует, и запускает ее (вы увидите сообщение только для авторизованного персонала, когда он это сделает). Во время синхронизации отображается общее количество скопированных блоков и средняя скорость. Наконец, он распечатывает сообщение о завершении с указанием количества затраченных секунд.
Вы можете отменить синхронизацию, нажав CTRL C, и перезапустить ее позже, снова выполнив команду
ssh (скрытый) виртуальную машину, например:virsh define larry.xml
sudo virsh start larry
sudo virsh autostart larry
Примечание: может потребоваться изменить детали виртуальной машины в соответствии с новой средой.
Я столкнулся с этой проблемой с несколькими моими старыми KVM-серверами, но это действительно раздражает, когда это происходит, и может вызвать проблемы с любой из установленных виртуальных машин. В моем случае он регулярно переводил одну из моих виртуальных машин в состояние сброса, поскольку дисковое пространство медленно истощалось. Приведенные ниже инструкции в некоторой степени зависят от версии KVM / Distro. В моем случае у меня CentOS 7.5
CentOS Linux release 7.5.1804 (Core) and Qemu-KVM version 1.5.3
По умолчанию образы KVM расположены в / var / lib / libvirt / images /
Вам нужно найти имя виртуальной машины, для этого используйте список virsh
virsh list
Id Name State
----------------------------------------------------
12 VM-Name paused
Остановите виртуальную машину virsh stop VM-Name
Я сначала копирую файл, а не перемещаю. Скопируйте файл qcow в новое расположение
cp /var/lib/libvirt/images/VM-Name.qcow2 /home/VMImages/
Отредактируйте XML-файл виртуальной машины, чтобы указать новое расположение "исходного файла" virsh edit VM-Name
Вы захотите изменить "исходный файл" в этом файле
Перезапустите службу libvirtd
service libvirtd restart
Затем перезапустите виртуальную машину, и все будет в порядке.
virsh start VM-Name