2.1.1. Физический слой
В этом слое присутствуют только базовые физические элементы (серверы) и их взаимная сетевая связанность.

2.1.2. Кластерный слой
Формируется программно решением vStack. Именно в этом слое располагаются ресурсные примитивы (например, локальные диски узлов), используемые другими слоями.

2.1.3. Слой хранения – SDS
На основе ресурсных примитивов из Кластерного слоя (локальные диски узлов) формируется слой хранения (SDS). Технологической основой SDS является ZFS – файловая система, объединенная с менеджером логических томов, обладающая совокупностью уникальных свойств. Единица грануляции слоя SDS – пул, собранный из дисков каждого узла, имеющий резервирование RAIDZ и избыточность равную избыточности кластера (n+2, n+3 etc). В момент времени пул работает на конкретном узле кластера.

Возможности слоя хранения:

  • компрессия и редупликация;
  • внутренняя целостность данных;
  • клоны, снимки;
  • самовосстановление данных;
  • транзакционная целостность.

Слой хранения имеет свои лимиты по размеру: 1 zettabyte, при этом поддерживает неограниченное количество файловых систем и неограниченное количество блочных устройств.

Для всех промышленных инсталляций рекомендуется использование избыточности типа N+2 или выше (платформа поддерживает N+1, N+2 и N+3).

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

Рисунок 2. Пятиузловый кластер

В случае выхода из строя узла за счет механизма fencing (процесса исключения узла из кластера) узел, на котором возникла проблема, будет исключен из кластера, а все пулы потеряют по одному диску. При этом кластер автоматически выполнит процедуру аварийного переключения (failover) ресурсов данного узла, и пул, работавший на узле, вышедшем из строя, станет доступен на другом узле. Все ВМ продолжат свою работу на другом узле.

2.1.4. Слой сети – SDN
vStack предоставляет три варианта технологического обеспечения виртуальных сетей:

  • VLAN;
  • VXLAN;
  • GENEVE (собственная имплементация).

Конкретный экземпляр виртуальной сети базируется на распределенном свитче. Реализация самой виртуальной сети — наша собственная разработка, прошедшая серьезные испытания и давно (с сентября 2020 г.) работающие в промышленной эксплуатации на большом количестве кластеров.

Рисунок 3. SDN – Software Defined Networking

Каждый экземпляр сети имеет следующие свойства:

  • собственный MTU;
  • поддержка jumbo frames;
  • поддержка TSO/GSO;
  • поддержка TCP MSS clamping «из коробки»
  • поддержка path mtu discovery "из коробки".

Лимиты SDN:

  • максимальное количество сетей – 65536;
  • 1 048 576 портов на свитче одного хоста;
  • Производительность виртуального порта VM: 22 GBps / 2.5Mpps.

2.1.5. Слой вычислений – SDC Слой SDC
работает на базе гипервизора второго типа (bhyve). Производительность bhyve значительно выше, чем у популярных гипервизоров. Кроме того, его оптимизация до сих пор продолжается, а практически все средства аппаратной акселерации виртуальных вычислений поддерживаются на современных процессорах Intel. Также гипервизор bhyve поддерживает работу в условиях CPU overcommit, что критически важно для облачных решений.

Экземпляр SDC – виртуальная машина, являющаяся совокупной сущностью со следующими элементами:

  • CPU/RAM;
  • Виртуальные сетевые порты (подключенные к слою SDN);
  • Виртуальные дисковые устройства (подключенные к слою SDS).
Рисунок 4. SDC – Software Defined Computing

На экземпляре SDC могут быть установлены следующие ОС:

  • FreeBSD;
  • Linux (OEL/CentOS/Ubuntu/Debian);
  • Windows 2019/2022.

Работоспособность решения vStack на других ОС не гарантируется.

Диски виртуальной машины создаются на том же пуле, на котором была создана сама виртуальная машина. Вследствие этого возникает явная связь виртуальной машины (SDC) и пула (SDS), на котором она была создана. Явный характер этой связи в той же степени делает неявным привычную связь виртуальной машины и узла, CPU/RAM которого эксплуатируются слоем SDC. В случае штатной миграции пула, на котором расположена ВМ, на другой хост, и сама ВМ начнёт использовать ресурсы хоста, на котором работает пул.

В процессе создания ВМ существуют следующие возможности выбора пула, ресурсы которого будут использоваться:

  • «Селекторы» – автоматический выбор пула, на котором наименьшее совокупное значение таких параметров, как:
    • CPU;
    • RAM;
    • дисковое пространство.
  • Явное указание пула

Для обеспечения комфортной работы с платформой в слое вычислений реализованы следующие возможности:

  • поддержка спецификации virtio для сетевых портов, дисков и другой периферии (rnd, balloon и т.п.);
  • создание виртуальных машин с возможностью их гибкой кастомизации при помощи облачных образов (cloud images);
  • возможность кастомизации гостевых ОС в облачных образах с помощью стандарта cloud-init для unix-подобных систем и cloud-base для windows;
  • поддержка возможности лимитирования производительности сетевого порта (MBps) и диска (IOPS, MBps) в реальном времени, а также лимитирования ресурсов vCPU в реальном времени;
  • поддержка создания снимков ВМ – в отличие от других решений снимки vStack содержат конфигурацию виртуальной машины в т.ч. сетевых портов и их IP/MAC-адресов.

Также в платформе существует автономный и самодостаточный механизм обеспечения работы в условиях CPU overcommit, который позволяет достигать высоких значений экономической эффективности в слое SDC (до 900%).

Легковесность vStack – ключевая причина низкого значения CPU Overhead (снижение производительности виртуализованного сервера относительно физического вследствие значимости накладных расходов гипервизора).