Linux в связке с qemu является отличной платформой для виртуализации, в том числе Windows-систем. Ключевой особенностью виртуализации в случае "инородных" систем является использование под эту систему файла-образа или отдельного блочного устройства. И то и другое обычно занимает достаточно много места. Попробуем минимизировать используемое место в этом случае.
Среди поддерживаемых qemu форматов образов есть как обычные бинарные образы (img), так и сжатые и несжатые qcow/qcow2. Последний формат в сжатом варианте показывает очень хорошие результаты по использованию места: его образы занимают мало места и при этом размер "внутреннего" жесткого диска в виртуальной системе может быть очень большим. Использоавать этот формат можно изначально, при создании виртуальной машины с помощью qemu-img, или конвертацией образа другого формата в qcow2
qemu-img convert -O qcow2 -c win10.img win10.qcow2
Сжатие в формате qcow2 используется в режиме "только для чтения", т.е. если что-то из образа переписывается, то перезапись происходит уже в несжатом формате. Получается, что сжатой будет статичная часть системы и данных в образе, которые в зависимости от задачи вируталки могут занимать основную часть данных. Для таких машин это формат будет наиболее подходящим.
Руководство qemu-img также предупреждает, что при использовании сжатия несколько уменьшается производительность. Однако, субъективно разницы между несжатым и сжатым форматом мне заметить не удалось.
При конвертации в qcow2 и сжатии следует заранее позаботиться о "чистоте" образа: занулить всё неиспользуемое на нём пространство. В Руководстве Proxmox подробно описываются способы, которыми это можно сделать. Наиболее короткий — очистить диск с помощью майкросовтовской утилиты sdelete, например:
sdelete -z C:
В последней версии утилиты 2.0 есть баг — она зависает на 100%. В этом случае имеет смысл использовать более старую версию 1.6. Есть также вариант использовать графическую Eraser, но это обычно более длинный путь.
В ходе использования образ понемного увеличивается в размере. После длительного использования образ можно сократить в размере тем же самым способом: занулив свободное места и переконвертацией его в qemu-img:
qemu-img convert -O qcow2 -c win9.qcow2_backup win9.qcow2
Естественно, как и перед очисткой образа, так и его пережатием крайне желательно сделать бэкап.
В результате перечисленных выше нехитрых операций можно уменьшить размер образов на порядок, т.е. в 10 раз и более.
Привет. Админ. Нужна твоя помощь. Помоги разобраться, про qcow2 образы.
Есть у меня сервер виртуальных машин, развернутый на Астре 1.7.4. Естественно стандартными способами через KVM есть несколько вирт-машин. Соответственно они в формате .qcow2. Вопрос — как сделать так, чтобы образ совсем не увеличивался в размерах? По руководству Федоры по виртуализации почитал, что можно параметр preallocation=full задать в опциях конвертирования образа, не помогло. Дрянь такая растет и растет. И нет бы, я задал 50 Гб виртуалку, на ней крутится сервер и там еще много свободного места, но манипуляции в гостевой ОС почему-то заставляют расти размер образа на диске. Как это победить? Я уже удалял снимки состояния системы — размер не уменьшается. Это какая-то головная боль.
В итоге я плюнул, и конвертировал .qcow2 в .vhd — там нельзя создавать снимки, но мне уже надоело, что образ просто гипертрофированно вырастает в размерах. Как это победить? В чем тогда польза "кьюков2" файлов, кроме возможности хранить снимки системы?
Может есть, какой-то хитрый параметр типа lazy чтобы он не писал в образ всякую свою дрянь, из-за которой образ начинает расти?
Спасибо
Пробовал и с параметром lazy_ref_counts в образе, правда не понял для чего он нужен.
Александр, здравствуйте.
Сейчас тоже с qcow2 образами работаю, уточните пожалуйста у вас образ увеличивается больше, чем размер диска в образе?
т.е. вот характеристики например образа:
image: /var/lib/libvirt/images/windows.qcow2
file format: qcow2
virtual size: 260 GiB (279172874240 bytes)
disk size: 24.9 GiB
cluster_size: 65536
Format specific information:
compat: 0.10
compression type: zlib
refcount bits: 16
Child node ‘/file’:
filename: /var/lib/libvirt/images/windows.qcow2
protocol type: file
file length: 24.9 GiB (26743406592 bytes)
disk size: 24.9 GiB
может ли вырасти размер file length: 24.9 GiB больше virtual size: 260 GiB?
Возможно пишу непонятно, если вам еще актуально, можете связаться со мной в телеграм @Ksandr_ZN