Возможность работы со связанными клонами доступна только в версии VMmanager Infrastructure.

Связанные клоны (linked clones) — это виртуальные машины (ВМ), создаваемые из одного пользовательского образа и использующие один общий виртуальный диск. Использование связанных клонов эффективно при создании большого числа однотипных ВМ с небольшим количеством изменений в файловой системе. Например, при создании виртуальных рабочих мест.

При создании связанных клонов используется технология backing chain ПО libvirt. Связанный клон состоит из основного и базового дисков. На основной диск записываются все изменения файлового пространства ВМ. Базовый диск — это образ в формате Qcow2, используется только для чтения. Один базовый диск могут использовать несколько связанных клонов.

Схема работы связанных клонов

Особенности связанных клонов


Преимущества

Преимуществами связанных клонов являются:

  • экономия дискового пространства;
  • высокая скорость создания;
  • высокая скорость групповой миграции;
  • высокая эффективность при использовании оверселлинга диска.

Преимущества достигаются за счёт того, что несколько ВМ используют один базовый диск и основной диск содержит только отличия от базового.

Недостатки

В связи с тем, что базовый диск клона используется параллельно несколькими ВМ, производительность связанных клонов ниже, чем у обычных ВМ.

Ограничения 

Создание связанных клонов доступно только в кластерах с KVM-виртуализацией, использующих файловое хранилище или NAS.

Работа связанного клона зависит от наличия исходного образа. Исходный образ не может быть удалён, если в платформе существуют клоны, созданные на его основе. Если образ находится в хранилище NAS, то связанные клоны для этого образа можно создать только в том же хранилище.

У связанного клона не поддерживается:

  • изменение размера основного диска;
  • смена основного диска;
  • миграция основного диска;
  • изменение порядка загрузки дисков;
  • клонирование;
  • создание образа;
  • переустановка ОС;
  • подключение и отключение ISO-образов.

При создании резервной копии связанного клона ВМ будет перезагружена.

При переводе узла кластера в режим обслуживания будет выполнена холодная миграция связанных клонов — с возможной остановкой ВМ.

Связанные клоны не могут быть перенесены балансировщиком.

Логика работы


При создании первого связанного клона исходный образ копируется в хранилище кластера и распаковывается. При распаковке происходит конвертация образа в формат Qcow2. Этот образ используется в качестве базового диска для всех связанных клонов.

Файлы для работы базового диска сохраняются в поддиректории /linked_clone_base директории хранения дисков ВМ. Поддиректория содержит:

  • файл базового диска — img.{имя_образа}.extracted;
  • файл с контрольной суммой базового диска — img.{имя_образа}.extracted.chksum;
  • файлы-маркеры для логической связи базового диска с основным — img.{имя_образа}.extracted.{имя_основного_диска}.link. Если файлов-маркеров нет, значит базовый диск не используется связанными клонами.

При удалении связанных клонов файл базового диска остаётся в хранилище. По умолчанию файл будет храниться 48 часов. По истечении этого срока, если на основе образа не были созданы новые клоны, сервис nodewatch удалит этот файл.

Вы можете изменить время хранения неиспользуемого базового диска через API. Для этого:

  1. Получите токен авторизации: 

    curl -k -X POST -H "accept: application/json" -H "Content-Type: application/json" 'https://domain.com/api/auth/v4/public/token' -d '{"email": "admin_email", "password": "admin_pass"}'
    CODE

    domain.com — доменное имя или IP-адрес сервера с платформой

    admin_email — email администратора платформы

    admin_pass — пароль администратора платформы

    В ответ придёт сообщение вида:

    Пример ответа в JSON

    {
      "confirmed": true,
      "expires_at": null,
      "id": "6",
      "token": "4-e9726dd9-61d9-2940-add3-914851d2cb8a"
    }
    CODE

    Сохраните полученное значение параметра token — токен авторизации.

  2. Выполните команду: 

    curl -k -H "x-xsrf-token: <token>" -X POST "https://domain.com/vm/v3/setting/unused_extracted_host_image_ttl_hours" -d '{"value":"<ttl>"}'
    BASH

    <token> — токен авторизации

    domain.com — доменное имя или IP-адрес сервера с платформой

    <ttl> — время хранения диска в часах

Миграция связанных клонов

При миграции связанного клона переносятся и диски ВМ, и файл исходного образа. В первую очередь переносится базовый диск, затем — основной. Режим миграции "Только диск" не может быть выбран для связанного клона. 

В большинстве случаев рекомендуется выполнять холодную миграцию связанных клонов — с возможной остановкой ВМ. Живая миграция занимает больше времени, чем холодная. При живой миграции ВМ потеряют свойства связанных клонов — основной диск будет объединён с базовым. Если для ВМ были созданы резервные копии, то после живой миграции восстановление ВМ из этих копий может быть недоступно.

Живая миграция связанных клонов рекомендуется только для группового перемещения всех связанных клонов из одного хранилища NAS в другое. В этом случае ВМ не потеряют свойства связанных клонов.

Создание связанных клонов


Чтобы создать связанный клон, перейдите в раздел Виртуальные машины → кнопка Создать VM → вкладка Образы VM → включите опцию создать как связанный клон → укажите настройки ВМ → кнопка Создать.

Связанные клоны отображаются в списке ВМ со значком .