Как я могу переименовать виртуальную машину в KVM + libvirt?
Я хотел бы изменить имя в «инвентаре», а также изменить имя хранилища и т. Д.
Как я могу переименовать виртуальную машину в KVM + libvirt?
Я хотел бы изменить имя в «инвентаре», а также изменить имя хранилища и т. Д.
Ответы:
бег
virsh dumpxml name_of_vm > name_of_vm.xml
Отмените старый vm, чтобы избежать ошибки из-за дублирования 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: 02 сентября 2015 г. Таким образом, текущая лучшая практика такова:
virsh domrename oldname newname
Как и следовало ожидать, домен должен быть остановлен, но он также не может иметь никаких снимков.
virsh edit newname
и изменить путь mv 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
virsh list --all
1 отключение старой виртуальной машины
2 new-vm отключение
Теперь неопределите старый-VM
virsh undefine old-vm