スナップショットを削除した後、残りのスナップショットを保持しながら qcow2 ファイル内のスペースを回復するにはどうすればよいですか?

スナップショットを削除した後、残りのスナップショットを保持しながら qcow2 ファイル内のスペースを回復するにはどうすればよいですか?

5 つのスナップショット 1、2、3、4、5 で開始した仮想マシンがあります。

私はqemu-imgスナップショット 1、2、3 を削除します。スナップショット 4 と 5 はまだ必要なので削除されませんでした。

スナップショット 1、2、3 で使用されているスペースを解放し、スナップショット 4 と 5 を保持するにはどうすればよいですか?

私は解決策を探すのに多くの時間を費やしましたが、私が見つけた解決策は次の 2 つのパターンのいずれかに当てはまります。

qemu-img convertを使用する(必要なスナップショットを削除しました)

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

これにより、Linux.qcow2 が使用するスペースが削減されますが、スナップショット 4 と 5 は削除されます。

VMをコピーしてvirt-sparsifyを使用する(スペースは回復しません)

cp Linux.qcow2 TEST.qcow2

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

削除されていない 2 つのスナップショットは保持されますが、スナップショット 1、2、3 によって元々占有されていたスペースは回復されません。

スナップショットを削除した後、残りのスナップショットを保持しながら qcow2 ファイル内のスペースを回復するにはどうすればよいですか?

答え1

qcow2 ファイルはスパース ファイルです。スパース ファイルをサポートするファイルシステムでは、ファイルのサイズよりもディスク上のスペースをかなり少なくすることができます。

スナップショットを削除しても、 によって報告されるサイズはls -l変わりませんが、 によって報告されるディスク上の空き領域の量はdf変わります。

ほぼすべてのファイルシステムはスパース ファイルをサポートしています。FAT と NFSv3 は、おそらくスパース ファイルをサポートしていない唯一の一般的なファイルシステムです。

答え2

スナップショット 1、2、3 を削除すると、ファイルは削除されますが、実際の削除ではないため、解放されたスペースは示されません。ファイルは、削除がすぐに完了するようにマークされるだけです。

削除されたスナップショットのスペースを解放したい場合は、qcow2 ファイルを変換できますが、その前に dd コマンドを使用して qcow2 ファイルを 0 で埋める必要があります。

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

次にqcow2ファイルを変換します

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

関連情報