วิธีสร้าง dupe ของ VMM / libvirt / virt-manager VM?


13

ฉันหลงทางกับ virt-manager / libvirt / KVM

ฉันมี KVM VM (Windows XP) ที่ใช้งานได้ดี

VM ได้รับการสนับสนุนโดยไฟล์ 4GB หรือมากกว่านั้น (a .img )

ตอนนี้ฉันต้องการทำสิ่งที่ง่ายมาก: ฉันต้องการทำซ้ำ VM ของฉัน

ผมคิดว่า"OK ไม่มีปัญหาขอคัดลอกแฟ้ม 4GB และคัดลอกของ XML"ไฟล์

แต่จากนั้นคำถามที่พบบ่อยเกี่ยวกับ libvirt จะเป็นตัวพิมพ์ใหญ่: "คุณไม่ควรสนใจว่า XML นั้นถูกเก็บไว้ที่ใด"

คำถามที่พบบ่อย libvirt

โอเคฉันไม่ควรสนใจ แต่ฉันจะทำซ้ำ VM ของฉันได้อย่างไร

ฉันต้องการสร้าง VM ใหม่ที่เป็นสำเนาของ VM นั้น

คำตอบ:


4

virshจะอนุญาตให้คุณแก้ไขส่งออกและนำเข้าข้อกำหนด XML สำหรับเซิร์ฟเวอร์ของคุณ ฉันจะใช้virt-cloneเพื่อสร้างไฟล์ภาพโคลนและส่งออก XML เพื่อความปลอดภัยฉันจะลบการกำหนดค่าโคลนออกจากเซิร์ฟเวอร์เดิม


42

สิ่งที่สะดวกที่สุดคือ:

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

ซึ่งจะทำสำเนาthis-vmชื่อthat-vmและดูแลการทำซ้ำอุปกรณ์เก็บข้อมูล ไม่มีอะไรใหม่ที่นี่ยกเว้นรายละเอียด

สิ่งที่พูดถึงคำถามที่พบบ่อยคือคำอธิบายโดเมน XML ไม่สามารถแก้ไขได้โดยตรงคุณต้องผ่าน libvirt เพื่อให้ขั้นตอนดำเนินการโดยvirt-cloneคำสั่งคุณสามารถ:

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"

วิธีนี้ใช้ได้สำหรับการคัดลอกผ่าน VM ไปยังโฮสต์อื่น: ใช้ sftp แทน cp (เป็นไปได้) เปลี่ยนเส้นทางของภาพก่อนที่จะ 'กำหนด' vm ใหม่และ sftp นั้นยัง -mm.xml นั้นไปยังโฮสต์อื่น
Andreas Florath

ขอบคุณสำหรับสิ่งนี้ช่วยฉันประหยัดเวลา ปัญหาที่ฉันมีคือการโคลน vs การสร้างใหม่ในที่ถ้าฉันสร้างโหนดใหม่รุ่นแพคเกจจะไม่ซิงค์กับโหนดอื่น ๆ ที่ใช้มิเรอร์ท้องถิ่น
Mike Purcell

ไม่virt-cloneจัดการกับการเข้ารหัสดิสก์เต็มถูกต้องหรือไม่ ความหมายมันจะขอให้ฉันถอดรหัส pw ของฉันก่อนทำสิ่งนั้นหรือไม่?
coder

ฉันคิดว่าสิ่งที่sed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"ควรอ่าน sed -i "s/$source_vm/$new_vm/" "/tmp/$new_vm.xml"หรืออย่างน้อยก็ในตราสารอนุพันธ์ของเดเบียนฉันบ่นว่า ขอบคุณสำหรับข้อมูลเช่นกัน virsh-clone ของฉันก็ไม่ทำงานเลย
หมายเลข 9

3

นอกเหนือจาก "virt-clone" คุณสามารถทำซ้ำ VM ด้วยวิธีนี้:

  1. ตรวจสอบให้แน่ใจว่า VM (ที่จะทำซ้ำ) ที่มีอยู่ถูกปิด
  2. ทำ "sudo virsh dumpxml <domid>" ของ VM ที่มีอยู่และบันทึกไฟล์เอาต์พุต xml
  3. ปรับเปลี่ยนแท็ก <ชื่อ> ภายใต้แท็ก <โดเมน>
  4. ใช้ "uuidgen" เพื่อสร้าง ID เฉพาะใหม่และใช้เพื่อแก้ไขแท็ก <uuid> ที่มีอยู่
  5. ทำสำเนาของอิมเมจเสมือนที่มีอยู่ซึ่งใช้ VM (ปกติจะเก็บไว้ใน / var / lib / libvirt / images แต่ต้องแน่ใจว่าได้อ่านไฟล์ XML ของคุณเพื่อหาตำแหน่งที่แน่นอน) คำสั่งคือ "sudo cp /var/lib/libvirt/images/xxx.qcow2 yyyy.qcow2" และเติมไฟล์ใหม่ yyyy.qcow2 ในไฟล์ XML
  6. เริ่ม vm ใหม่: sudo virsh กำหนด new.xml
  7. เริ่ม domid ใหม่: sudo virsh start <new_domid>



0

เห็นได้ชัดว่าการโคลนนิ่งคุณธรรมเป็นหนทางไป

ฉันพยายามทำซ้ำ XML แต่จะไม่ปรากฏภายใต้ virt-manager

ฉันยังสงสัยว่าฉันจะถ่ายโอน XML + .img ไปยังระบบใหม่ที่กล่าวว่า ...


0

คำสั่งต่อไปนี้ใช้งานได้สำหรับฉัน (ต้องปิด VSA / Vm ก่อนที่จะเรียกใช้คำสั่ง)

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

1
นอกเหนือจากชื่อ VM หลอกนี่เป็นเหมือนคำสั่งจากคำตอบสามปี - แต่ขาดข้อมูลเสริมจากคำตอบนั้น
G-Man กล่าวว่า 'Reinstate Monica'

0

virt-clone - auto-clone ดูเหมือนจะเล่นไม่ได้ดีกับ LVM ฉันคาดหวังว่ามันจะสร้างสแน็ปช็อตและใช้สิ่งนั้น แต่มันจะคัดลอกข้อมูลทั้งหมด

ดีกว่าที่จะทำ dumpxml / กำหนดเส้นทาง; และอย่าลืมเมานต์ระบบไฟล์รูทของโคลนและเปลี่ยนที่อยู่ IP และชื่อโฮสต์อย่างเหมาะสมก่อนเริ่มต้นดั้งเดิมและโคลน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.