Перейти к основному содержимому

Что нового в 3.0.10

Дата выпуска: 10 августа 2026

dRAID​

ZFS-пулы на узле можно создавать с топологией dRAID. Пул проверяется при создании, виден в мониторинге, а резервирование и замена дисков учитывают distributed spare. Рассчитано на большие однородные HDD-полки от 20 дисков.

Жизненный цикл физических дисков​

Узел сам ведёт физические диски (NVMe и HDD) от появления до вывода из эксплуатации:

  • находит новые диски и собирает модель, серийный номер, тип, размер и состояние;
  • периодически проверяет здоровье по SMART;
  • при отказе подбирает подходящий spare, выполняет замену и следит за resilver;
  • подсвечивает диск светодиодом, чтобы его можно было найти в корзине.

Аппаратный отказ обрабатывается без администратора, деградация заметна до того, как диск откажет. Состояние всех дисков кластера доступно через JSON-RPC API. Работает на платформах HCP и HA.

HA-кластер из двух узлов​

Кластер работает на двух узлах, как с общим backplane (shared storage), так и на отдельных узлах с локальными дисками. Поддерживаются двухпортовые диски SAS и NVMe, разделяемый backplane, все уровни RAID и топологии OpenZFS, автоматический failover.

Storage Live Migration​

Диски ВМ переезжают между storage-пулами без остановки гостевой ОС. Данные в фоне копируются на целевой пул, затем NVMe-oF target атомарно переключается на новый том. Поверх базового сценария есть два режима:

  • Suspend/resume на переключении. ВМ приостанавливается на момент финального переключения и возобновляется уже на новом томе. Сетевая недоступность короче, данные гарантированно согласованы.
  • Длящаяся репликация. Копирование идёт непрерывно с заданным интервалом. Можно дождаться, пока копия догонит оригинал, и переключиться в удобный момент.

Пригодится для обслуживания хранилища без простоя, разгрузки нагруженных томов и переезда между классами хранилища (HDD → NVMe). Вместе с Live Migration Compute ВМ перемещается по кластеру целиком.

NVMe/TCP​

К хранилищам vStack OS можно подключаться снаружи по NVMe/TCP через обычный Ethernet.

PCI Passthrough​

Физическое PCI-устройство хоста пробрасывается в ВМ bhyve без эмуляции, и гость работает с железом напрямую. Подходит любое устройство, которое поддерживает bhyve passthrough. Основные сценарии: сетевые адаптеры (сетевой ввод-вывод на линейной скорости) и GPU.

NIC Passthrough​

Сетевую карту можно целиком отдать ВМ. Контроллер привязывает PCI-устройство к драйверу ppt, добавляет в аргументы bhyve -s <slot>,passthru,<bus>/<slot>/<func> и освобождает устройство, когда ВМ останавливается. Проверено на Intel E810 25G и LR-LINK LRES3029PF.

Ограничения.

  • ВМ с passthrough привязана к узлу. Live migration и автоматический переезд на другой узел не поддерживаются: bhyve не переносит состояние проброшенного устройства.
  • Запуск на другом узле означает другую физическую карту и другой MAC. Это возможно только на узле с такой же картой.
  • SR-IOV и vGPU в этом релизе не поддерживаются.

Новый сборщик метрик​

Вместо telegraf и Perl-демонов метрики на узле собирает собственный коллектор на C++. Он отдаёт их в формате Prometheus по HTTP на /metrics. Раньше слоёв было два: Perl-демоны отдавали метрики ВМ и статистику UMA, telegraf — системные метрики хоста (cpu, mem, disk, diskio, net, system, kernel, processes, smart, ipmi_sensor, zfs) и подробный netstat. Сторонние зависимости исчезли, а заказчикам, у которых мониторинг на Prometheus, больше не нужен стек InfluxData.

На каждом узле работает скраппер. Он собирает /metrics локальных контроллеров и пишет в InfluxDB на mgmtVM Center, разворачивается при установке кластера. Контроллеры больше не отправляют данные в InfluxDB сами.

Набор метрик перенесён полностью, ничего не выброшено. Хранилище осталось прежним, InfluxDB. Дашборды Grafana не переводились на PromQL.

Жизненный цикл пула через nodeside​

Команды create, import, export, start, stop, share и unshare для ZFS-пула выполняет контроллер nodeside по JSON-RPC через AMQP и сам публикует события смены состояния. Скрипты /pools/<pool>/.internal/rc.d/* и /root/vStack.pool.sh с узлов удалены.

Live Migration в bhyve​

Механизм Live Migration переписан под долгую поддержку. Ошибки запуска ВМ и операций bhyve теперь доходят до оператора и контроллера с полной диагностикой.

Edge и сеть​

  • HA для Edge на CARP и pfsync.
  • Edge показывает, какая схема конфигурации активна. Схема v1 объявлена устаревшей.
  • ng_switch(4) сам именует хуки: auto превращается в auto-<N>.

Исправленные ошибки​

Хранилище и блочный доступ​

  • iscsi-create-target с auth.chap_group больше не отвечает -32602.
  • Создание таргетов работает. После предыдущего исправления оба метода отвечали «Parameter 'volsize' is required».
  • Проверка NQN больше не отвергает подчёркивание: хосту с корректным initiator_nqn снова можно дать доступ к NVMe-oF.
  • initiator_nqn проверяется и не попадает в путь keyring-файла. Закрыта возможность записи за пределы каталога пула.
  • iscsi-add-target-lun больше не создаёт bdev до проверки lun_id. Раньше при отказе bdev оставался и навсегда блокировал удаление тома.
  • iscsi-remove-target-lun уменьшает счётчик экспортов тома.
  • iscsi-delete-portal-group не удаляет portal group, которую ещё используют таргеты.
  • CLI vstack-san больше не получает ответ на чужой запрос и не пишет ложное «Deamon not responding» при параллельных вызовах.
  • Служебный ctrl_vol удаляется вместе с таргетом NVMe/TCP. Раньше каждый таргет оставлял 1 GiB.
  • Метрики пулов (семейство zpool) снова доходят до InfluxDB.
  • metrics-get больше не отказывает кодом -8103 при работе через AMQP.
  • Контроллеры проверяют HTTP-код ответа InfluxDB. Раньше любая ошибка (400, 401, 404, 5xx) считалась успешной отправкой.

Диски, пулы и кластер​

  • В dRAID-пуле без свободного distributed spare автозамена берёт физический spare-диск.
  • disk-resilver-event не сообщает ложный status=completed, когда цель resilver не определена.
  • metrics-get и smart-get отвечают ошибкой 23122/23131, а не теряют ответ, когда он не помещается в лимит.
  • На залипшем диске smartctl снимается по SIGKILL, SMART больше не устаревает молча.
  • nodeside восстанавливает AMQP-канал после channel-error. Раньше одна публикация в несуществующую очередь рвала связь узла с Center до перезапуска демона.
  • В ccrd исправлены критические ошибки split-brain в дисковом PR-фенсинге и в кворуме witness.
  • HA-резервации: при карантине всех дисков группы больше нет ложного «Registration restored on all disks».
  • Пул сам выходит из DEGRADED, когда узел возвращается. Раньше сетевой диск оставался FAULTED до ручного zpool online.

Виртуализация​

  • Приёмник live-миграции больше не падает в SIGSEGV на неизвестной секции потока и не портит соседние секции на коротком чтении.
  • После неудачной live-миграции (receive_failed) ВМ не отклоняет команды с ошибкой -451 около двух минут.
  • VF от E810 в госте с числом vCPU больше двух настраивает очереди, TX-hang больше нет.

Мониторинг и CLI​

  • Проверка host_cpu_idle в NRPE снова выполняется: у check_idle были права, недоступные пользователю nagios.
  • CLI и справка vstack-nodeside приведены к единому стандарту vStack OS.