Wie lösche ich ungenutzten Speicherplatz mit Nullen? (Ich frage nach einem Tool für das btrfs- Dateisystem)
Ich suche etwas schlauer als
cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero
Wie FSArchiver sucht nach "gebrauchtem Speicherplatz" und ignoriert ungenutzten, aber gegenüberliegenden Standort.
Zweck: Ich möchte Partitionsimages komprimieren, daher wird dringend empfohlen, nicht verwendeten Speicherplatz mit Nullen zu füllen.
Übrigens. Für ext3, ext4: Nicht verwendeten Speicherplatz mit Nullen löschen (ext3, ext4) . Hier bitte ich um btrfs
Klarstellung des "intelligenteren Algorithmus": Da ich sehe, dass der "intelligentere Algorithmus" zu Verwirrung führt, habe ich mich schließlich entschlossen, eine Zeile darüber hinzuzufügen. Sehr geehrter Leser, bitte denken Sie an das Dateisystem als Datenstruktur. Stellen wir uns zur Vereinfachung eine selbstausgleichende rot-schwarze Baumhaltekarte vor, die als Zuordnungsschlüssel-> Wertearray verwendet wird, wobei Werte Ganzzahlen sind. Ziel ist es, alle negativen Werte mit Nullen zu löschen. Der "nicht intelligente" Algorithmus iteriert darüber und fügt der neuen Karte Schlüssel-Wert-Paare hinzu (wobei sich das Negativ schließlich auf Null ändert). Der intelligente Algorithmus erkennt nur Orte, an denen negative Werte gespeichert sind, und löscht sie an Ort und Stelle .
quelle
sfill
Vorschlag ausprobiert ? Es sieht so aus, als würde extX nicht benötigt.truncate
und / oderfallocate
Antworten:
Hier ist ein modifizierter und viel erweiterter Repost meiner Antwort auf Ihre vorherige Frage:
sfill
aus demsecure-delete
Paket kann machen, was Sie wollen.Im Gegensatz zu zerofree (das nur mit ext2-, ext3- und ext4-Dateisystemen funktioniert) funktioniert sfill mit jedem Dateisystem.
z.B
Die Homepage sfill / secure-delete scheint nun verschwunden zu sein, ist jedoch für Debian und Ubuntu verpackt. wahrscheinlich auch andere Distributionen. Wenn Sie Quellcode benötigen, finden Sie diesen in den Debian-Archiven, wenn Sie ihn nirgendwo anders finden.
HINWEIS: sfill funktioniert nur auf einem gemounteten Dateisystem. Wenn Sie die Image-Dateien nicht vom Host-System aus, sondern vom Host-System aus füllen, müssen Sie das fs-Image auf dem Host bereitstellen. Die genaue Methode hängt von der Art der Bilddatei ab (z. B. qcow2 oder raw).
Das Mounten von "Rohbildern" ist einfach und unkompliziert. Verwenden Sie einfach
kpartx
die Image-Datei, um ein Loopback-Gerät zu erstellen, und / dev / mapper / entry für jede Partition kann dann einzeln gemountet werden.Hier ist ein Teilskript, das von einem Fragment des Skripts geändert wurde, das ich zum Mounten von netzstartfähigen Freedos-Festplattenabbildern verwende (wird für BIOS-Updates auf Computern verwendet, auf denen Flashrom nicht funktioniert):
HINWEIS: Es wird davon ausgegangen, dass jede Partition im Image bereitgestellt werden kann. true in meinem Anwendungsfall (ein freedos hd-Image mit einer Partition). Nicht wahr, wenn eine der Partitionen beispielsweise Swap Space ist. Das Erkennen solcher Partitionen und die Verwendung von dd zum Nullstellen der Swap-Partition bleibt dem Leser als Übung :)
Diese Methode oder eine Variante davon sollte auch für LVM-Volumes funktionieren.
Wenn Ihre Bilder qcow sind, können Sie das
qemu-nbd
Tool aus demqemu-utils
Paket verwenden, das die Bilddatei und ihre Partitionen als Netzwerkblockgeräte darstellt - z. B. / dev / nbd0 / dev / ndb0p1 -, die auf ähnliche Weise wie das / verwendet werden können Dev / Mapper-Geräte oben.Es ist möglicherweise einfacher und weniger mühsam (aber zeitaufwändiger)
qemu-img
, von qcow nach raw zu konvertieren, die oben beschriebene Methode für raw zu verwenden und dann das modifizierte Rohbild wieder in komprimiertes qcow2 zu konvertieren. Dies führt wahrscheinlich zu etwas kleineren Bildern als bei Verwendung von qemu-nbd, da Sie das neue qcow2-Bild beim Erstellen komprimieren.quelle
Der richtige und "intelligente" Weg, um den freien Speicherplatz freizugeben, ist:
Verwenden Sie dies auf einem gemounteten Dateisystem.
Es ist wichtig zu beachten, dass dies keinen Sicherheitsvorteil bietet. Wenn Sie Ihre Festplatte aus Sicherheitsgründen löschen möchten, sichern Sie Ihre Dateien, setzen Sie die gesamte Festplatte mit einem Befehl wie "Shred" auf Null und stellen Sie dann Ihre Dateien wieder her.
Die Lösung funktioniert jedoch einwandfrei, wenn es sich bei Ihrer Festplatte um eine Thin Provision in einem spärlichen Dateisystem handelt und Sie den nicht verwendeten Speicherplatz wiederherstellen möchten.
quelle