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