Frage Geben Sie nicht benötigten Speicherplatz in einer qcow2-image-Datei auf kvm / qemu frei


Wir verwenden kvm / qemu mit qcow2-images für unsere virtuellen Maschinen.

qcow2 hat diese nette Funktion, bei der die Bilddatei nur den tatsächlich benötigten Speicherplatz der virtuellen Maschine zuweist. aber wie schrumpfe ich die Bilddatei, wenn der zugewiesene Speicherplatz der virtuellen Maschine kleiner wird?

Beispiel:

1.) Ich erstelle ein neues Bild mit qcow2 Format, Größe 100GB

2.) Ich benutze dieses Bild um Ubuntu zu installieren. Die Installation benötigt ca. 10 GB, die Image-Datei wächst auf ca. 10 GB. bisher nichts unerwartetes.

3.) Ich fülle das Bild mit ca. 40 GB zusätzlicher Daten auf. Die Image-Datei wird bis zu 50 GB groß. Ich bin damit einverstanden :-)

4.) das ist, wo es komisch wird: Ich lösche alle 40 GB Daten auf dem Bild, aber die Bildgröße isst immer noch 50 GB.

Frage: Wie kann ich diese 40 GB Daten freigeben und das Bild auf die nur benötigten 10 GB verkleinern?

Danke im Voraus, Berni


18
2017-11-09 13:31


Ursprung




Antworten:


Das Bild wird nicht automatisch verkleinert, da beim Löschen von Dateien Daten nicht gelöscht werden (deshalb funktioniert das Löschen nicht). Qemu hat die Möglichkeit, qcow2-Images zu verkleinern, aber das Utility dedupliziert die Nullen von der Festplatte und lässt alle anderen Informationen intakt. Die Idee wäre also:

  1. Nullen Sie das Laufwerk (dd if=/dev/zero of=/some/file bis du keinen Platz mehr hast)
  2. lösche / etwas / Datei
  3. Herunterfahren der VM
  4. cd dorthin, wo die Bilder für die VM gespeichert und ausgeführt werden qemu-img convert -O qcow2 original_image.qcow2 deduplicated_image.qcow2
  5. Ändern Sie die VM-Einstellungen, um das neue deduplicated_image.qcow2 zu verwenden, testen Sie, ob die VM funktioniert, und entfernen Sie das alte Image

Dies, afaik, wird nur mit qcow2 Bildern funktionieren, ich habe keine anderen Formate getestet.


23
2017-11-10 10:18



Ach, ok. Das war sehr hilfreich - danke! - bmaeser
Wenn Sie einen Windows-Gast ausführen SDelete -z um den gesamten freien Speicherplatz auf Null zu stellen (Schritte 1, 2 oben) - ndemou


virt-sparsify kann all dies mit weniger Aufwand tun: http://libguestfs.org/virt-sparsify.1.html


14
2017-08-21 15:13



Nicht so sicher, dass es 2011 dort war - dyasny
@dyasny Wenn die bestehenden Antworten auf alte Fragen im Laufe der Zeit obsolet geworden sind, lohnt es sich, eine neue Antwort zu schreiben. Diese spezielle neue Antwort könnte jedoch nicht den Standards dieser Website entsprechen. - kasperd
@kasperd Du bist im Allgemeinen richtig, die Realität ändert sich und über Jahre hinweg tauchen neue Software und Lösungen auf. Es ist jedoch ziemlich unmöglich, jeden QnA-Thread auf dem neuesten Stand zu halten. Die alte Lösung funktioniert immer noch, die neue ist besser, kein Zweifel, aber was werden wir tun, wenn eine Lösung der dritten Generation herauskommt? - dyasny
@dyasny Wenn jemand die Mühe aufbringen möchte, eine neue Qualitätsantwort zu schreiben, sollte jedes Mal, wenn die alte veraltet ist, dazu ermutigt werden. Eine gründlichere Diskussion über den Umgang mit veralteten Antworten ist besser für Meta geeignet. - kasperd


virt-sparsify fileA fileB macht all das, aber wird nicht wirklich die Größe des Bildes reduzieren. Dazu müssen Sie hinzufügen --compress.


0
2018-01-07 05:36