ลบ“ orphan” libvirt snapshot


11

ฉันพยายามถ่ายภาพสดโดยใช้ KVM ตามขั้นตอนนี้

ฉันต้องสับสนในบางจุดเพราะฉันอยู่ในสถานะที่ฉันไม่เข้าใจ

ฉัน VM prodจะเรียกว่า /srv/vm/prod.qcow2มันถูกสร้างขึ้นในแฟ้ม

เห็นได้ชัดว่าไม่มีสแน็ปช็อตที่ใช้งานอยู่: ฉันกำลังทำงานกับไฟล์ฐาน ฉันเดาได้เพราะวันที่แก้ไขไฟล์/srv/vm/prod.qcow2เปลี่ยนแปลงทุกนาที นอกจากนี้คำสั่งนี้ยืนยันมัน:

# virsh domblklist prod
Target     Source
------------------------------------------------
vda        /srv/vm/prod.qcow2

และไม่มีอะไรที่จะบล็อกคอมมิชชัน:

# virsh blockcommit prod vda --active --pivot
error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file

อย่างไรก็ตาม libvirt คอยติดตามภาพรวมเก่า:

# virsh snapshot-list prod
 Name                 Creation Time             State
------------------------------------------------------------
 snap                 2015-06-09 12:11:33 +0200 disk-snapshot

ไฟล์ descriptor ของมันคือ/var/lib/libvirt/qemu/snapshot/prod/snap.xml:

<domainsnapshot>
  <name>snap</name>
  <state>disk-snapshot</state>
  <creationTime>1433844693</creationTime>
  <memory snapshot='no'/>
  <disks>
    <disk name='vda' snapshot='external' type='file'>
      <driver type='qcow2'/>
      <source file='/srv/vm/snap.qcow2'/>
    </disk>
  </disks>
[...]

ไฟล์ต้นฉบับ/srv/vm/snap.qcow2ถูกลบ

เมื่อพิจารณาถึงวิธีการที่ฉันพยายามนำไปใช้มันเป็นไปได้มากที่สแน็ปช็อตนี้ถูกสร้างขึ้นด้วยคำสั่งต่อไปนี้:

virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic

ฉันไม่สามารถลบมันได้:

# virsh snapshot-delete prod snap
error: Failed to delete snapshot snap
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet

ดังนั้นฉันจึงอยู่ในสถานะที่สร้างสแนปชอตดูเหมือนจะไม่ใช้แล้วและไม่สามารถลบได้

มีบางอย่างที่ฉันสามารถทำได้เกี่ยวกับเรื่องนี้?

ฉันควรจะสนใจหรือว่าฉันจะเพิกเฉย?

แก้ไข

ฉันเพิ่งลบ descriptor ไฟล์ snapshot ออก

# systemctl stop libvirt
# mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome
# systemctl start libvirt

VM ของฉันกลับมาทำงานอีกครั้งและฉันไม่เห็นการอ้างอิงใด ๆ กับสแนปชอตอีกต่อไป

# virsh snapshot-list prod
 Name                 Creation Time             State
------------------------------------------------------------

ไม่มีอะไรใน virt-manager เช่นกัน

ฉันสบายดีหรือยังมีแม่บ้านให้ทำบ้าง

แก้ไข 2

เห็นได้ชัดว่าการส่งผ่าน-–no-metadataไปยังvirsh snapshot-create-asจะหลีกเลี่ยงปัญหานี้โดยไม่สร้างไฟล์. xml ดังนั้นจึงไม่มีการติดตามสแนปชอต


1
หลังจากคุณลบ descriptor ไฟล์ snapshot แล้วยังมีหลักฐานบางอย่างของ snapshot ที่มีอยู่เหลืออยู่ในอิมเมจ VM ซึ่งสามารถตรวจสอบqemu-img info /srv/vm/prod.qcow2ได้ แต่ฉันไม่แน่ใจว่าจะลบการติดตามตัวเองได้อย่างไร ...
sdittmar

@sdittmar คุณอาจต้องการติดต่อรายชื่อผู้รับจดหมาย - ผู้ใช้ libvirt (ดูคำตอบของฉัน) เพื่อรับคำตอบที่แม่นยำ
Jérôme

คำตอบ:


16

วิธีการที่เหมาะสมคือ

virsh snapshot-delete prod --metadata snap

(คำสั่งนี้สามารถพบได้ในวิกิฉันลองก่อนที่จะถามที่นี่ แต่มันล้มเหลวเนื่องจากการพิมพ์ผิดที่ได้รับการแก้ไขตั้งแต่)

ฉันไม่รู้ว่ามันทำอะไรบ้างที่ไม่ครอบคลุมโดยการลบไฟล์. xml ในขณะที่ libvirtd หยุดทำงาน บางทีความแตกต่างเพียงอย่างเดียวคือการหยุด libvirtd ไม่จำเป็น ถึงอย่างนั้นก็อาจจะมีวิวัฒนาการในอนาคต ไม่ว่าในกรณีใดแนะนำให้ใช้ API ของ libvirt แทนที่จะเล่นกับไฟล์โดยตรง

การโทรนี้ไม่จำเป็นถ้าสร้างสแนปชอตด้วย--no-metadataอาร์กิวเมนต์

ฉันได้รับการชี้แจงในหัวข้อนี้ของlibvirt ผู้ใช้ทางรายการ

ทุกคนยินดีที่จะทำการสำรองข้อมูลผ่านภาพรวมสดควรอ่านหน้าวิกิดังกล่าวข้างต้นและอาจมีความสนใจในหัวข้อฟอรั่มที่ตอบคำถาม noob ของฉันและชี้ไปที่ภาพนิ่งจาก Eric Blakeเช่นเดียวกับโพสต์บล็อกนี้

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