Преамбула

Жила была виртуальная машина и был у неё диск. Диск был выделен на 2гб, но максимальный размер стоял в 30гб. И вот мааленькая виртуалочка стала весить 25гб вместо своих двух. Подключился к ней по SSH и удалил всё лишнее, sync, reboot, du -sh на её диск. А он весит всё те же 25гб.

Рецепт

Решение не совсем очевидное, возможно и неправильное, но я добился удачи:

sudo qemu-img convert -c -f qcow2 -O qcow2 carbon_ci.img carbon_ci_zip.img

Соль здесь в том, что мы не просто конвертируем, но ещё и указываем параметр

-c

который означает сжатие. В результате удалось сократить размер диска до 5гб.

Возможно поможет

Кстати, я забыл один важный момент - rm файла не означает зануление места на диске, поэтому правильным решением было бы загрузиться с livecd и создать файл забитый нулями до упора на этом разделе, после чего его удалить.Как вариант скрипт тащем-то например

#!/bin/bash

set -eux
sudo qemu-img convert -c -f qcow2 -O qcow2 "$1" "$2" &
set +x
orig_size="$(du -sh "$1")"
while [ -d /proc/$! ]; do
	for i in {1..100}; do
    	echo -ne "\b"
	done
    sleep 10
    echo -n "$(du -sh $2)/$orig_size"
done
echo