Участник:Korotyshev/Подготовка образов для OpenNebula

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

OpenNebula хоть и позволяет использовать ВМ с полной инсталляцией через livecd на каждом инстансе, однако всё же рассчитана на разворачивание уже установленной ОС, которая в зависимости от настроек будет загружать публичные ключи SSH, настраивать пароли локальных учетных записей, а также выполнять пользовательские скрипты и выставлять IP-адреса. Всё это возможно благодаря службе контекстуализации, которая встраивается в систему при создания образа. Подготовить образ можно двумя способами:

  1. Загрузить готовый cloud-образ и настроить под свои нужды;
    Примечание: Для OpenNebula выпускаются голые образы Альт с уже встроенной службой opennebula-context, а также с cloud-init (альтернативный инструмент инициализации системы, подробнее на отдельной странице).
  2. Создать голый образ диска, установить систему с livecd вместе с желаемыми пакетами, а затем подготовить его для OpenNebula;
    • (Вариант для опытных пользователей) Cобрать образ вручную на базе rootfs - базовой файловой системы (в комплекте с ней не идет ядро/initrd - их нужно получать отдельно), распространяется в виде архивов (Альт поставляется в нескольких вариантах в .tar.xz) либо генерируется самостоятельно через pacstrap/debootstrap/hasher/distrobuilder;
Внимание! Даже если формат образа поддерживается QEMU, это не означает, что его можно добавить в хранилище OpenNebula. Поддерживаются форматы RAW, QCOW2 и VMDK. Если образ не поддерживается (например .vhdx), необходимо выполнить конвертацию.

Для создания образа будут использоваться qemu-kvm и qemu-img (пакеты qemu-img qemu-kvm qemu-ui-gtk qemu-device-display-virtio-gpu)

Кастомизация готового образа

Примечание: Все действия будут проводиться в Live-окружении Alt Regular Rescue


  1. Загружаем облачный образ для opennebula
    $ wget http://ftp.basealt.ru/pub/distributions/ALTLinux/images/Sisyphus/cloud/x86_64/alt-sisyphus-opennebula-x86_64.qcow2
    
  2. Увеличиваем максимальный размер диска на 1G
    $ qemu-img resize alt-sisyphus-opennebula-x86_64.qcow2 +1G
    
  3. Запускаем qemu/kvm с нужными параметрами
    $ qemu-system-x86_64 -accel kvm -machine q35 -m 3072M -drive format=qcow2,file=./alt-sisyphus-opennebula-x86_64.qcow2 -cdrom regular-rescue-latest-x86_64.iso -vga virtio -boot d
    
  4. Расширяем раздел
    # parted /dev/sda resizepart 1 100%
    
  5. Расширяем ext4 на увеличенном разделе
    # resize2fs /dev/sda1
    
  6. Монтируем раздел вместе с proc и dev
    # mount /dev/sda1 /mnt
    # mount --bind /proc /mnt/proc
    # mount --bind /dev /mnt/dev
    # mount --bind /etc/resolv.conf /mnt/etc/resolv.conf
    
  7. Делаем chroot до точки монтирования
    # chroot /mnt /bin/sh
    
Примечание: Если необходимо подключение к сети внутри окружения, перед входом в chroot необходима настройка интерфейса.


На данном этапе доступна консоль, в которой можно сделать нужные изменения, например:

Обновить систему, установить утилиты nano,tmux

# apt-get update && apt-get -y install nano tmux && apt-get clean

Установка системы с нуля

Установка службы контекстуализации

Инструкция по установке для большинства систем доступна в документации к OpenNebula

Примечание: Для ОС Альт необходимый пакет присутствует в официальном репозитории opennebula-context


Графическое окружение рабочего стола

Примечание: При установке минимального графического окружения (напр. xorg-server вместе с оконным менеджером openbox) потребуется установка device-dependent X (DDX) драйвера. Так как OpenNebula по умолчанию использует Cirrus Logic, необходим xorg-drv-cirrus


Окончание редактирования образа

Выходим из командной оболочки, выполняем размонтирование и завершаем работу

# exit
# umount -R /mnt
# poweroff

Уменьшение размера образа

Образы QCOW2 поддерживают компрессию. Это сильно уменьшит размер, однако производительность I/O будет снижена:

$ qemu-img convert -O qcow2 -c image1.qcow2 image1-compressed.qcow2

Если используется динамический диск thin-provision, возможно уменьшить его размер за счёт неиспользуемого пространства без компрессии. Для этого выполняем следующую команду (утилита входит в состав guestfs-tools):

$ virt-sparsify image1.qcow2 image1-discard.qcow2

Вместе с компрессией (только QCOW2):

$ virt-sparsify --compress image1.qcow2 image1-discard-compressed.qcow2