Як створити дупе KVM / libvirt / virt-manager VM?


13

Я трохи розгубився з virt-manager / libvirt / KVM.

У мене працює робочий KVM VM (Windows XP), який працює чудово.

VM підтримується файлом об'ємом 4 Гб або близько цього (a .img ).

Тепер я хочу зробити щось дуже просте: я хочу дублювати свій VM.

Я подумав: «Добре, немає проблем, скопіюємо файл 4 ГБ і скопіюємо файл XML» .

Але тоді FAQ щодо libvirt вказує у великому регістрі: "Ви НЕ ДОБРИМО ДЛЯ ДЕРЖАВИ, ЩО ЗБЕРІГАЄТЬСЯ XML"

FAQ

Гаразд добре, мені все одно. Але як потім дублювати свій VM?

Я хочу створити нову віртуальну машину, яка є копією цього програмного забезпечення.

Відповіді:


4

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


42

Найзручніше просто:

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

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

Якщо говорити більш конкретно, то, що FAQ каже, що опису домену 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"

Це також працює для копіювання через VM на інший хост: використовуйте sftp замість cp, (можливо) змініть шлях зображення перед тим, як "визначити" новий vm і sftp, а також той-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"або принаймні на моїй дебіанській похідній sed скаржитися на відсутність останнього /. Дякую також за інформацію, мій клон виршів взагалі просто не працював.
число9

3

Крім «virt-clone», ви можете дублювати VM таким чином:

  1. Переконайтесь, що існуючий VM (який дублюється) буде вимкнено.
  2. зробіть "sudo virsh dumpxml <domid>" існуючої VM та збережіть вихідний xml файл.
  3. Змініть тег <name> під тегом <domain>.
  4. Використовуйте "uuidgen", щоб створити новий унікальний ідентифікатор, і використовуйте це, щоб змінити існуючий тег <uuid>.
  5. Зробіть копію існуючих віртуальних зображень qcow, якими користується VM, (як правило, зберігаються у / 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. Запустіть новий domid: sudo virsh start <new_domid>



0

Мабуть, вірт-клон - це шлях.

Я спробував дублювати XML, але він не з’явився під virt-менеджером.

Мені все ще цікаво, як я можу передати XML + .img до нової системи, яка сказала ...


0

Наступна команда працювала для мене (Необхідно відключити VSA / Vm перед запуском команди)

# virt-clone --connect=qemu:///system -o present_vsa/vm_name -n vsa/vm_to_be_cloned_name --auto-clone

1
Окрім псевдоназви VM, це ідентично команді з трирічної відповіді - але не вистачає додаткової інформації з цієї відповіді.
G-Man каже: "Відновіть Моніку"

0

virt-клон - ауто-клон, схоже, не грає добре з LVM. Я очікував, що він створить знімок і використає це, але замість цього він копіює всі дані.

Краще робити dumpxml / визначити маршрут; і не забудьте встановити кореневу файлову систему клону та змінити IP-адреси та ім'я хоста належним чином перед запуском оригіналу та клонування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.