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 в образе, правда не понял для чего он нужен.