Hallo,
ich suche nach einer Möglichkeit ungenutzte Festplattenbereiche mit Nullen zu überschreiben.
Der Hintergrund ist folgender, wenn ich komprimierte Images von Festplatten erstelle, so werden diese mit der Zeit immer größer obwohl die tatsächliche Datenmenge auf den Festplatten nahezu gleichgeblieben ist. Die Ursache dafür ist daß z.B. beim Kopieren und Löschen von Dateien die Bereiche auf der Platte nicht wieder genullt werden. Die gelöschten Daten sind in Wirklichkeit immer noch auf der Platte und werden beim Erstellen der Images mitkopiert und komprimiert. Eine Defragmentierung mit z.B. e4defrag bring hier leider auch keine Abhilfe.
Vielleicht hat jemand eine Idee?
Vg
jack
Ungenutze Festplattenbereiche mit Nullen überschreiben
Re: Ungenutze Festplattenbereiche mit Nullen überschreiben
Habe gerade eine Methode gefunden, ist vielleicht nicht so ganz die "feiene Art", aber es funktionert sehr gut.
zerofill.sh
Es wird auf der Festplatte (hier muss man ggf. das Verzeichnis anpassen) eine größtmögliche mit Nullen gefüllte Datei erstellt und sofort wieder gelöscht.
Dadurch werden alle freien Bereiche auf der Festplatte wieder mit Nullen überschrieben. .
vg
jack
zerofill.sh
Code: Alles auswählen
#!/bin/bash
dd if=/dev/zero of=/tmp/ZEROFILE.tmp
rm /tmp/ZEROFILE.tmp
Dadurch werden alle freien Bereiche auf der Festplatte wieder mit Nullen überschrieben. .
vg
jack
Re: Ungenutze Festplattenbereiche mit Nullen überschreiben
zerofree sollte das können ohne zwischendurch die ganze Platte vollzuschreiben.
Re: Ungenutze Festplattenbereiche mit Nullen überschreiben
Kommt darauf an was du vor hast. Das simpelste wäre eine große Datei aus /dev/zero zu erstellen und danach zu löschen. Gibt wohl aber auch tools dafür zerofree. Ansonsten gibt es auch tools, die Dateisysteme etwas effizienter abspeichern.
Unix is user-friendly; it's just picky about who its friends are.
- peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Re: Ungenutze Festplattenbereiche mit Nullen überschreiben
Viele Imaging-Tools sichern auch einfach den ungenutzten Platz nicht mit, z.B. partimage. Das finde ich eigentlich die bessere Lösung.
MfG Peschmä
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
Re: Ungenutze Festplattenbereiche mit Nullen überschreiben
Hey, vielen Dank für den Hinweis auf zerofree.
Leider kann ich es (noch) nicht überall einsetzten, weil es auf Debian-Squeeze nur ext2/ext3 unterstützt und ich bereits überall auf ext4 umgestiegen bin.
Ich merk es mir aber für die Zukunft, sobald ich auf Wheezy upgegradet habe, werde ich es gegen mein zerofill.sh auswechseln
Obwohl..., ich lese hier gerade:
https://packages.debian.org/de/wheezy/zerofree
"Zerofree requires the file-system to be unmounted or mounted read-only."
Das finde ich dann wieder nicht ganz so toll.
Bei meinem Miniscript brauche ich bei einer 50GB Partition gerade mal 2 Minuten und wenn der Job 1/Woche läuft, dann sollte das - zumindest für meine Zwecke - ausreichend sein.
Ich erstelle 1-2/Woche Backups von allen virtuellen Festplatten und dafür brauche ich es. Die Platten waren nach Komprimiereung bereits 20-70GB groß und jetzt sind es nur noch 2-5GB - das ist schon nicht übel
vg
jack
Leider kann ich es (noch) nicht überall einsetzten, weil es auf Debian-Squeeze nur ext2/ext3 unterstützt und ich bereits überall auf ext4 umgestiegen bin.
Ich merk es mir aber für die Zukunft, sobald ich auf Wheezy upgegradet habe, werde ich es gegen mein zerofill.sh auswechseln
Obwohl..., ich lese hier gerade:
https://packages.debian.org/de/wheezy/zerofree
"Zerofree requires the file-system to be unmounted or mounted read-only."
Das finde ich dann wieder nicht ganz so toll.
Bei meinem Miniscript brauche ich bei einer 50GB Partition gerade mal 2 Minuten und wenn der Job 1/Woche läuft, dann sollte das - zumindest für meine Zwecke - ausreichend sein.
Ich erstelle 1-2/Woche Backups von allen virtuellen Festplatten und dafür brauche ich es. Die Platten waren nach Komprimiereung bereits 20-70GB groß und jetzt sind es nur noch 2-5GB - das ist schon nicht übel
vg
jack
Re: Ungenutze Festplattenbereiche mit Nullen überschreiben
Das Wheezy-Paket sollte auch unter Squeeze funktionieren.jack88 hat geschrieben:Leider kann ich es (noch) nicht überall einsetzten, weil es auf Debian-Squeeze nur ext2/ext3 unterstützt und ich bereits überall auf ext4 umgestiegen bin.
Da muss wohl sichergestellt werden, das nicht in der Zeit in der zu löschende Sektoren ermittelt werden auf diese geschrieben wird.jack88 hat geschrieben:Obwohl..., ich lese hier gerade:
https://packages.debian.org/de/wheezy/zerofree
"Zerofree requires the file-system to be unmounted or mounted read-only."
Eine Möglichkeit zerofree einzusetzen wäre das Dateisystem per Script vorher zu umounten und hinterher wieder zu remounten. Falls du in der Zeit doch (lesend) darauf zugreifen musst könntest du es read-only remounten.
Das wäre ein Durchsatz von über 400MB/s. Soweit ich weiß geht sowas nur auf RAIDs oder SSDs. In dem Fall solltest du dein dd-Kommando noch beschleunigen können indem du dafür sorgst, dass Blöcke geschrieben werden die ein Vielfaches der RAID-Stripegröße bzw. der SSD-Clustergröße haben. 1MB ist hier meist ein guter Wert. Standardmäßig schreibt dd 512B-Blöcke.jack88 hat geschrieben:Bei meinem Miniscript brauche ich bei einer 50GB Partition gerade mal 2 Minuten
Je nachdem wie zerofree arbeitet könnte es deutlich schneller als dd sein. Auf jeden Fall sollte es nicht signifikant langsamer sein.
Re: Ungenutze Festplattenbereiche mit Nullen überschreiben
Ja, die Images der virtuellen Festplatten liegen auf einer SSD.Das wäre ein Durchsatz von über 400MB/s. Soweit ich weiß geht sowas nur auf RAIDs oder SSDs.
Danke für den Tipp, mit bs=1MB sind es nur noch 97 Sekunden - super!In dem Fall solltest du dein dd-Kommando noch beschleunigen....
VG
jack