Так-как файлы виртуальных машин формата qcow2 это не совсем обычные файлы, а так называемые sparced-файлы (разряженные), то и подход при работе с ними несколько отличается. Если вы создали виртуальную машину с диском в 100гб, а используется всего 15гб, то файл на диске будет занимать примерно эти же (есть ряд нюансов которые надо учитывать). При копировании sparced файла средствами ОС вы получите его в чистом виде на 100гб.
Общие сведения о sparced-файлах
Sparse‑файл (разрежённый файл) — это особый тип файла в файловой системе, в котором последовательности нулевых байт (блоков нулей) не хранятся физически на диске, а лишь обозначаются в метаданных как «дыры» (holes). При чтении из такой «дыры» система возвращает нули, но реального места на носителе эти нули не занимают. sparse‑файлы — мощный механизм экономии дискового пространства для данных с большими блоками нулей. Они прозрачны для приложений, но требуют поддержки со стороны файловой системы и осторожности при резервном копировании.
Как это работает
Вместо записи миллионов нулевых байт файловая система отмечает в метаданных: «с позиции X до позиции Y — нули, реально ничего не записано».
Чтение
Когда приложение читает данные из «дыры», ОС «подменяет» отсутствующие блоки нулями и отдаёт их как обычные данные.
Запись
При записи в «дыру» система выделяет реальные блоки на диске и записывает данные. «Дыра» перестаёт существовать в этом месте.
Где применяются
- Образы дисков и виртуальные машины (например, QEMU/KVM с форматом qcow2).
- Резервные копии и снапшоты, где много нулевых или повторяющихся блоков.
- Базы данных и файлы журналов, где заранее выделяется большое пространство, но заполняется постепенно.
- Тестирование и отладка (создание «огромных» файлов без траты диска).
Работа с файлами формата qcow2
QCow2 (QEMU Copy‑On‑Write version 2) — формат дисковых образов, используемый в QEMU и KVM. Отличается поддержкой снапшотов, сжатием и «отложенным выделением» пространства (thin provisioning).
Ключевые особенности
- Copy‑on‑Write (CoW): при изменении данных блок копируется, исходные данные остаются неизменными (важно для снапшотов).
- Снапшоты: сохранение состояний виртуальной машины без полного копирования диска.
- Сжатие: поддержка gzip/zlib (опционально).
- Тонкое выделение (thin provisioning): файл растёт по мере записи данных.
- Шифрование: возможна защита данных (зависит от версии и настроек).
Основные операции
Создание образа
# qemu-img create -f qcow2 mydisk.qcow2 20G
-f qcow2— формат;20G— размер (можно использовать K, M, G, T).
Конвертация в/из qcow2
Из raw в qcow2
# qemu-img convert -f raw -O qcow2 disk.raw mydisk.qcow2
Из qcow2 в raw
# qemu-img convert -f qcow2 -O raw mydisk.qcow2 disk.raw
# Сжатие при конвертации
qemu-img convert -c -f qcow2 -O qcow2 old.qcow2 new.qcow2
-c— включить сжатие.
Проверка и информация
Информация об образе
# qemu-img info mydisk.qcow2
Проверка целостности
# qemu-img check mydisk.qcow2
Изменение размера
Увеличить до 30G
# qemu-img resize mydisk.qcow2 30G
# Уменьшить (осторожно! требует проверки ФС внутри)
qemu-img resize mydisk.qcow2 15G
Важно: после изменения размера нужно расширить файловую систему внутри гостевой ОС (например,
resize2fsдля ext4).
Работа со снапшотами
Создать снапшот
# qemu-img snapshot -c my_snapshot mydisk.qcow2
Список снапшотов
# qemu-img snapshot -l mydisk.qcow2
Вернуться к снапшоту
# qemu-img snapshot -a my_snapshot mydisk.qcow2
Удалить снапшот
# qemu-img snapshot -d my_snapshot mydisk.qcow2
Монтирование образа (на хосте)
Для доступа к файлам внутри qcow2:
Загрузить модуль nbd
# modprobe nbd max_part=8
Подключить образ как NBD-устройство
# qemu-nbd --connect=/dev/nbd0 mydisk.qcow2
Монтировать раздел (например, /dev/nbd0p1)
# mount /dev/nbd0p1 /mnt
После работы — отмонтировать и отключить
# umount /mnt
# qemu-nbd --disconnect /dev/nbd0
Типичные ошибки и решения
- «Image is corrupted»: попробуйте
qemu-img checkи восстановите из бэкапа. - «Failed to get „write“ lock»: убедитесь, что образ не используется другой виртуальной машиной.
- «No such file or directory» при монтировании: проверьте наличие модуля
nbdи правильность пути.
Инструменты
- qemu-img — основной инструмент для управления образами.
- qemu-nbd — для монтирования образов как блочных устройств.
- Virt-manager/Virsh — графические/командные интерфейсы для управления ВМ (автоматически работают с qcow2).
Пример копирования файлов дисков виртуальных машин со сжатием
Использовалась команда:
# qemu-img convert -O qcow2 -c ./srv-rain-redos-01.qcow2 /data-vol/images/srv-rain-redos-01.qcow2
Файлы дисков ВМ в формате qcow2 которые «проработали» месяц.
# du -hs ./*
17G ./srv-rain-redos-01.qcow2
5.6G ./srv-rain-redos-02.qcow2
4.4G ./srv-rain-redos-03.qcow2
7.2G ./srv-rain-win-01.qcow2
13G ./ws-rain-win-01.qcow2
Эти же файлы после копирования с сжатием данных.
# du -hs ./*
7.2G ./srv-rain-redos-01.qcow2
2.5G ./srv-rain-redos-02.qcow2
1.9G ./srv-rain-redos-03.qcow2
3.1G ./srv-rain-win-01.qcow2
6.6G ./ws-rain-win-01.qcow2




