libvirt + KVM을 사용하여 VM의 이름을 바꾸는 방법


24

KVM + libvirt에서 VM의 이름을 어떻게 바꿀 수 있습니까?

'인벤토리'의 이름을 변경하고 스토리지 이름 등을 변경하고 싶습니다.


3
이 질문을 한 후에 libvirt 프로젝트의 훌륭한 사람들이 'virsh edit my-vm-name'명령을 추가했습니다.
Arthur Ulfeldt

답변:


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
하나의 단계를 추가해야합니다 (새 이름으로 vm을 정의하기 전에) "virsh undefine name-of-vm". 그렇지 않으면 중복 UUID에 대해 불평합니다.
Arthur Ulfeldt

1
또한 hd.img 파일의 이름을 바꾸고 xml 파일의 줄을 편집해야했습니다
Arthur Ulfeldt

올바른 순서는 다른 답변에 있습니다. 이전 시스템을 사용하지 않는 경우 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/newname.qcow2에서 /var/lib/libvirt/images/oldname.qcow2 이름을 바꾸어야합니다. 2) 편집 /etc/libvirt/qemu/newname.xml은 = '는 / var / lib 디렉토리 / libvirt를 / 이미지 / newname.qcow2'올바른 소스 파일 발리 <소스 파일을 설정
MaxiReglisse

그러나 도메인 이름과 일치하는 파일 이름이 필요한 경우에만 (내가 인정하는 것이 편리함)-삭제 / 생성주기를 피할 수 있지만 중지 (및 스냅 샷 없음)가 필요합니다.
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

각 머신마다 하나씩 실행하십시오. 다음을 포함하는 목록이있는 경우이 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

이전 VM 차단 1 개

2 개의 새로운 VM 차단

이제 이전 VM을 정의 해제하십시오.

virsh undefine old-vm

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.