LXD (Linux Container Daemon) — это система контейнерной виртуализации и управления виртуальными машинами на основе ОС Linux. LXD используется для запуска нескольких изолированных экземпляров ОС Linux на одном узле. LXD можно использовать в качестве альтернативы технологии OpenVZ.   

Преимущества использования LXD:

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

Поддерживаемая версия LXD — 5.21.

Особенности LXD-кластеров в VMmanager


В текущей версии VMmanager кластер LXD можно создать только с типом настройки сети "Коммутация" или IP-fabric и использованием ZFS-хранилища. Контейнеры и образы ВМ хранятся в пуле ZFS, резервные копии ВМ — на узле кластера. На узлах кластера должна быть установлена ОС Ubuntu 20.04.

В кластерах LXD недоступно:

  • подключение ISO-образов пользователей к виртуальным машинам (ВМ);
  • добавление узлов с двумя сетевыми интерфейсами;
  • создание сетевых мостов;
  • живая миграция ВМ;
  • установка ОС Windows;
  • подключение к ВМ через VNC и SPICE.

Для установки операционных систем в LXD-кластере VMmanager использует отдельные образы ОС. В текущей версии доступны образы ОС:

Группа ОС

Поддерживаемые ОС

Alma
  • AlmaLinux 8
CentOS
  • CentOS 7
  • CentOS 8
Debian
  • Debian 9
  • Debian 10
  • Debian 11
Oracle
  • Oracle Linux 8
Rocky
  • Rocky Linux 8
Ubuntu
  • Ubuntu 18.04
  • Ubuntu 20.04

Для удалённого администрирования ВМ вы можете зайти в консоль LXD-контейнера. Окно с консолью откроется в отдельной вкладке браузера.

Обратите внимание!

Вы можете перенести в LXD-кластер виртуальные машины, созданные с помощью виртуализации OVZ. Подробнее см. в статье Перенос OVZ-контейнера в LXD-кластер

Тонкие настройки ВМ


ВМ в кластере LXD имеют особенности в части тонких настроек:

  • вес CPU и вес использования I/O изменяются в диапазоне от 0 до 10;
  • скорость чтения и записи можно установить либо в IOPS, либо в Мбит/с;
  • настройка режима эмуляции CPU недоступна;
  • есть возможность настроить:
    • вес сети — чем больше вес, тем больше времени выделяется на обработку запросов;
    • максимальное количество активных процессов в контейнере;
    • лимит использования CPU в процентах;
    • создание контейнеров внутри контейнера с использованием Docker, Podman, LXC и т.д.

Подготовка узла кластера


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

Перед подключением сервера к кластеру:

  1. Настройте на сервере ZFS-пул:
    1. Установите утилиту zfsutils-linux:

      sudo apt install zfsutils-linux
      BASH
    2. Определите блочное устройство второго диска: 
      lsblk
      CODE

      Пример вывода

      NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
      loop0    7:0    0  91.9M  1 loop /snap/lxd/32662
      loop1    7:1    0  40.9M  1 loop /snap/snapd/20290
      loop2    7:2    0  49.3M  1 loop /snap/snapd/24792
      loop3    7:3    0  63.3M  1 loop /snap/core20/1828
      loop5    7:5    0  73.9M  1 loop /snap/core22/2045
      loop6    7:6    0 114.4M  1 loop /snap/lxd/33110
      sr0     11:0    1  1024M  0 rom 
      vda    252:0    0    50G  0 disk
      ├─vda1 252:1    0     1M  0 part
      └─vda2 252:2    0    50G  0 part /
      vdb    252:16   0    50G  0 disk
      CODE
      В примере имя второго диска vdb, поэтому имя блочного устройства — /dev/vdb.
    3. Определите имя пула. Для этого в интерфейсе платформы перейдите в Кластеры → выберите кластер → кнопка Параметры → раздел Локальные хранилища → параметр ZFS-пул.
    4. Создайте ZFS-пул: 

      zpool create <zpool_name> <device>
      BASH
      Пояснения к команде: 
      • <zpool_name> — имя пула;

      • <device> — имя блочного устройства.

    5. Добавьте пул в LXD: 
      lxc storage create <zpool_name> zfs source=<zpool_name>
      CODE
      Пояснения к команде:
      • <zpool_name> — имя пула.
  2. В конфигурационном файле  /etc/ssh/sshd_config укажите параметр:
    UsePAM yes
    CODE

Может быть полезно

Связанные статьи: