เพิ่มพื้นที่ว่างที่ไม่ได้ใช้บนไฟล์ qcow2-image-file บน kvm / qemu


23

เราใช้ kvm / qemu กับ qcow2-images สำหรับเครื่องเสมือนของเรา

qcow2 มีคุณสมบัติที่ดีที่ไฟล์ภาพจัดสรรพื้นที่ที่จำเป็นจริงโดยเครื่องเสมือน แต่ฉันจะลดขนาดไฟล์รูปภาพได้อย่างไรถ้าพื้นที่ที่จัดสรรของเครื่องเสมือนเล็กลง?

ตัวอย่าง:

1. ) ฉันสร้างภาพใหม่ที่มีรูปแบบ qcow2 ขนาด 100GB

2. ) ฉันใช้ภาพนี้เพื่อติดตั้ง Ubuntu การติดตั้งต้องการประมาณ 10 gb, ไฟล์รูปภาพเติบโตขึ้นประมาณ 10GB ไม่มีอะไรที่คาดไม่ถึงเลย

3. ) ฉันเติมภาพด้วยข้อมูลเพิ่มเติมอีกประมาณ 40 GB ไฟล์ภาพเติบโตสูงสุด 50GB ฉันโอเคกับที่ :-)

4. ) นี่คือที่ที่มันแปลก: ฉันลบข้อมูล 40GB ทั้งหมดในภาพ แต่ขนาดภาพยังคงกิน 50GB

คำถาม: ฉันจะเพิ่มจำนวนข้อมูล 40GB และลดขนาดรูปภาพให้เหลือเพียง 10 GB ได้อย่างไร

ขอบคุณล่วงหน้าเบอนี

คำตอบ:


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. เปลี่ยนการตั้งค่า VM เพื่อใช้ deduplicated_image.qcow2 ใหม่ทดสอบ VM ทำงานและลบภาพเก่า

สิ่งนี้ afaik จะใช้ได้กับรูปภาพ qcow2 เท่านั้นฉันไม่ได้ทดสอบรูปแบบอื่น


3
หากคุณมีผู้เข้าพักที่ใช้ Windows เรียกใช้SDelete -z เพื่อเพิ่มพื้นที่ว่างให้เป็นศูนย์ (ขั้นตอนที่ 1,2 ด้านบน)
ndemou

17

virt-sparsify สามารถทำสิ่งนี้ได้โดยไม่ยุ่งยากในส่วนของคุณ: http://libguestfs.org/virt-sparsify.1.html


ไม่แน่ใจว่ามันมีในปี 2011
dyasny

2
@dyasny หากคำตอบของคำถามเก่าที่มีอยู่ล้าสมัยเมื่อเวลาผ่านไปมันก็คุ้มค่าที่จะเขียนคำตอบใหม่ คำตอบใหม่นี้อาจไม่ตรงตามมาตรฐานสำหรับไซต์นี้
kasperd

4
@dyasny หากมีคนต้องการใช้ความพยายามในการเขียนคำตอบที่มีคุณภาพใหม่ทุกครั้งที่คนเก่าล้าสมัยก็ควรได้รับการสนับสนุนให้ทำเช่นนั้น การอภิปรายอย่างละเอียดมากขึ้นเกี่ยวกับวิธีจัดการกับคำตอบที่ล้าสมัยเหมาะสำหรับเมตา
kasperd

1

virt-sparsify fileA fileBจะทำทุกอย่าง แต่จะไม่ลดขนาดของภาพ --compressสำหรับนี้คุณจะต้องเพิ่ม

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