Product SiteDocumentation Site

Глава 30. Работа с образами в OpenNebula

30.1. Создание образов дисков
30.1.1. Ручная установка
30.1.2. Использование магазинов приложений OpenNebula
OpenNebula позволяет пользователям создавать и управлять образами дисков и вспомогательных файлов, которые используются при развёртывании ВМ. Образы хранятся в хранилищах данных и могут совместно использоваться несколькими ВМ в зависимости от их типа и режима (постоянный/непостоянный).

Таблица 30.1. Типы образов

Тип
Описание
Хранилище
OS
Загрузочный диск с установленной операционной системой
Images Datastore
CDROM
ISO-образ (только для чтения). Можно подключить несколько образов, но загрузка возможна только с одного из них
Images Datastore
DATABLOCK
Блок данных (например, для размещения базы данных) или пустой диск для установки ОС
Images Datastore
KERNEL
Ядро Linux (vmlinuz)
Files & Kernels Datastore
RAMDISK
Образ initrd/initramfs
Files & Kernels Datastore
CONTEXT
Файл контекстуализации (для автоматической начальной настройки ВМ)
Files & Kernels Datastore

Примечание

Образы KERNEL и RAMDISK указываются в шаблоне ВМ через атрибуты OS[kernel=...] и OS[initrd=...], а не подключаются как отдельные диски.
Образы могут использоваться в двух режимах:
  • Постоянные (persistent) — изменения, внесённые в образ во время работы ВМ, сохраняются после её завершения. Такой образ может одновременно использоваться только одной ВМ.
  • Непостоянный (non-persistent) — изменения не сохраняются. При запуске ВМ создаётся временная копия образа, которая удаляется при остановке ВМ.
Образы в OpenNebula проходят через различные состояния, отражающие текущий этап их обработки.

Примечание

В выводе oneimage list отображается сокращённое имя STATE (например, rdy, disa).

Таблица 30.2. Состояния образов

Состояние
Краткий псевдоним
Описание
INIT
init
Состояние инициализации
READY (ГОТОВО)
rdy
Образ готов к использованию
USED (ИСПОЛЬЗУЕТСЯ), USED_PERS (ЗАНЯТ_ПОСТОЯННЫЙ)
used
Образ используется как минимум одной ВМ. Образ нельзя удалить или изменить
DISABLED (Отключен)
disa
Образ отключён владельцем. Новые ВМ не могут его использовать
LOCKED (ЗАБЛОКИРОВАН), LOCKED_USED, LOCKED_USED_PERS (ЗАБЛОКИРОВАН_ПОСТОЯННЫЙ)
lock
Образ копируется или создаётся. ВМ, использующие его, ожидают завершения операции
ERROR (Ошибка)
err
Операция завершилась неудачей (см. oneimage show для получения сообщения об ошибке)
CLONE (Клонирование)
clon
Образ клонируется
DELETE (Удаление)
dele
Образ удаляется из хранилища данных
Управление образами осуществляется с помощью:
  • командной строки (oneimage);
  • веб-интерфейса Sunstone.
OpenNebula-Sunstone. Вкладка Образы
Основные параметры команды oneimage:
  • --name <имя> — имя нового образа;
  • --datastore <имя|ID> — имя или идентификатор хранилища данных;
  • --description <описание> — описание образа (необязательно);
  • --type <тип> — тип образа: OS, CDROM, DATABLOCK, KERNEL, RAMDISK, CONTEXT;
  • --persistent — создание постоянного образа;
  • --prefix <префикс> — префикс устройства в гостевой ОС (hd, sd, vd);
  • --target <устройство> — целевое устройство подключения диска;
  • --path <путь/URL> — путь к файлу образа или URL-адрес;
  • --source <источник> — источник данных для использования (применяется для нефайловых образов);
  • --size <размер> — размер в МБ (используется для DATABLOCK или при изменении размера).

30.1. Создание образов дисков

При создании образов дисков для ВМ в OpenNebula доступны следующие подходы:

30.1.1. Ручная установка

При использовании гипервизора KVM возможно создание базовых образов операционных систем путём ручной установки ОС в ВМ, развёрнутой в OpenNebula. Этот метод обеспечивает максимальный контроль над процессом установки и конфигурацией системы.
Процесс ручного создания образа включает следующие шаги:
  • В хранилище образов необходимо загрузить установочный ISO-образ операционной системы и создать образ типа CDROM.
  • Диск, на который будет установлена операционная система, необходимо создать как образ типа DATABLOCK.
  • Необходимо создать шаблон ВМ с подключёнными:
    • установочным CDROM;
    • пустым диском типа DATABLOCK.
    После этого создать экземпляр ВМ и выполнить установку гостевой ОС.
  • После завершения установки и настройки операционной системы ВМ необходимо выключить. Постоянный диск с установленной ОС сохраняется в хранилище данных и может быть преобразован в образ типа OS для дальнейшего использования при массовом развёртывании ВМ.

30.1.1.1. Создание образа типа CDROM

Создание образа типа CDROM (установочный ISO-образ):
  1. Перейдите в раздел ХранилищеОбразы.
  2. На загруженной странице нажмите +Создать:
    Создание образа
  3. В открывшемся окне укажите:
    • Название;
    • ТипCD-ROM только для чтения;
    • Хранилище;
    • Расположение образаПуть/URL;
    • Путь на сервере OpenNebula или URL — путь к файлу ISO-образа.
    Создание образа типа CD-ROM
  4. Нажмите кнопку Создать.

Примечание

Если указывается путь на сервере управления, ISO-образ должен находиться в каталоге, доступном пользователю oneadmin.
Пример создания образа типа CDROM в командной строке:
$ oneimage create -d 1 --name "ALT Workstation ISO" \
    --path /var/tmp/alt-workstation-11.1-x86_64.iso --type CDROM
ID: 31
где -d 1 — хранилище данных по умолчанию (ID = 1).

30.1.1.2. Создание образа типа DATABLOCK

Создание пустого диска (DATABLOCK):
  1. В разделе ХранилищеОбразы нажмите +Создать:
    Создание образа
  2. В открывшемся окне укажите:
    • Название;
    • ТипБазовый блок данных хранилища;
    • Хранилище;
    • Этот образ является постояннымДа;
    • Расположение образаПустой образ диска;
    • Размер;
    • Форматqcow2.
    Создание образа типа DATABLOCK
  3. Нажмите кнопку Создать.
Пример создания пустого образа диска в командной строке:
$ oneimage create -d 1 --name "ALT Workstation" \
    --type DATABLOCK --size 45G --persistent --driver qcow2
ID: 33
где:
  • -d 1 — хранилище данных по умолчанию (ID = 1);
  • --size 45G — размер образа (45 ГБ);
  • --driver qcow2 — формат образа qcow2.

Примечание

Не задавайте слишком большой размер диска — его можно увеличить позднее при создании ВМ.

30.1.1.3. Создание шаблона ВМ

Шаблон определяет конфигурацию ВМ: количество CPU, объём памяти, диски, сетевые интерфейсы и другие параметры.
30.1.1.3.1. Создание шаблона в командной строке
Для создания шаблона в командной строке:
  1. Создайте файл template:
    NAME = "ALT Workstation"
    CPU = "1"
    MEMORY = "1024"
    MEMORY_UNIT_COST = "MB"
    HYPERVISOR = "kvm"
    
    DISK = [
      IMAGE = "ALT Workstation ISO",
      IMAGE_UNAME = "oneadmin"
    ]
    
    DISK = [
      DEV_PREFIX = "vd",
      IMAGE = "ALT Workstation",
      IMAGE_UNAME = "oneadmin"
    ]
    
    NIC = [
      NETWORK = "VirtNetwork",
      NETWORK_UNAME = "oneadmin",
      SECURITY_GROUPS = "0"
    ]
    
    INPUTS_ORDER = ""
    LOGO = "images/logos/alt.png"
    
    NIC_DEFAULT = [
      MODEL = "virtio" ]
    
    OS = [
      BOOT = "disk1,disk0"  # Сначала основной диск (disk1), затем CDROM (disk0)
    ]
    
    GRAPHICS = [
      LISTEN = "0.0.0.0",
      TYPE = "SPICE"
    ]
    
    CONTEXT = [
      NETWORK = "YES",
      SSH_PUBLIC_KEY = "$USER[SSH_PUBLIC_KEY]"
    ]
    
    SCHED_REQUIREMENTS = "ID=\"0\""
    
  2. Зарегистрируйте шаблон:
    $ onetemplate create template
    ID: 22
    
30.1.1.3.2. Создание шаблона в веб-интерфейсе Sunstone
Для создания шаблона ВМ:
  1. В левом меню выберите ШаблоныВМ.
  2. На загруженной странице нажмите +Создать:
    Создание шаблона ВМ
  3. На вкладке Общие укажите параметры CPU, объём памяти и гипервизор:
    Создание шаблона ВМ. Вкладка Общие
  4. На вкладке Хранилище:
    • добавьте ISO-образ как первый диск;
    • добавьте пустой DATABLOCK как второй диск и укажите для него шину Virtio.
    Создание шаблона ВМ. Вкладка Хранилище
  5. На вкладке Сеть укажите модель сетевого адаптера — Virtio и сеть, к которой будет подключена ВМ:
    Создание шаблона ВМ. Вкладка Сеть
  6. На вкладке ОС и ЦПУ укажите архитектуру устанавливаемой системы и задайте порядок загрузки — диск, затем CDROM:
    Создание шаблона ВМ. Вкладка ОС и ЦПУ

    Примечание

    При таком порядке загрузки, если диск пуст, загрузка произойдёт с CDROM. После установки операционной системы загрузка будет автоматически выполняться с диска.
  7. На вкладке Ввод/Вывод выберите тип графической консоли, например SPICE:
    Создание шаблона ВМ. Вкладка Ввод/Вывод
  8. На вкладке Контекст включите сетевую контекстуализацию и укажите SSH-ключ:
    Создание шаблона ВМ. Вкладка Контекст

    Примечание

    Если поле SSH-ключа оставить пустым, будет использована переменная $USER[SSH_PUBLIC_KEY].
  9. На вкладке Расписание при необходимости укажите кластер или конкретный узел, на котором должна быть размещена ВМ:
    Создание шаблона ВМ. Вкладка Расписание
  10. Нажмите кнопку Создать.

30.1.1.4. Создание ВМ

Создание ВМ в веб-интерфейсе Sunstone:
  1. В левом меню выберите ШаблоныВМ.
  2. Выберите нужный шаблон и нажмите Создать ВМ:
    Создание экземпляра ВМ из шаблона
  3. В открывшемся окне укажите имя ВМ и нажмите Создать ВМ:
    Создание экземпляра ВМ из шаблона
Создание ВМ из шаблона в командной строке:
$ onetemplate instantiate 9
VM ID: 5

30.1.1.5. Подключение к ВМ и установка ОС

Примечание

Процесс создания ВМ может занять несколько минут. Необходимо дождаться, пока её статус изменится на ЗАПУЩЕНО (RUNNING).
Подключение через Sunstone:
  1. Перейдите в раздел Экземпляры ВМВМ.
  2. Выберите ВМ и подключитесь к ней через SPICE:
    Подключение к ВМ
Для подключения через внешний клиент SPICE нужно указать:
spice://192.168.0.180:5905
где:
  • 192.168.0.180 — IP-адрес узла с ВМ;
  • 5 — идентификатор ВМ (номер порта равен 5900 + ID ВМ).
Выполните установку операционной системы в консоли ВМ:
Установка ОС

30.1.1.6. Настройка контекстуализации

Контекстуализация позволяет автоматически настраивать ВМ при запуске: задавать имя узла, сетевые параметры, SSH-ключи и другие настройки.
Пример настройки контекстуализации на установленной ОС «Альт»:
  1. Подключитесь к ВМ (через консоль или SSH).
  2. Установите пакет контекстуализации (opennebula-context):
    # apt-get update && apt-get install opennebula-context
    
  3. Настройте сеть через systemd-networkd:
    • установите пакет синхронизации времени (systemd-timesyncd):
      # apt-get install systemd-timesyncd
      
    • создайте файл /etc/systemd/network/lan.network для автоматической настройки всех интерфейсов по DHCP:
      [Match]
      Name = *
      
      [Network]
      DHCP = ipv4
      
    • отключите etcnet и NetworkManager, включите systemd-networkd и systemd-timesyncd:
      # systemctl disable network NetworkManager && systemctl enable systemd-networkd systemd-timesyncd
      
  4. Перезагрузите ВМ.
После перезагрузки ВМ получит IP-адрес из пула OpenNebula (через IPAM) и будет доступна по SSH с использованием ключа из профиля пользователя.

30.1.1.7. Создание образа типа ОС

После завершения установки и настройки системы ВМ необходимо выключить и удалить.
Для удаления ВМ в Sunstone в разделе Экземпляры ВМВМ выберите ВМ и нажмите кнопку Уничтожить:
Удаление ВМ
Удаление ВМ в командной строке:
$ onevm terminate 5

Примечание

Поскольку диск был постоянным (persistent), он останется в хранилище и сохранит все внесённые изменения.
Преобразуйте образ в тип OS и сделайте его непостоянным:
  • В Sunstone:
    1. В разделе ХранилищеОбразы ВМ выберите образ с установленной ОС.
    2. Измените тип блочного устройства с Блок данных на ОС.
    3. Установите состояние Не постоянный.
    Изменение типа блочного устройства
  • в командной строке:
    $ oneimage chtype 1 OS
    $ oneimage nonpersistent 1
    

Примечание

Это позволит использовать образ для массового развёртывания ВМ, при котором каждая ВМ получит собственную копию диска.
Образ готов к использованию. Теперь можно:
  • создавать новые ВМ на его основе;
  • обновлять и использовать существующие шаблоны ВМ.

30.1.2. Использование магазинов приложений OpenNebula

Магазины приложений (Marketplace) в OpenNebula предоставляют удобный способ интеграции облачной инфраструктуры с популярными поставщиками готовых образов и приложений.
Магазин приложений может быть:
  • публичным — доступным для всех установок OpenNebula (например, официальный OpenNebula Public);
  • частным — размещённым локально внутри организации и может использоваться:
    • в одной зоне OpenNebula;
    • во всех зонах федерации (если настроен общий доступ).
Магазин хранит приложения Marketplace (Marketplace Appliance) — готовые к развёртыванию пакеты, включающие:
  • один или несколько образов (дисков);
  • метаданные: шаблоны виртуальных машин, определения сервисов из нескольких ВМ (Multi-VM Services), скрипты контекстуализации и т. д.

Примечание

Для доступа к публичным магазинам (включая OpenNebula Public) требуется подключение к Интернету.

30.1.2.1. Управление магазинами

По умолчанию включён только официальный публичный магазин OpenNebula. Остальные магазины изначально отключены.
Чтобы включить магазин приложений, используется команда:
$ onemarket enable <ID_магазина>
Отключить магазин можно с помощью команды:
$ onemarket disable <ID_магазина>
Отключение магазина не удаляет уже импортированные в облако приложения. Однако новые приложения из этого магазина перестанут отображаться, и синхронизация будет остановлена.
Список магазинов можно можно посмотреть:
  • в веб-интерфейсе: ХранилищеМагазины приложений:
    Магазины приложений
  • в командной строке:
    $ onemarket list
      ID NAME                               SIZE AVAIL        APPS MAD     ZONE STAT
       1 Linux Containers                     0M -               0 linuxco    0 off
       0 OpenNebula Public                    0M -             116 one        0 on
    

30.1.2.2. OpenNebula Public

OpenNebula Public — это официальный каталог готовых к использованию виртуальных устройств и приложений.
Импорт приложения:
  1. В веб-интерфейсе перейдите: ХранилищеМагазины приложенийOpenNebula PublicПриложения:
    Магазин приложений OpenNebula Public
  2. Выберите нужное приложение и нажмите кнопку Импорт в хранилище:
    Информация о приложении в магазине приложений OpenNebula Public
  3. В открывшемся окне:
    • укажите имя образа и имя шаблона;
    • выберите целевое хранилище данных;
    • нажмите кнопку Загрузить:
    Импорт приложения из магазина приложений OpenNebula
Каждое приложение содержит как минимум один образ и шаблон виртуальной машины.
Настройка образов, загруженных из магазина приложений:
  1. Дождитесь, пока образ перейдёт в состояние ГОТОВО.
  2. Измените тип образа на Постоянный (если планируете вносить изменения).
  3. При необходимости отредактируйте шаблон (сеть, CPU, память и т. д.).
  4. Создайте ВМ на основе шаблона.
  5. Подключитесь к ВМ и выполните дополнительную настройку (установка ПО, обновление и т. д.).
  6. После завершения настройки:
    • остановите и удалите ВМ;
    • измените тип образа обратно на Не постоянный, чтобы сэкономить место и обеспечить «чистое» состояние для будущих развёртываний.
Готовый образ можно использовать повторно или создавать на его основе новые шаблоны.

30.1.2.3. Linux Containers

Магазин Linux Containers предоставляет доступ к популярным образам контейнеров LXC (ALT, Ubuntu, CentOS и др.), адаптированным для работы в OpenNebula.

Примечание

Для импорта образа требуется:
  • около 6 ГБ свободного места в хранилище данных (плюс размер самого образа);
  • настроенная поддержка LXC на узлах.

Примечание

В процессе импорта в файловой системе контейнера создаётся файл /var/log/chroot.log содержащий журнал операций установки. В случае ошибок он может помочь в диагностике.
Импорт контейнера:
  1. В веб-интерфейсе перейдите: ХранилищеМагазины приложенийLinux ContainersПриложения:
    Магазин приложений Linux Containers
  2. Выберите нужный LXC-образ и нажмите кнопку Импорт в хранилище:
    Информация о LXC-образе в магазине приложений Linux Containers
  3. В открывшемся окне:
    • укажите имя образа и шаблона;
    • выберите целевое хранилище данных;
    • нажмите кнопку Загрузить:
    Импорт LXC-образа из магазина приложений Linux Containers
Каждый контейнер включает образ LXC и шаблон виртуальной машины, настроенный для запуска в режиме контейнера.
Развёртывание контейнера из шаблона выполняется точно так же, как и обычной ВМ:
  • через интерфейс Sunstone:
    Разворачивание контейнера из шаблона
  • с помощью команды:
    $ onevm create <шаблон>