CoreSystem/Virtualization: различия между версиями
Строка 3: | Строка 3: | ||
__TOC__ | __TOC__ | ||
=== | === Пакеты ve-* === | ||
Эти пакеты предназначены для создания контейнеров. Они не содержат ни одного | |||
файла, но вытягивают указанные в них пакеты по зависимостям. Имеется два типа | |||
таких пакетов. | |||
Первый тип составляют пакеты {{pkg|ve-<name>}}. Они определяют множество пакетов, | |||
необходимое для создания контейнера для "сервиса" {{pkg|<name>}}. Например, | |||
пакет {{pkg|ve-ftp-server}} вытягивает множество пакетов, необходимое для поднятия | |||
ftp-сервера на "работающей" виртуальной машине. | |||
Второй тип составляют пакеты {{pkg|ve-hypervisor-<hypervisor>}}. Они определяют | |||
дополнительное множество пакетов, необходимое для запуска сервиса под конкретным | |||
типом виртуализации. Этот пакет может оказаться и "пустым", если дополнительных | |||
пакетов не требуется (как, например, в случае OpenVZ). | |||
Таким образом, множество пакетов, требуемых для поднятия сервиса {{term|<service>}} | |||
на виртуальной машине под управлением гипервизора {{term|<hypervisor>}} определяется | |||
"суммой" {{pkg|ve-<service>}} + {{pkg|ve-hypervisor-<hypervisor>}}. | |||
=== Пакет mkve === | === Пакет mkve === |
Версия от 19:09, 20 февраля 2009
Sisyphus Core — виртуализация
Пакеты ve-*
Эти пакеты предназначены для создания контейнеров. Они не содержат ни одного файла, но вытягивают указанные в них пакеты по зависимостям. Имеется два типа таких пакетов.
Первый тип составляют пакеты ve-<name>. Они определяют множество пакетов, необходимое для создания контейнера для "сервиса" <name>. Например, пакет ve-ftp-server вытягивает множество пакетов, необходимое для поднятия ftp-сервера на "работающей" виртуальной машине.
Второй тип составляют пакеты ve-hypervisor-<hypervisor>. Они определяют дополнительное множество пакетов, необходимое для запуска сервиса под конкретным типом виртуализации. Этот пакет может оказаться и "пустым", если дополнительных пакетов не требуется (как, например, в случае OpenVZ).
Таким образом, множество пакетов, требуемых для поднятия сервиса <service> на виртуальной машине под управлением гипервизора <hypervisor> определяется "суммой" ve-<service> + ve-hypervisor-<hypervisor>.
Пакет mkve
Создание, удаление и управление виртуальными машинами. В данный момент mkve поддерживает работу с OpenVZ и QEMU.
Создание и удаление виртуальной машины
Для создания и удаления виртуальных машин используется утилита mkve. Эта утилита написана с использованием библиотеки libvirt.
Виртуальные машины создаются на основе так называемых bundles, tarball'ов специального вида (см. описание mkve-bundle) следующим образом:
# mkve create <machine> --bundle <bundle> [дополнительные опции]
Здесь <machine> - это имя машины, а <bundle> - это bundle, созданный с помощью mkve-bundle.
Каждой виртуальной машине присваивается уникальный (в пределах hardware node) ID. Для того чтобы удовлетворить соглашениям, принятым в OpenVZ, ID выдаются начиная со 100.
Для того чтобы удалить виртуальную машину достаточно сказать
# mkve destroy <machine>
Полное описание возможностей программы mkve см. в mkve(1).
Утилита mkve-bundle
/* Для создания tarball'ов с заданным набором пакетов используется утилита mkve-cache(1). Она создает hasher'овский chroot, устанавливает в него необходимые пакеты, копирует в него необходимые файлы, запускает хуки и команды. После (или вместо) этого она может затарить указанный chroot (это может быть произвольный hasher'овский chroot). Предположительно, скоро эта утилита будет переименована в hsh-<что-то> и переедет в hasher(7). */
Формат шаблона
Вот полный список файлов для гипервизора hypervisor:
./version # версия шаблона ./packages/$hypervisor # файл со списком пакетов, устанавливающихся в bundle # при использовании гипервизора $hypervisor ./hooks-lists/$hypervisor # [необ.] файл со списком хуков для гипервизора $hypervisor ./conf/$hypervisor/ # [необ.] директория, содержащая дополнительные файлы для упаковки # в bundle для гипервизора $hypervisor
Таким образом, все, кроме версии зависит от типа виртуализации и единственным обязательным списком является список пакетов.
Утилита mkve-cache (aka hsh-?)
Для тех, кто привык не надеяться ни на кого, кроме себя и hasher'а, имеется утилита mkve-cache. Эта утилита позволяет создать и упаковать hasher'овский chroot с нужным набором пакетов. Кроме этого, при создании chroot можно запускать хуки, команды и копировать файлы из host'а в chroot. Подробное описание см. в mkve(1).
Пример 1.
$ mkve-cache --out <file> <список пакетов>
установит в дефолтный hasher'овский chroot пакеты <список пакетов>, и после этого запакует содержимое chroot'а в файл <file>.
Пример 2.
$ mkve-cache --out <file> --command 'chkconfig sshd on' <список пакетов>
установит в дефолтный hasher'овский chroot пакеты <список пакетов>, запустит в chroot'е команду
chkconfig sshd on
и после этого запакует содержимое chroot'а в файл <file>.
Пример 3.
$ mkve-cache -z --tarify-only <путь к hasher'овскому chroot'у>
просто запакует указанный chroot в файл $TMPDIR/output.tar.gz.
Пакет alterator-mkve
Управление виртуальными машинами средствами alterator и mkve
Кроме web-морды для mkve этот модуль предоставляет дополнительные возможности для управления машинами.
OpenVZ
Специальная часть для OpenVZ является "полупрямым" потомком alterator-ovz.
Планы
- шаблон test
- mkve-cache будет переименован и уедет в пакет hasher
- Локализация и документация alterator-mkve (help’ы к альтератору)
Bugs
mkve
- Проверять наличие vzctl, и если нет, то не запускать её при проверке существования ovz-шных машин
- В bugzilla предостаточно багов, относящихся к старому alterator-ovz. С большой долей вероятности, они еще актуальны.