web-dev-qa-db-ja.com

VM libvirt + KVMを使用して名前を変更する方法

VM on KVM + libvirtの名前を変更するにはどうすればよいですか?

「在庫」の名前の変更や、ストレージの名前の変更などをお願いします。

25
Arthur Ulfeldt

走る

virsh dumpxml name_of_vm > name_of_vm.xml

UUIDの重複によるエラーを防ぐために、古いvmの定義を解除します。

virsh undefine name-of-vm

Xmlファイルを編集してインポートします。

virsh define name_of_vm.xml

もちろん、変更を有効にするには、VMを停止してから再起動する必要があります

virsh destroy name_of_vm
virsh start name_of_vm
19
topdog
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

16
blueyed

virsh実装domrenameリリース1.2.19:2015年9月2日。したがって、現在のベストプラクティスは次のとおりです。

 virsh domrename oldname newname

ご想像のとおり、ドメインは停止する必要がありますが、スナップショットを作成することもできません。

13
reedstrm

多くのマシンを変更するには、これを使用できます:

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

これをマシンごとに1つずつ実行します。 old-name new-nameを含むリストがある場合は、このRegExpを使用できます。

([^\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
5
Nux

私はそれを少し違ったやり方で行っており、非推奨の方法かもしれません(よくわかりません)。

virsh destroy old-vm virsh edit old-vm

XMLの変更

  1. ドメイン名old-vmからnew-vm
  2. 保存して終了するUUIDの文字/数字を変更します。

virsh list --all

1つの古いVMの遮断

2つの新しいVMシャットオフ

今度はold-vmの定義を解除します

virsh undefine old-vm

0
Jay