ฉันมีดิสก์อิมเมจมากมายที่สร้างด้วย ddrescue บนพาร์ติชัน EXT และฉันต้องการลดขนาดโดยไม่สูญเสียข้อมูลในขณะที่ยังคงสามารถเมานต์ได้
ฉันจะเติมพื้นที่ว่างในระบบไฟล์ของภาพด้วยค่าศูนย์จากนั้นแปลงไฟล์เป็นไฟล์แบบกระจัดกระจายเพื่อให้พื้นที่ว่างนี้ไม่ได้ถูกจัดเก็บจริงบนดิสก์
ตัวอย่างเช่น:
> du -s --si --apparent-size Jimage.image
120G Jimage.image
> du -s --si Jimage.image
121G Jimage.image
นี่เป็นเพียงข้อมูลจริง 50G เท่านั้นดังนั้นการวัดครั้งที่สองควรน้อยกว่ามาก
นี้ควรจะเติมเต็มพื้นที่ว่างด้วยศูนย์:
cat /dev/zero > zero.file
rm zero.file
แต่ถ้าไฟล์ sparse ได้รับการจัดการอย่างโปร่งใสมันอาจสร้างไฟล์ sparse โดยไม่ต้องเขียนอะไรไปยังดิสก์เสมือนทำให้ฉันไม่สามารถเปลี่ยนอิมเมจดิสก์เสมือนเป็นไฟล์ sparse ได้ :) ทำมัน?
หมายเหตุ: ด้วยเหตุผลบางอย่างsudo dd if=/dev/zero of=./zero.file
ทำงานเมื่อcat
ไม่ได้อยู่ในดิสก์อิมเมจที่เมาท์
sudo cat /dev/zero > zero.file
ไม่ทำงานเนื่องจากทุบตีของคุณ (ทำงานเหมือนคุณไม่ใช่รูท) ทำการเปลี่ยนเส้นทางก่อนดำเนินการsudo
คำสั่ง ดูunix.stackexchange.com/questions/1416/…