Заявка в АРК Технолоджис
(812)974.06.35
О компании archive.arctech.ru

Linux, libvirt: tiny provisioning. Экономим место под виртуальные образы.

Linux, libvirt: tiny provisioning. Экономим место под виртуальные образы.

libvirt отлично поддерживает "tiny provisioning" виртуальных машин (VM).

Т.е. можно приготовить "образ-корень"(backing-file по терминологии qemu), из которого "вырастить" группу схожих VM-клонов.
Например, готовятся образы debian-ов и fedora разных версий для будущих серверов. "Начиненные" привычными для работы приложениями, конфигурационными файлами и т.п.
Далее на базе "образа-корня" создаем линейку рабочих VM. На образах, которые хранят ТОЛЬКО отличия этих VM от базового.
В результате экономится много времени на создании рабочих серверов, их физическом копировании. Дополнительно сберегается немало файлового пространства.
Использование snapshot-ов позволяет сэкономить время и силы на восстановлении/откатах рабочих серверов.
Snapshot-ы позволяют также фиксировать удачные/типовые конфигурации. И превращать их в новые образы-корни.
Механизмы управления для различных файловых систем отличаются.
В данной заметке рассмотрим приемы работы с образами VM на ext3, ext4.
Подчеркнем, что образы VM должны быть в формате QCOW2. Чтобы использовать все возможности libvirt по обслуживанию, клонированию и восстановлению VM. 

Создаем привычным образом "образ-корень" - через virt-install или virt-manager.
Пусть образ для этого VM называется base.qcow2, a domain - domain_base.
После установки ставим пакеты, копируем заготовки конфигурационных файлов и скриптов, делаем upgrade системы до текущего состояния.
Готовим образ для VM-клона:
qemu-img create -b base.qcow2 -f qcow2 clone1.qcow2
Обратите внимание на физический размер созданного clone1.qcow2 :).
Далее с помощью, например, virt-manager поднимаем новую VM (clone1), использовав режим создания VM из образа.
Настраиваем полученный образ, доставляем пакеты, требуемые для выполняемой сервером роли. Например - сервера LAMP.
Зафиксируйте результат:
qemu-img snapshot -c clone1_YYYYMMDDHHMM clone1.qcow2
Проверьте:
qemu-img snapshot -l clone1.qcow2
После отладки и настройки сервера еще раз создаем snapshot.
Если нужно поднять копию отлаженного и настроенного сервера на другом хосте/датацентре:
qemu-img create -f qcow2 -o size=<size of base.img> base_new.qcow2
virt-resize base.qcow2 base_new.qcow2
cp clone1.qcow2 clone1_clone.qcow2
qemu-img rebase -b base_new.qcow2 clone1_clone.qcow2
qemu-img commit clone1_clone.qcow2.

Копируйте образ на другой хост/датацентр:
scp -4 base_new.qcow2 ....
Работа с образами VM на zfs будет существенно отличаться. Этому мы посвятим отдельную заметку.
 

Вернуться в список статей