CoreSystem/Virtualization

Материал из ALT Linux Wiki

Sisyphus Core — виртуализация

Список имеющихся пакетов

mkve

Создание, удаление и управление виртуальными машинами

Пакет содержит профили серверов и утилиту mkve, предназначенную для создания виртуальных машин на их основе. В данный момент каждый профиль (набор пакетов и хуков для каждого гипервизора) сильно зависит от пакета с аналогичным ve- именем. К примеру, ftp-server зависит от пакета ve-ftp-server. Образ виртуальной машины собирается на основе репозиториев, настроенных на сборочной машине.

Машины создаются при помощи libvirt, так что, теоретически, доступны все средства управления, предоставляемые libvirt’ом. (Практически же, их нужно реализовывать в mkve на Python, пользуюясь libvirt'овским API.)

Для создания tarball'ов с заданным набором пакетов используется утилита mkve-cache(1). Она создает hasher'овский chroot, устанавливает в него необходимые пакеты, копирует в него необходимые файлы, запускает хуки и команды. После (или вместо) этого она может затарить указанный chroot (это может быть произвольный hasher'овский chroot). Предположительно, скоро эта утилита будет переименована в hsh-<что-то> и переедет в hasher(7).

В данный момент mkve поддерживает работу с OpenVZ и QEMU. Пользователю позволяется создавать, запускать, останавливать и удалять виртуальные машины.

Каждой виртуальной машине присваивается уникальный (в пределах hardware node) ID. Для того чтобы удовлетворить соглашениям, принятым в OpenVZ, ID выдаются начиная со 100. К бриджу mkvebr0 добавляется виртуальная сеть mkve-network (192.0.2.1/24). Виртуальная машина с ID=X имеет в этой сети адрес 192.0.2.X.

Формат шаблона

$ cd <template> && find .
./version                    # версия шаблона
./packages/$hypervisor1      # файл со списком пакетов, устанавливающихся в bundle
                             # при использовании гипервизора $hypervisor1
./packages/$hypervisor2      # аналогично, для гипервизора $hypervisor2
...
./hooks-lists/$hypervisor1   # файл со списком хуков для гипервизора $hypervisor1
./hooks-lists/$hypervisor2   # аналогично, для гипервизора $hypervisor2
...
./conf/$hypervisor1/         # директория, содержащая дополнительные файлы для упаковки
                             # в bundle для гипервизора $hypervisor1
./conf/$hypervisor2/         # аналогично, для гипервизора $hypervisor2

Пример шаблона для openvz

Пример шаблона для qemu

alterator-mkve

Управление виртуальными машинами средствами alterator и mkve

Кроме web-морды для mkve этот модуль предоставляет дополнительные возможности для управления машинами.

Специальная часть для OpenVZ является "полупрямым" потомком alterator-ovz. Однако, сейчас это работает не корректно: из-за смешения netif_add и ipadd.


Планы

  • предварительное тестирование
  • подготовка готовых профилей
  • mkve-cache будет переименован и уедет в пакет hasher
  • поддержка kvm
  • поддержка xen (но, пожалуй, не раньше, чем у нас появится xen)
  • Локализация и документация alterator-mkve (help’ы к альтератору)


Bugs

mkve

  • заведомо падает сборка:
    • qemu::asterisk
    • qemu::caching-nameserv
    • qemu::kerberos-serverer
    • qemu::list-server
    • qemu::ntp-server
    • qemu::proxy-server
    • qemu::ftp-server
    • qemu::imap-server
    • qemu::smtp-server
  • Неправильно убивается /var/lock/mkve/
  • Проверять наличие vzctl, и если нет, то не запускать её при проверке существования ovz-шных машин
  • В bugzilla предостаточно багов, относящихся к старому alterator-ovz. С большой долей вероятности, они еще актуальны.