Wie kann man das ext4-Dateisystem spärlich machen?

10

Ich verwende Linux als Gastbetriebssystem in VirtualBox. Ich habe eine große Anzahl von Dateien aus dem Dateisystem gelöscht. Jetzt möchte ich die Dateisystem-Image-Datei (vdi) verkleinern. Das Verkleinern funktioniert durch Komprimieren des Dateisystem-Images, wo immer es den Wert "null" auf der Festplatte hat.

Es scheint, dass eine Anwendung namens zerofree "null" so in den freien Speicherplatz des Dateisystems schreiben kann, dass es spärlich wird. Aber die Anweisungen sagen, dass es nur auf ext2 / ext3 funktioniert. Ich habe ext4 auf meinem Gastbetriebssystem.

  1. Warum funktioniert es in Ext 4 nicht (der genannte Grund ist "Extents", aber kann jemand mehr Licht ins Dunkel bringen)?

  2. Wird es funktionieren, wenn ich die ext 4 als ext 3 mounte und dann als ext 4 wieder montiere ?

  3. Gibt es noch andere Tools, die ähnliche Funktionen wie nullfrei auf ext ausführen können?

rajaganesh87
quelle
2
Laut dem dortigen Link arbeitet zerofree auf ext4.
Psusi
Ich bin nicht sicher, ob es zu Ihrer Zeit funktioniert oder nicht, aber die Manpage sagte, dass es ext4 unterstützt
phuclv

Antworten:

23

Auf der Seite, auf die Sie verweisen ( http://intgat.tigress.co.uk/rmy/uml/index.html ), heißt es:

The utility also works on ext3 or ext4 filesystems.

Ich bin mir also nicht sicher, woher Sie kommen, dass es auf ext4-Dateisystemen nicht funktioniert.

Beachten Sie, dass sich das Dienstprogramm zerofree von dem auf derselben Seite erwähnten Kernel-Patch zerofree unterscheidet (der in der Tat keine Version für ext4 zu haben scheint).

Update: Zumindest im Fall von VirtualBox glaube ich nicht, dass Sie dieses Dienstprogramm überhaupt benötigen. In meinen Tests können Sie bei einer Standardinstallation von Ubuntu 10.04 auf ext4 das Dateisystem wie folgt auf Null setzen:

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

... warten Sie, bis sich die virtuelle Festplatte gefüllt hat

$ rm test.file

und fahren Sie die VM herunter. Führen Sie dann auf Ihrem VirtualBox-Host Folgendes aus:

$ VBoxManage modifyhd --compact yourImage.vdi

und Sie werden den gesamten nicht genutzten Speicherplatz wiederherstellen.

pdo
quelle
Danke für deine Antwort. Die Manpage von zerofree hat ext4 nicht angegeben, deshalb brauchte ich eine Alternative.
Rajaganesh87
1
Die vorgeschlagene Alternative (dd if = / dev / zero von = test.file) hat bei mir funktioniert! Viel einfacher als andere Lösungen.
Pisu
3
Dies sollte die akzeptierte Antwort sein. Funktioniert wunderbar.
Chris Pratt
Mach ein syncnach dem dd.
Ignis
ddIdee hat auch bei mir funktioniert. Schön gemacht!
Stefan
1

Sie könnten verwenden e2fsprogs, es gibt eine Version, die mit ext4 verwendet werden kann.

Machen Sie sich zum Superuser:

# su

Hängen Sie Ihr Laufwerk aus:

# umount /dev/sda1

Entfernen Sie das Journal Ihres Laufwerks:

# tune2fs -O ^has_journal /dev/sda1

Und ändern Sie dann die Größe Ihres Dateisystems:

# resize2fs /dev/sda1 30G


quelle
Vielen Dank für Ihre Antwort, aber ich möchte nicht die Partition verkleinern, sondern das Dateisystem-Image (vdi) des Gastes.
Rajaganesh87