Как восстановить место в файле qcow2 после удаления снимков, сохранив при этом оставшиеся снимки?

Как восстановить место в файле qcow2 после удаления снимков, сохранив при этом оставшиеся снимки?

У меня есть виртуальная машина, которая изначально имела 5 снимков: 1,2,3,4,5.

я использовалqemu-imgудалить снимки 1, 2, 3. Снимки 4 и 5 все еще нужны и не были удалены.

Как освободить пространство, используемое снимками 1,2,3, и сохранить снимки 4 и 5?

Я потратил много времени на поиск решения, и найденные мной решения укладываются в одну из двух схем:

Используйте qemu-img convert(Удалены необходимые снимки)

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

Это уменьшает пространство, используемое Linux.qcow2, но удаляет снимки 4 и 5.

Скопируйте виртуальную машину и используйте virt-sparsify(Не восстанавливает место)

cp Linux.qcow2 TEST.qcow2

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

Он сохраняет два неудалённых снимка, но не восстанавливает пространство, которое изначально занимали снимки 1,2,3.

Как восстановить место в файле qcow2 после удаления снимков, сохранив при этом оставшиеся снимки?

решение1

Файлы qcow2 — это разреженные файлы. В файловых системах, которые поддерживают разреженные файлы, они могут занимать на диске гораздо меньше места, чем размер файла.

Если удалить снимок, размер, указанный в отчете, ls -lне изменится, но объем свободного места на диске, указанный в отчете, dfизменится.

Почти все файловые системы поддерживают разреженные файлы. FAT и NFSv3, вероятно, единственные распространенные файловые системы, которые этого не делают.

решение2

При удалении снимков 1,2,3 файлы удаляются, но это не указывает на освобожденное пространство, поскольку это не настоящее удаление. Файлы просто помечаются, чтобы удаление было завершено быстро.

Если вы хотите освободить место, занятое удаленными снимками, вы можете преобразовать файл qcow2, но перед этим вам необходимо заполнить файл qcow2 значением 0 с помощью команды dd:

$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

Связанный контент