วิธีที่จะทำให้ระบบไฟล์ ext4 กระจัดกระจาย?


10

ฉันใช้ Linux เป็น guest OS ใน VirtualBox ฉันลบไฟล์จำนวนมากออกจากระบบไฟล์ ตอนนี้ฉันต้องการลดขนาดไฟล์อิมเมจระบบไฟล์ (vdi) การย่อขนาดทำงานโดยการบีบอัดอิมเมจระบบไฟล์ทุกที่ที่มีค่า "null" ในดิสก์

ดูเหมือนว่าแอปพลิเคชันที่ชื่อว่าzerofreeสามารถเขียน "null" ลงในพื้นที่ว่างของระบบไฟล์ในแบบที่มันกระจัดกระจาย แต่คำแนะนำบอกว่ามันใช้งานได้กับ ext2 / ext3 เท่านั้น ฉันมี ext4 ในระบบปฏิบัติการแขกของฉัน

  1. ทำไมมันถึงใช้งานไม่ได้กับ ext 4 (เหตุผลที่อ้างถึงคือ "extents" แต่ใครบางคนสามารถทำให้กระจ่างขึ้นได้)

  2. มันจะใช้งานได้หรือไม่ถ้าฉันต่อ ext 4เป็นext 3แล้วนับใหม่เป็นext 4 ?

  3. มีเครื่องมืออื่นใดที่สามารถทำสิ่งที่คล้ายกันเป็น zerofree บน ext?


2
ตามลิงค์มี zerofree ทำงานบน ext4
psusi

ฉันไม่แน่ใจว่ามันใช้งานได้ตามเวลาของคุณหรือไม่ แต่manpageบอกว่ามันรองรับ ext4
phuclv

คำตอบ:


23

หน้าที่คุณอ้างอิง ( http://intgat.tigress.co.uk/rmy/uml/index.html ) ระบุว่า:

The utility also works on ext3 or ext4 filesystems.

ดังนั้นฉันไม่แน่ใจว่าคุณได้รับที่ใดว่ามันไม่ทำงานบนระบบไฟล์ ext4

โปรดทราบว่ายูทิลิตี้ zerofree แตกต่างจากแพทช์เคอร์เนล zerofree ที่กล่าวถึงในหน้าเดียวกัน (ซึ่งดูเหมือนจะไม่มีเวอร์ชั่นสำหรับ ext4)

Update:อย่างน้อยในกรณีของ VirtualBox ฉันไม่คิดว่าคุณต้องการยูทิลิตี้นี้เลย ในการทดสอบของฉันบน Ubuntu Ubuntu 10.04 ที่ติดตั้งบน ext4 คุณสามารถเป็นศูนย์ระบบไฟล์ดังนี้:

$ dd if=/dev/zero of=test.file

... รอให้ดิสก์เสมือนกรอกข้อมูล

$ rm test.file

และปิด VM ลง จากนั้นใน VirtualBox host ของคุณ:

$ VBoxManage modifyhd --compact yourImage.vdi

และคุณจะกู้คืนพื้นที่ที่ไม่ได้ใช้ทั้งหมด


ขอบคุณสำหรับการตอบกลับของคุณ. manpage ของ zerofree ไม่ได้ระบุ ext4 นั่นคือเหตุผลที่ฉันต้องการทางเลือก
rajaganesh87

1
ทางเลือกที่เสนอ (dd if = / dev / zero of = test.file) ทำงานให้ฉัน! ง่ายกว่าโซลูชันอื่น ๆ มาก
Pisu

3
นี่ควรเป็นคำตอบที่ยอมรับได้ ทำงานได้อย่างสวยงาม
Chris Pratt

ทำsyncหลังจากdd.
Ignis

ddความคิดก็เหมาะกับฉันเช่นกัน ทำได้ดีมาก!
Stefan

1

คุณสามารถใช้e2fsprogsมีรุ่นที่สามารถใช้ได้กับ ext4

ทำให้ตัวเอง superuser:

# su

ถอนการติดตั้งไดรฟ์ของคุณ:

# umount /dev/sda1

ลบบันทึกประจำวันของไดรฟ์ของคุณ:

# tune2fs -O ^has_journal /dev/sda1

จากนั้นปรับขนาดระบบไฟล์ของคุณ:

# resize2fs /dev/sda1 30G


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