"अनाथ" libvirt स्नैपशॉट हटाएं


11

मैं इस प्रक्रिया के अनुसार KVM का उपयोग कर लाइव-स्नैपशॉट की कोशिश कर रहा हूं ।

मुझे कुछ बिंदु पर गड़बड़ करनी चाहिए क्योंकि मैं ऐसी स्थिति में हूं जो मुझे समझ में नहीं आता है।

मेरे वीएम कहा जाता है 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

इसकी डिस्क्रिप्टर फाइल है /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

इसलिए मैं एक ऐसी स्थिति में हूं जहां एक स्नैपशॉट बनाया गया था, जाहिर तौर पर अब इसका उपयोग नहीं किया जाता है, और इसे हटाया नहीं जा सकता है।

क्या मैं इसके बारे में कुछ कर सकता हूं?

क्या मुझे ध्यान देना चाहिए या मैं इसे अनदेखा कर सकता हूं?

संपादित करें

मैंने अभी स्नैपशॉट फ़ाइल डिस्क्रिप्टर को हटा दिया है।

# 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
------------------------------------------------------------

पुण्य-प्रबंधक में भी कुछ नहीं।

क्या मैं ठीक हूं या अभी भी कुछ हाउसकीपिंग करनी है?

संपादित करें २

जाहिर है, गुजर -–no-metadataकरने virsh snapshot-create-as.xml फ़ाइल बनाने नहीं, इस प्रकार स्नैपशॉट का कोई निशान नहीं रख कर इस समस्या से बचने होगा।


1
जब आप स्नैपशॉट फ़ाइल डिस्क्रिप्टर को हटाते हैं, तो वीएम इमेज में मौजूद मौजूदा स्नैपशॉट के कुछ सबूत अभी भी होने चाहिए, जिन्हें चेक किया जा सकता है qemu-img info /srv/vm/prod.qcow2। लेकिन मुझे यकीन नहीं है कि उस ट्रेस को कैसे हटाया जाए ...
sdittmar

@sdittmar आप इस पर सटीक उत्तर पाने के लिए libvirt-users मेलिंग-लिस्ट (मेरा उत्तर देखें) से संपर्क कर सकते हैं।
जोराम

जवाबों:


16

उचित विधि थी

virsh snapshot-delete prod --metadata snap

(यह आदेश विकी पर पाया जा सकता है । मैंने यहां पूछने से पहले यह कोशिश की थी लेकिन यह एक टाइपो के कारण विफल रहा है जो तब से सही है।)

मुझे नहीं पता कि यह क्या करता है जो कि .xml फ़ाइल को हटाकर कवर नहीं किया जाता है जबकि libvirtd डाउन है। शायद फर्क सिर्फ इतना है कि libvirtd को रोकना आवश्यक नहीं है। फिर भी, शायद भविष्य में यह विकसित हो सके। किसी भी स्थिति में, सीधे फ़ाइलों के साथ खेलने के बजाय libvirt के API का उपयोग करने की अनुशंसा की जाती है।

यदि स्नैपशॉट --no-metadataतर्क से बनाया गया था, तो यह कॉल वास्तव में आवश्यक नहीं है।

मैं इस स्पष्टीकरण प्राप्त इस सूत्र के libvirt-उन-मेलिंग सूची

लाइव स्नैपशॉट के माध्यम से बैकअप करने के इच्छुक किसी भी व्यक्ति को उक्त विकी पेज को पढ़ना चाहिए, और फ़ोरम थ्रेड में दिलचस्पी हो सकती है जो मेरे नॉब के सवालों का जवाब देता है, और एरिक ब्लेक से स्लाइड्स के साथ-साथ इस ब्लॉग पोस्ट और निम्न टिप्पणियों के बारे में बताता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.