Подробный гайд: QCOW2 (QEMU Copy-On-Write version 2) в Astra Linux 1.8

Практический гайд по формату QCOW2 в Astra Linux 1.8: создание дисков KVM, управление снапшотами, сжатие, оптимизация VirtIO и безопасность Parsec.

2026.09.23                  


Подробный гайд: QCOW2 (QEMU Copy-On-Write version 2) в Astra Linux 1.8Подробный гайд: QCOW2 (QEMU Copy-On-Write version 2) в Astra Linux 1.8 QCOW2 (QEMU Copy-On-Write version 2) — это нативный и наиболее функциональный формат виртуальных дисков для стека виртуализации KVM/QEMU, который используется в Astra Linux. В отличие от «сырого» (raw) формата, QCOW2 поддерживает тонкое выделение места (thin provisioning), снапшоты, сжатие и шифрование.


1. Подготовка среды в Astra Linux 1.8

В Astra Linux 1.8 стек виртуализации базируется на стандартных решениях Debian (libvirt, QEMU/KVM).



Для начала работы установите необходимые утилиты:

sudo apt update
sudo apt install qemu-utils qemu-kvm libvirt-daemon-system libvirt-clients virtinst virt-manager bridge-utils

Запуск и автозагрузка службы libvirt:

sudo systemctl enable --now libvirtd

Важно для Astra Linux Special Edition (Смоленск):

В среде с включенным МРД (Мандатным разграничением доступа) и Parsec процессы QEMU и libvirtd работают в строго заданных контекстах безопасности. Настоятельно рекомендуется хранить все файлы .qcow2 в стандартном пуле libvirt (/var/lib/libvirt/images/), чтобы избежать проблем с правами доступа (Permission Denied) и конфликтов с системой защиты.


2. Основные операции через qemu-img (CLI)

Утилита qemu-img — это главный инструмент для низкоуровневого управления файлами QCOW2.

Создание диска

# Создание пустого диска на 50 ГБ (тонкое выделение)
qemu-img create -f qcow2 /var/lib/libvirt/images/my_disk.qcow2 50G

# Создание диска с предварительным выделением метаданных (ускоряет работу и снижает фрагментацию)
qemu-img create -f qcow2 -o preallocation=metadata /var/lib/libvirt/images/my_disk.qcow2 50G

Получение информации о диске

qemu-img info /var/lib/libvirt/images/my_disk.qcow2

Обратите внимание на параметры virtual size (заявленный размер) и disk size (фактически занятое место на хосте).


Изменение размера (Resize)

Увеличить диск можно «на летую», но файловую систему внутри гостевой ОС нужно будет расширить отдельно (через growpart/resize2fs в Linux или Disk Management в Windows).

# Увеличить на 10 ГБ
qemu-img resize /var/lib/libvirt/images/my_disk.qcow2 +10G

Уменьшать размер QCOW2 штатными средствами нельзя — это приведет к повреждению данных.


Конвертация форматов

Если вам нужно перенести ВМ из VMware (VMDK), VirtualBox (VDI) или гипервизора с RAW дисками:

# Из RAW в QCOW2
qemu-img convert -f raw -O qcow2 source.img target.qcow2

# Из VMDK в QCOW2
qemu-img convert -f vmdk -O qcow2 vmware_disk.vmdk astra_disk.qcow2

Проверка и лечение диска

Если ВМ аварийно завершила работу и диск мог повредиться:

# Проверка целостности
qemu-img check /var/lib/libvirt/images/my_disk.qcow2

# Автоматическое исправление ошибок (Leaked clusters)
qemu-img check -r all /var/lib/libvirt/images/my_disk.qcow2

3. Снапшоты (Снимки состояния)

QCOW2 поддерживает внутренние снапшоты (состояние диска сохраняется внутри самого файла).


Управление через qemu-img (Вне Libvirt)

Внимание: Делайте это только если ВМ выключена!

# Создать снапшот "clean_install"
qemu-img snapshot -c clean_install /var/lib/libvirt/images/my_disk.qcow2

# Посмотреть список снапшотов
qemu-img snapshot -l /var/lib/libvirt/images/my_disk.qcow2

# Откатиться к снапшоту
qemu-img snapshot -a clean_install /var/lib/libvirt/images/my_disk.qcow2

# Удалить снапшот (освобождает место)
qemu-img snapshot -d clean_install /var/lib/libvirt/images/my_disk.qcow2

Управление через virsh (Рекомендуемый способ для Libvirt)

Libvirt умеет делать консистентные снапшоты как диска, так и оперативной памяти (RAM).

# Создать снапшот работающей ВМ
virsh snapshot-create-as --domain my_vm_name --name "before_update" --description "Перед обновлением Astra"

# Список снапшотов ВМ
virsh snapshot-list my_vm_name

# Откат к снапшоту
virsh snapshot-revert my_vm_name "before_update"

4. Оптимизация QCOW2 в Astra Linux

Чтобы получить максимальную производительность от QCOW2, при создании ВМ (через virt-manager или virt-install) используйте следующие настройки:

1. Дисковый контроллер:



Всегда выбирайте VirtIO (virtio-blk или virtio-scsi). Для Windows ВМ обязательно установите драйверы virtio-win (viostor).

2. Кэширование (Cache mode):

  • writeback — максимальная производительность (безопасно, если у хоста есть ИБП).
  • none (Direct I/O) — обход кэша ОС хоста, рекомендуется для СХД и NVMe.

3. Discard (TRIM):

Чтобы файл QCOW2 не разрастался навсегда при удалении файлов внутри ВМ, включите поддержку TRIM:

* В XML-конфиге ВМ (virsh edit my_vm_name):

     <disk type='file' device='disk'>
       <driver name='qemu' type='qcow2' discard='unmap'/>
       ...
     </disk>
  • Внутри Linux-гостя добавьте discard в /etc/fstab: mount -o discard ....

Сжатие диска (Compact)

Со временем файл QCOW2 может занимать больше места, чем данные внутри него (из-за удаленных файлов). Чтобы сжать его:

1. Внутри гостевой ОС заполните свободное место нулями:

   # В Linux
   dd if=/dev/zero of=/zerofile bs=1M; rm /zerofile
   # В Windows используйте утилиту SDelete: sdelete -z C:

2. Сконвертируйте диск сам в себя (создаст новый сжатый файл):

   qemu-img convert -O qcow2 /var/lib/libvirt/images/disk.qcow2 /var/lib/libvirt/images/disk_compacted.qcow2

5. Специфика Astra Linux: Безопасность и права (Смоленск)

Если вы работаете в замкнутой среде Astra Linux Special Edition (Смоленск), вы можете столкнуться с тем, что QEMU не может прочитать .qcow2 файл, созданный в домашней папке пользователя.

1. Замыкание прав (Parsec / MAC):

Файлы в /var/lib/libvirt/images/ автоматически получают нужные мандатные метки.

Если вы создаете диск в другой директории (например, на подключенном LUN или в /home/user/vms/), вам нужно вручную установить контекст:

   pdpl-file 0:0:-1 /path/to/custom/disk.qcow2  # Пример выставления нулевого уровня секретности

Но гораздо надежнее импортировать папку как Storage Pool в Libvirt.

2. Интеграция с ALD (Astra Linux Directory):

Если хост виртуализации введен в домен ALD, убедитесь, что доменные пользователи, имеющие право управлять ВМ, состоят в локальной группе libvirt и kvm на хосте:

   sudo usermod -aG libvirt,kvm username@ald.domain

3. AppArmor / Parsec профили:

Если при запуске ВМ через virt-manager возникает ошибка "Permission denied" или "AppArmor denied", а диск лежит не в дефолтном пуле, проще всего в конфигурации ВМ (virsh edit vm_name) отключить строгую изоляцию для конкретного диска (только для тестовых сред!):

   <seclabel type='none' model='none'/>

6. Резервное копирование QCOW2

Поскольку QCOW2 — это обычный файл, его можно бэкапить.

* Способ 1 (Холодный бэкап):

Выключить ВМ -> Скопировать .qcow2 файл через rsync или cp.

* Способ 2 (Горячий бэкап через снапшоты):

  1. Создать внешний снапшот через virsh (переводит оригинальный файл в режим Read-Only).
  2. Скопировать основной (теперь замороженный) файл QCOW2.
  3. Удалить снапшот (Libvirt объединит изменения обратно в основной файл).

* Способ 3 (Инструменты Astra):

Используйте встроенные средства резервного копирования Astra Linux (если развернут модуль бэкапов) или virtnbdbackup, который умеет делать инкрементальные бэкапы QCOW2 через libvirt API без остановки ВМ.


Шпаргалка по частым ошибкам

  • Could not open '/var/.../disk.qcow2': Permission denied -> Проверьте владельца (chown libvirt-qemu:kvm) и мандатные метки (Parsec) в Astra Linux Смоленск.
  • qcow2 Image is corrupt -> ВМ была обесточена. Используйте qemu-img check -r all disk.qcow2.
  • No space left on device при работающей ВМ -> Закончилось место на разделе хоста (df -h). Так как QCOW2 тонкий, он растёт динамически. Увеличьте раздел LVM/Btrfs на хосте.



Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта