Работа с файлами дисков виртуальных машин qcow2 (копирование, сжатие, конвертация и т.п.)

Оцените статью

Так-как файлы виртуальных машин формата 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

Related Posts

План создания удостоверяющего центра (УЦ) PKI на базе Red OS

Так как в планах проекта числится развертывание удостоверяющего центра (УЦ) PKI на базе Red OS, то я заранее решил набросать план действий как будем это разорачивать и какие инструменты использовать.…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You Missed

Работа с файлами дисков виртуальных машин qcow2 (копирование, сжатие, конвертация и т.п.)

Работа с файлами дисков виртуальных машин qcow2 (копирование, сжатие, конвертация и т.п.)

План создания удостоверяющего центра (УЦ) PKI на базе Red OS

План создания удостоверяющего центра (УЦ) PKI на базе Red OS

Терминальный сервер в Linux на базе xrdp

Терминальный сервер в Linux на базе xrdp

Использование pg_probackup для резервного копирования баз данных Postgresql (локально)

Использование pg_probackup для резервного копирования баз данных Postgresql (локально)

Ввод рабочей станции РЕД ОС в IPA-домен

Ввод рабочей станции РЕД ОС в IPA-домен

WEB-интерфейс для удаленного администрирования Centos/РЕД ОС

WEB-интерфейс для удаленного администрирования Centos/РЕД ОС