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


24

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

「在庫」の名前を変更したり、ストレージの名前などを変更したりしたいと思います。


3
この質問を聞いた後、libvirtプロジェクトの優秀な人々が「virsh edit my-vm-name」コマンドを追加しました。
アーサーウルフェルト

回答:


18

走る

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

5
1つの手順を追加する必要があります:(新しい名前でvmを定義する前に)「virsh undefine name-of-vm」
アーサーウルフェルト

1
また、hd.imgファイルの名前を変更し、xmlファイルの行を編集する必要がありました
アーサーウルフェルト

他の答えには正しい順序があります。古いマシンを使用しない場合、imgの名前を変更する必要はありません。
Nux

1
この回答は現在古くなっています。以下の私の答えをご覧ください。tldr; virshにdomrenameが追加されました。
-reedstrm


13

virshdomrenameリリース1.2.19で実装:2015年9月2日。現在のベストプラクティスは次のとおりです。

 virsh domrename oldname newname

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


+1- すべてを一致させたい場合virsh edit newnameは、ファイルパスmv oldname newnameを変更し、ディレクトリの名前を変更できます。
追って通知があるまで一時停止します。

つまり、1)/var/lib/libvirt/images/oldname.qcow2の名前を/var/lib/libvirt/images/newname.qcow2に変更する必要もあります。および2)/etc/libvirt/qemu/newname.xmlを編集して、正しいソースファイルbalise <source file = '/ var / lib / libvirt / images / newname.qcow2'を設定します
MaxiReglisse

しかし、あなたがなドメイン名と一致するファイル名が必要な場合にのみ、(私は認める、便利です) -このことを回避するには、Aサイクルを作成/破棄、しかしまだ停止(なしスナップショット)が必要です
reedstrm

5

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

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つずつ実行します。次を含むリストがある場合、この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

0

私はそれを少し違ったやり方でやっており、推奨されない方法かもしれません(確かではありません)。

virsh destroy old-vm virsh edit old-vm

XMLの変更

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

virsh list --all

1つの古いVMのシャットオフ

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

古いVMの定義を解除します

virsh undefine old-vm

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.