Назад | Перейти на главную страницу

как переименовать виртуальную машину с помощью libvirt + KVM

Как переименовать виртуальную машину на KVM + libvirt?

Я хотел бы изменить имя в «инвентаре», а также изменить имя хранилища и т. Д.

бегать

virsh dumpxml name_of_vm > name_of_vm.xml

Отмените определение старой виртуальной машины, чтобы предотвратить ошибку из-за повторяющегося UUID.

virsh undefine name-of-vm

Отредактируйте файл xml, затем импортируйте его.

virsh define name_of_vm.xml

Конечно, вам придется остановить и запустить виртуальную машину, чтобы изменения вступили в силу.

virsh destroy name_of_vm
virsh start name_of_vm
virsh dumpxml myvm > foo.xml
<edit foo.xml, change the name, move storage>
virsh undefine myvm
virsh define foo.xml

Источник: https://www.redhat.com/archives/libvirt-users/2010-October/msg00072.html

virsh реализовано domrename в выпуске 1.2.19: 2 сентября 2015 г. Итак, текущая передовая практика:

 virsh domrename oldname newname

Как и следовало ожидать, домен должен быть остановлен, но у него не должно быть никаких снимков.

Чтобы изменить многие машины, вы можете использовать это:

virsh shutdown old-name

Дождитесь завершения и запустите:

virsh dumpxml old-name > old-name.xml
virsh undefine old-name

Дождитесь завершения и запустите:

sed -i 's/<name>old-name<\/name>/<name>new-name<\/name>/g' old-name.xml
virsh define old-name.xml

Выполните это по одному для каждой машины. Вы можете использовать этот RegExp, если у вас есть список, содержащий old-name new-name:

([^\r\n]+?)[ \t]+([^\r\n]+)
virsh shutdown $1\n#WAIT!\nvirsh dumpxml $1 > $1.xml\nvirsh undefine $1\n\#WAIT!\nsed -i 's/<name>$1<\\/name>/<name>$2<\\/name>/g' $1.xml\nvirsh define $1.xml\n

Я делаю это немного по-другому, и, возможно, это не рекомендуемый метод (не уверен).

virsh destroy old-vm virsh edit old-vm

В изменении XML

  1. доменное имя от старого-vm до нового-vm
  2. изменить символ / цифру в UUID сохранить и выйти.

virsh list --all

1 отключение старых виртуальных машин

2 new-vm отключение

Теперь переопределите старый vm

virsh undefine old-vm