Как создать виртуальную машину KVM / libvirt / virt-manager?

13

Я немного заблудился с virt-manager / libvirt / KVM.

У меня есть рабочая KVM VM (Windows XP), которая прекрасно работает.

Виртуальная машина поддерживается файлом 4 ГБ или около того ( .img ).

Теперь я хочу сделать что-то очень простое: я хочу дублировать мою виртуальную машину.

Я подумал: «Хорошо, нет проблем, давайте скопируем файл 4 ГБ и скопируем файл XML» .

Но тогда часто задаваемые вопросы по libvirt гласят в верхнем регистре: «НЕ ДОЛЖНО БЫТЬ, ГДЕ ХРАНИТСЯ XML»

libvirt FAQ

ОК, хорошо, мне все равно. Но тогда как мне дублировать мою виртуальную машину?

Я хочу создать новую виртуальную машину, которая является копией этой виртуальной машины.

SyntaxT3rr0r
источник

Ответы:

4

virshпозволит вам редактировать, экспортировать и импортировать определения XML для ваших серверов. Я хотел бы использовать virt-cloneдля создания клонированного файла изображения и экспорта XML. Чтобы быть в безопасности, я бы удалил конфигурацию клона с исходного сервера.

BillThor
источник
42

Наиболее удобным является просто:

# virt-clone --connect=qemu://example.com/system -o this-vm -n that-vm --auto-clone

Который сделает копию this-vm, по имени that-vmи позаботится о дублировании устройств хранения. Здесь нет ничего нового, кроме деталей.

Более того, в разделе часто задаваемых вопросов говорится, что описания доменов XML нельзя редактировать напрямую, вам нужно пройти через libvirt. Чтобы выполнить шаги, предпринятые virt-cloneкомандой, вы можете:

source_vm=vm_name
new_vm=new_vm_name

# You cannot "clone" a running vm, stop it.  suspend and destroy
# are also valid options for less graceful cloning
virsh shutdown "$source_vm"

# copy the storage.
cp /var/lib/libvirt/images/{"$source_vm","$new_vm"}.img

# dump the xml for the original
virsh dumpxml "$source_vm" > "/tmp/$new_vm.xml"

# hardware addresses need to be removed, libvirt will assign
# new addresses automatically
sed -i /uuid/d "/tmp/$new_vm.xml"
sed -i '/mac address/d' "/tmp/$new_vm.xml"

# and actually rename the vm: (this also updates the storage path)
sed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"

# finally, create the new vm
virsh define "/tmp/$new_vm.xml"
virsh start "$source_vm"
virsh start "$new_vm"
SingleNegationElimination
источник
Это также работает для копирования виртуальной машины на другой хост: используйте sftp вместо cp, (возможно) измените путь к образу перед «определением» нового vm и sftp, а также that-vm.xml для другого хоста.
Андреас Флорат
Спасибо за это, сэкономил мне кучу времени. Проблема, с которой я столкнулся, заключается в клонировании и создании нового, в том случае, если я создаю новый узел, версии пакета будут не синхронизированы с другими узлами, которые используют локальное зеркало.
Майк Перселл
virt-cloneПравильно ли обрабатывает полное шифрование диска? Имеется в виду, будет ли он спрашивать меня о моей расшифровке pw, прежде чем делать свое дело?
кодер
Я думаю, что sed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"следует прочитать sed -i "s/$source_vm/$new_vm/" "/tmp/$new_vm.xml"или, по крайней мере, на моем производном от Debian sed жалуется на отсутствующий трейлинг. Спасибо за информацию, мой virsh-клон просто не работал вообще.
number9
3

Кроме «virt-clone» вы можете дублировать виртуальную машину следующим образом:

  1. Убедитесь, что существующая виртуальная машина (подлежащая дублированию) закрыта.
  2. выполните «sudo virsh dumpxml <domid>» для существующей виртуальной машины и сохраните выходной файл xml.
  3. Измените тег <name> под тегом <domain>.
  4. Используйте «uuidgen» для генерации нового уникального идентификатора и используйте его для изменения существующего тега <uuid>.
  5. Сделайте копию существующих виртуальных образов qcow, которые использует виртуальная машина (обычно они хранятся в / var / lib / libvirt / images, но для уверенности просто прочитайте ваш XML-файл для точного местоположения). Введите команду «sudo cp /var/lib/libvirt/images/xxx.qcow2 yyyy.qcow2» и заполните новый файл yyyy.qcow2 в XML-файле.
  6. Запустите новый vm: sudo virsh define new.xml
  7. Запустите новый домен: sudo virsh start <new_domid>


Питер Теох
источник
0

Видимо вирт-клон это путь.

Я попытался продублировать XML, но он не появится в virt-manager.

Мне все еще интересно, как я могу перенести XML + .img в новую систему, которая сказала ...

SyntaxT3rr0r
источник
0

У меня сработала следующая команда (перед запуском команды необходимо отключить VSA / Vm)

# virt-clone --connect=qemu:///system -o present_vsa/vm_name -n vsa/vm_to_be_cloned_name --auto-clone
Вишу
источник
1
Помимо псевдо-имен виртуальных машин, это идентично команде из трехлетнего ответа, но не содержит дополнительной информации из этого ответа.
G-Man говорит: «Восстановите Монику»
0

virt-clone - auto-clone, похоже, не очень хорошо играет с LVM. Я ожидал, что он создаст снимок и будет использовать его, но вместо этого он копирует все данные.

Лучше сделать dumpxml / define route; и не забудьте смонтировать корневую файловую систему клона и соответственно изменить IP-адреса и имя хоста перед запуском оригинала и клона.

вомбат
источник