Cách đổi tên VM bằng libvirt + KVM


24

Làm cách nào để đổi tên VM trên KVM + libvirt?

Tôi muốn nó thay đổi tên trong 'kho' cũng như thay đổi tên của bộ lưu trữ, v.v.


3
sau khi tôi hỏi câu hỏi này, những người tốt trong dự án libvirt đã thêm lệnh 'virsh chỉnh sửa my-vm-name'.
Arthur Ulfeldt

Câu trả lời:


18

chạy

virsh dumpxml name_of_vm > name_of_vm.xml

Xác định vm cũ để ngăn lỗi do UUID trùng lặp.

virsh undefine name-of-vm

Chỉnh sửa tập tin xml sau đó nhập nó.

virsh define name_of_vm.xml

Tất nhiên bạn sẽ phải dừng lại và bắt đầu vm để những thay đổi có hiệu lực

virsh destroy name_of_vm
virsh start name_of_vm

5
cần thêm một bước: (trước khi xác định vm với tên mới) "virsh undefine name-of-vm" nếu không nó phàn nàn về UUID trùng lặp.
Arthur Ulfeldt

1
tôi cũng đã phải đổi tên tệp hd.img và chỉnh sửa dòng trong tệp xml
Arthur Ulfeldt

Thứ tự đúng là trong câu trả lời khác. Bạn không phải đổi tên img nếu bạn không sử dụng máy cũ.
Nux

1
Câu trả lời này đã hết hạn. Xem câu trả lời của tôi dưới đây. tldr; virsh bây giờ có domrename.
reedstrm


13

virshtriển khai domrenametrong phiên bản 1.2.19: 02 tháng 9 năm 2015. Vì vậy, cách thực hành tốt nhất hiện nay chỉ là:

 virsh domrename oldname newname

Như bạn có thể mong đợi, tên miền phải được dừng lại, nhưng nó cũng không thể có bất kỳ ảnh chụp nhanh nào.


+1 - bạn có thể virsh edit newnamevà thay đổi đường dẫn tệp và mv oldname newnameđổi tên thư mục nếu bạn muốn mọi thứ khớp.
Tạm dừng cho đến khi có thông báo mới.

nói cách khác, bạn cũng phải 1) đổi tên /var/lib/libvirt/images/oldname.qcow2 trong /var/lib/libvirt/images/newname.qcow2; và 2) chỉnh sửa /etc/libvirt/qemu/newname.xml để đặt cân bằng tệp nguồn chính xác <nguồn file = '/ var / lib / libvirt / hình ảnh / newname.qcow2'
MaxiReglisse

nhưng chỉ khi bạn cần tên tệp để khớp với tên miền (mà tôi thừa nhận, thì thuận tiện) - điều này tránh được chu kỳ hủy / tạo, mặc dù vẫn cần dừng (và không có ảnh chụp nhanh)
reedstrm

5

Để thay đổi nhiều máy bạn có thể sử dụng:

virsh shutdown old-name

Đợi ở trên để kết thúc và chạy:

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

Đợi ở trên để kết thúc và chạy:

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

Chạy từng cái một cho mỗi máy. Bạn có thể sử dụng RegExp này nếu bạn có một danh sách chứa 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

Tôi làm điều đó một chút khác nhau và có thể là phương pháp không được đề xuất (không chắc chắn).

virsh destroy old-vm virsh edit old-vm

Trong thay đổi XML

  1. tên miền cũ-vm đến new-vm
  2. thay đổi ký tự / chữ số trong lưu và thoát UUID.

virsh list --all

Tắt 1 vm cũ

Tắt 2 vm mới

Bây giờ xác định cũ-vm

virsh undefine old-vm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.