Làm cách nào để tạo bản sao của máy ảo KVM / libvirt / virt-manager?


12

Tôi hơi lạc lõng với virt-manager / libvirt / KVM.

Tôi đã có một máy ảo KVM (Windows XP) hoạt động tốt.

VM được hỗ trợ bởi một tệp 4GB hoặc hơn (a .img ).

Bây giờ tôi muốn làm một cái gì đó rất đơn giản: tôi muốn sao chép VM của mình.

Tôi nghĩ rằng "OK, không vấn đề gì, hãy sao chép tệp 4GB và sao chép tệp XML" .

Nhưng sau đó, Câu hỏi thường gặp về libvirt có trong tất cả chữ hoa: "bạn KHÔNG NÊN CHĂM SÓC Ở ĐÂU XML ĐƯỢC LƯU TRỮ"

Câu hỏi thường gặp

Được rồi, tôi không nên quan tâm. Nhưng làm thế nào để tôi nhân đôi VM của mình?

Tôi muốn tạo một VM mới là bản sao của VM đó.

Câu trả lời:


3

virshsẽ cho phép bạn chỉnh sửa, xuất và nhập định nghĩa XML cho các máy chủ của bạn. Tôi sẽ sử dụng virt-cloneđể tạo một tệp hình ảnh nhân bản và xuất XML. Để an toàn tôi sẽ xóa cấu hình nhân bản khỏi máy chủ gốc.


41

Tiện lợi nhất chỉ đơn giản là:

# virt-clone --connect=qemu://example.com/system -o this-vm -n that-vm --auto-clone

Nó sẽ tạo một bản sao this-vm, được đặt tên that-vmvà đảm nhiệm việc sao chép các thiết bị lưu trữ. Không có gì mới ở đây ngoại trừ chi tiết.

Quan trọng hơn, Điều mà Câu hỏi thường gặp là các mô tả tên miền XML không thể chỉnh sửa trực tiếp, bạn cần phải thông qua libvirt. Để hoàn thành các bước được thực hiện bởi virt-clonelệnh, bạn có thể:

source_vm=vm_name
new_vm=new_vm_name

# You cannot "clone" a running vm, stop it.  suspend and destroy
# are also valid options for less graceful cloning
virsh shutdown "$source_vm"

# copy the storage.
cp /var/lib/libvirt/images/{"$source_vm","$new_vm"}.img

# dump the xml for the original
virsh dumpxml "$source_vm" > "/tmp/$new_vm.xml"

# hardware addresses need to be removed, libvirt will assign
# new addresses automatically
sed -i /uuid/d "/tmp/$new_vm.xml"
sed -i '/mac address/d' "/tmp/$new_vm.xml"

# and actually rename the vm: (this also updates the storage path)
sed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"

# finally, create the new vm
virsh define "/tmp/$new_vm.xml"
virsh start "$source_vm"
virsh start "$new_vm"

Điều này cũng hoạt động để sao chép qua máy ảo sang máy chủ khác: sử dụng sftp thay vì cp, (có thể) thay đổi đường dẫn hình ảnh trước khi 'xác định' vm mới và sftp cũng là máy chủ đó sang máy chủ khác.
Andreas Florath

Cảm ơn vì điều này, đã tiết kiệm cho tôi một loạt thời gian. Vấn đề tôi gặp phải là nhân bản so với tạo mới, trong đó nếu tôi tạo một nút mới, các phiên bản gói sẽ không đồng bộ với các nút khác sử dụng máy nhân bản cục bộ.
Mike Purcell

Liệu virt-clonexử lý mã hóa toàn bộ đĩa chính xác? Có nghĩa là, nó sẽ yêu cầu tôi giải mã pw trước khi làm việc đó chứ?
một lập trình viên

Tôi nghĩ rằng sed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"nên đọc sed -i "s/$source_vm/$new_vm/" "/tmp/$new_vm.xml"hoặc ít nhất là trên sed dẫn xuất debian của tôi phàn nàn về một dấu vết bị thiếu /. Cảm ơn về thông tin quá, virsh-clone của tôi hoàn toàn không hoạt động.
số

2

Khác với "virt-clone", bạn có thể sao chép VM theo cách này:

  1. Đảm bảo rằng VM hiện tại (sẽ được sao chép) được tắt.
  2. thực hiện "sudo virsh dumpxml <domid>" của VM hiện có và lưu tệp xml đầu ra.
  3. Sửa đổi thẻ <name> trong thẻ <domain>.
  4. Sử dụng "uuidgen" để tạo ID duy nhất mới và sử dụng ID đó để sửa đổi thẻ <uuid> hiện có.
  5. Tạo một bản sao của các hình ảnh ảo qcow hiện có mà VM sử dụng, (thường được lưu trữ trong / var / lib / libvirt / hình ảnh, nhưng để chắc chắn chỉ cần đọc tệp XML của bạn để biết vị trí chính xác). Lệnh là "sudo cp /var/lib/libvirt/images/xxx.qcow2 yyyy.qcow2" và điền vào tệp mới yyyy.qcow2 trong tệp XML.
  6. Bắt đầu vm mới: sudo virsh xác định new.xml
  7. Bắt đầu domid mới: sudo virsh start <new_domid>



0

Rõ ràng đức tính nhân bản là con đường để đi.

Tôi đã thử sao chép XML nhưng nó sẽ không xuất hiện dưới trình quản lý tài năng.

Tôi vẫn tự hỏi làm thế nào tôi có thể chuyển XML + .img sang một hệ thống mới cho biết ...


0

Lệnh sau hoạt động với tôi (Phải tắt VSA / Vm trước khi chạy lệnh)

# virt-clone --connect=qemu:///system -o present_vsa/vm_name -n vsa/vm_to_be_cloned_name --auto-clone

1
Ngoài các tên VM giả, nó giống hệt với lệnh từ câu trả lời ba năm tuổi - nhưng thiếu thông tin bổ sung từ câu trả lời đó.
G-Man nói 'Phục hồi Monica'

0

virt-clone --auto-clone dường như không chơi tốt với LVM. Tôi đã mong đợi nó tạo ra một ảnh chụp nhanh và sử dụng nó, nhưng thay vào đó nó sao chép tất cả dữ liệu.

Tốt hơn để thực hiện các dumpxml / xác định tuyến đường; và nhớ gắn hệ thống tập tin gốc của bản sao và thay đổi địa chỉ IP và tên máy chủ một cách thích hợp trước khi bắt đầu bản gốc và bản sao.

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.