kvm / qemu पर एक qcow2-image-file पर खाली जगह का उपयोग नहीं किया


23

हम kvm / qemu का उपयोग अपने वर्चुअल मशीनों के लिए qcow2-images के साथ कर रहे हैं।

qcow2 में यह अच्छी सुविधा है जहां छवि फ़ाइल केवल वर्चुअल-मशीन द्वारा वास्तव में आवश्यक स्थान आवंटित करती है। लेकिन अगर मैं वर्चुअल मशीन के आवंटित स्थान को छोटा कर देता हूं तो मैं छवि फ़ाइल को वापस कैसे करूं?

उदाहरण:

1.) मैं qcow2 प्रारूप के साथ एक नई छवि बनाता हूं, आकार 100GB

2.) मैं ubuntu स्थापित करने के लिए इस छवि का उपयोग करें। स्थापना के बारे में 10 gb की जरूरत है, छवि-फ़ाइल लगभग 10GB तक बढ़ती है। अब तक कुछ भी अप्रत्याशित नहीं है।

3.) मैं लगभग 40 जीबी अतिरिक्त डेटा के साथ छवि को भरता हूं। छवि-फ़ाइल 50GB तक बढ़ती है। मेरे लिए वह ठीक है :-)

4.) यह वह जगह है जहां यह अजीब हो जाता है: मैं छवि पर सभी 40 जीबी डेटा हटाता हूं, लेकिन छवि का आकार अभी भी 50 जीबी तक खाता है।

प्रश्न: मैं उस 40 जीबी डेटा को कैसे मुक्त कर सकता हूं और केवल 10 जीबी की जरूरत वाली छवि को सिकोड़ सकता हूं?

अग्रिम धन्यवाद, बर्नी

जवाबों:


26

छवि स्वचालित रूप से नहीं हटेगी, क्योंकि जब आप फ़ाइलों को हटाते हैं, तो आप वास्तव में डेटा को नहीं हटाते हैं (यही कारण है कि काम नहीं करता है)। Qemu में qcow2 छवियों को वापस सिकोड़ने की सुविधा है, लेकिन उपयोगिता क्या वास्तव में डिस्क से शून्य को काटती है, अन्य सभी जानकारी को बरकरार रखती है। तो विचार यह होगा:

  1. शून्य-भरण ड्राइव ( dd if=/dev/zero of=/some/fileजब तक आप अंतरिक्ष से बाहर नहीं भागते)
  2. हटाएं / कुछ / फ़ाइल
  3. VM को बंद करें
  4. cd जहाँ VM के लिए चित्र रखे गए हैं और चलते हैं qemu-img convert -O qcow2 original_image.qcow2 deduplicated_image.qcow2
  5. नई deduplicated_image.qcow2 का उपयोग करने के लिए VM सेटिंग्स बदलें, परीक्षण वीएम काम कर रहा है, और पुरानी छवि को हटा दें

यह, afaik, केवल qcow2 छवियों के साथ काम करेगा, मैंने अन्य प्रारूपों का परीक्षण नहीं किया है।


3
यदि आपके पास एक विंडोज़ गेस्ट है, तो सभी खाली स्थान को शून्य करने के लिए SDelete -z चलाएं (ऊपर 1,2 कदम)
ndemou

17

पुण्य-परित्याग यह सब आपकी ओर से कम परेशानी के साथ कर सकते हैं: http://libguestfs.org/virt-sparsify.html


इतना निश्चित नहीं कि यह 2011 में था
dyasny

2
@dyasny यदि पुराने प्रश्नों के मौजूदा उत्तर समय के साथ पुराने हो गए हैं, तो यह एक नया उत्तर लिखने के लायक है। यह विशेष रूप से नया उत्तर इस साइट के लिए मानकों पर निर्भर नहीं हो सकता है।
19

4
@dyasny यदि कोई व्यक्ति नई गुणवत्ता के उत्तर लिखने के प्रयास में खर्च करना चाहता है, तो हर बार पुराना पुराना होने पर, उन्हें ऐसा करने के लिए प्रोत्साहित किया जाना चाहिए। पुराने उत्तरों से निपटने के बारे में अधिक गहन चर्चा मेटा के लिए बेहतर अनुकूल है।
कैस्परड

1

virt-sparsify fileA fileBवह सब करेगा, लेकिन वास्तव में छवि के आकार को कम नहीं करेगा। इसके लिए आपको जोड़ना होगा --compress

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