Wie kann ich nach dem Löschen von Snapshots den Speicherplatz in einer qcow2-Datei wiederherstellen und gleichzeitig die verbleibenden Snapshots beibehalten?

Wie kann ich nach dem Löschen von Snapshots den Speicherplatz in einer qcow2-Datei wiederherstellen und gleichzeitig die verbleibenden Snapshots beibehalten?

Ich habe eine virtuelle Maschine, die mit 5 Snapshots 1,2,3,4,5 gestartet ist.

ich benutzteqemu-imgum die Snapshots 1,2,3 zu löschen. Die Snapshots 4 und 5 werden noch benötigt und wurden nicht gelöscht.

Wie kann ich den von den Snapshots 1, 2 und 3 belegten Speicherplatz freigeben und die Snapshots 4 und 5 behalten?

Ich habe viel Zeit mit der Suche nach einer Lösung verbracht und die Lösungen, die ich gefunden habe, passen in eines von zwei Mustern:

Verwenden Sie qemu-img convert(Erforderliche Schnappschüsse gelöscht)

qemu-img convert -O qcow2 Linux.qcow2 Linux_s.qcow2

Dadurch wird der von Linux.qcow2 verwendete Speicherplatz reduziert, es werden jedoch die Snapshots 4 und 5 gelöscht.

Kopieren Sie die VM und verwenden Sie virt-sparsify(Stellt keinen Speicherplatz wieder her)

cp Linux.qcow2 TEST.qcow2

sudo virt-sparsify --in-place TEST.qcow2

Die beiden nicht gelöschten Snapshots bleiben erhalten, der Speicherplatz, der ursprünglich von den Snapshots 1, 2 und 3 belegt wurde, wird jedoch nicht wiederhergestellt.

Wie kann ich nach dem Löschen von Snapshots den Speicherplatz in einer qcow2-Datei wiederherstellen und gleichzeitig die verbleibenden Snapshots beibehalten?

Antwort1

qcow2-Dateien sind Sparse-Dateien. Auf Dateisystemen, die Sparse-Dateien unterstützen, können sie viel weniger Speicherplatz auf der Festplatte beanspruchen als die Größe der Datei.

Wenn Sie einen Snapshot löschen, ändert sich die von gemeldete Größe ls -lnicht, aber die von gemeldete Menge an freiem Speicherplatz auf der Festplatte dfändert sich.

Fast alle Dateisysteme unterstützen Sparse-Dateien. FAT und NFSv3 sind wahrscheinlich die einzigen gängigen Dateisysteme, die dies nicht tun.

Antwort2

Wenn Sie die Snapshots 1, 2 und 3 löschen, werden die Dateien gelöscht, es wird jedoch kein freigegebener Speicherplatz angezeigt, da es sich nicht um eine echte Löschung handelt. Die Dateien werden lediglich markiert, damit der Löschvorgang schnell abgeschlossen werden kann.

Wenn Sie den Speicherplatz der gelöschten Snapshots freigeben möchten, können Sie die qcow2-Datei konvertieren. Dazu müssen Sie die qcow2-Datei jedoch vorher per dd-Befehl mit 0 füllen:

$dd if=/dev/zero of=~/junk
dd: writing to `/home/***/junk': No space left on device
$rm junk

dann konvertieren Sie die qcow2-Datei

qemu-img convert -O qcow2  Linux.qcow2 Linux_s.qcow2

verwandte Informationen