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

Changelog vStack Center

3.1.0 — 3 сентября 2026​

Релиз устойчивости. Главное приобретение — живая миграция: работающую машину теперь можно перенести на другой узел без остановки. Всё остальное — про то, чтобы центр и узлы перестали расходиться в том, что происходит с машиной: операция, оборвавшаяся на полпути, больше не оставляет машину заблокированной, переносящейся или «создающейся» навсегда, а квота ВЦОД наконец считает диски машин и тома хранилища одной величиной.

Главное​

  • Живая миграция ВМ — перенос работающей машины на другой узел без выключения, а также перенос данных остановленной машины между хранилищами одним методом. Ход переноса виден отдельным запросом статуса: фаза, процент и причина отказа.
  • Единый учёт ёмкости ВЦОД — квота пространства считает тома хранилища наравне с дисками машин. Занятое место на экране и величина, по которой выносится отказ, теперь совпадают.
  • Сроки жизни переходных состояний — машина больше не висит в состоянии «запускается» или «переносится» бесконечно: у каждого состояния свой предельный срок, по истечении которого машина переводится в соответствующую неудачу.
  • Повторно отправленный запрос не выполняется дважды — тот же идентификатор возвращает тот же ответ вместо второго прогона операции.
  • Инвентаризация оборудования снова работает — списки физических дисков и сетевых интерфейсов наполняются, включая NVMe, подключённые без корзины.

Что учесть при обновлении​

  • Реквизиты доступа к каналу узловых контроллеров стали обязательными на любом кластере. Без них диспетчер не запустится — проверьте настройки до обновления.
  • Действующие сессии завершаются. Сессионные токены и токены принудительной смены пароля перешли на криптостойкий источник случайности; после обновления потребуется повторный вход.
  • Инвентаризацию оборудования нужно один раз запустить принудительно, чтобы списки дисков и сетевых интерфейсов наполнились актуальными данными.
  • У ВЦОД с томами хранилища вырастут занятое место и процент заполнения квоты — это не рост потребления, а исправление счёта. Запуск уже созданных машин при этом работает как прежде: включить собственную выключенную машину можно, даже когда квота выбрана томами.
  • Правки схемы базы данных применяются при обновлении автоматически. Ручной шаг со столбцом в таблице оперативного статуса ВМ, о котором сообщалось ранее, больше не нужен — правка вынесена в отдельную миграцию.
  • Служба теперь запускается, даже если в базе записана правка схемы, которой нет в установленной версии: такая запись попадает в предупреждения журнала. Сбой самой правки схемы по-прежнему останавливает запуск.

Добавлено​

Виртуальные машины

  • Живая миграция: перенос запущенной машины на другой узел (машина должна быть в состоянии «запущена») и перенос данных остановленной машины на другое хранилище — обе задачи решает один метод, сценарий выбирается параметром. Операция доступна роли Cluster master.
  • Ход переноса читается отдельным запросом статуса: состояние, фаза, процент, исходные и целевые узел или пул, причина отказа. Пока перенос не завершён, операции, способные ему помешать — остановка, изменение конфигурации, снятие блокировки, — отклоняются понятной ошибкой; чтение данных о машине остаётся доступным.
  • Переходные состояния (запускается, останавливается, создаётся, удаляется, приостанавливается, возобновляется, переносится, восстанавливается) получили предельный срок — от 15 минут для запуска до 6 часов для переноса и восстановления из резервной копии. По его истечении машина переводится в соответствующее состояние неудачи, причина попадает в журнал службы и в историю состояний машины. Успешно созданная, но ни разу не запущенная машина под это правило не попадает.

ВЦОД и хранилище

  • Лимит пространства ВЦОД нельзя опустить ниже фактически занятого: попытка отклоняется с указанием запрошенного лимита и текущего занятого, значение не применяется. Снять лимит целиком по-прежнему можно.
  • На экране хранилища видно занятое место и размер по каждому тому — данные для панели ёмкости, скрытой в 3.0.4. Если контроллер хранилища недоступен, занятое место показывается пустым, но карточка хранилища открывается.
  • У хранилища появилось видимое состояние демонтажа: по нему понятно, что прерванное удаление ВЦОД нужно запустить повторно. Успешный демонтаж состояние снимает.

Физические диски

  • В список физических дисков попадают диски NVMe, подключённые напрямую, без дисковой корзины — раньше на узлах целиком на NVMe список оставался пустым. У таких дисков корзина и её устройство показываются как «нет значения»: по этому признаку видно, что индикация неисправности и определение местоположения (LED) им недоступны — за индикацию отвечает корзина. Состояние здоровья показывается как неизвестное, измерить его без корзины нечем.

Кластер

  • Состояние кластера сообщает, что настройки изменены и требуется перезапуск службы. Настройки читаются один раз при запуске и на лету не перечитываются, а состояние кластера показывало их текущее значение из базы — изменённый, например, предельный размер диска выглядел применённым, хотя проверки продолжали использовать прежний. Теперь расхождение видно отдельным признаком, а перечень изменённых настроек попадает в журнал службы.

Изменено​

  • Квота пространства ВЦОД считает тома хранилища наравне с дисками машин. Раньше эти две половины не видели друг друга: арендатор, выбравший всю квоту томами, продолжал свободно добавлять и расширять диски машин.
  • Удаление розданного тома больше не требует предварительно снимать раздачу — она снимается автоматически, и том удаляется одним действием. Если удаление тома всё же отклонит контроллер (например, из-за снимков или клонов), том останется без раздачи: вернуть её можно отдельным действием.
  • Карточка тома хранилища открывается быстрее: два обращения к хранилищу идут одновременно, а не одно за другим. Если хранилище не отвечает, ожидание сократилось вдвое.
  • Диск, подключённый сразу к нескольким узлам (двухпортовый NVMe), показывается на том узле, который сейчас держит его пул, — там же, где этот пул виден в состоянии пулов, и с именем устройства на этом узле. Диск, не входящий ни в один пул, по-прежнему показывается на узле, сообщившем о нём последним.
  • Если узел отвечает «машина уже приостановлена» или «машина уже запущена», операция считается выполненной: оператор видит успех вместо ошибки на фактически достигнутом результате. Так уже работала остановка машины.
  • Методы установки лимитов — сетевого у машины и Edge, дискового у машины — принимают пустое значение как «без ограничения» и отличают его от нуля. Раньше пустое значение либо вызывало ошибку, либо молча заменялось на 0.
  • Повторно отправленный запрос не выполняется второй раз. Если исходный запрос уже отвечен, тому же пользователю возвращается тот же ответ; если ещё выполняется — приходит отказ «запрос уже в обработке». Запрос с чужим идентификатором чужого ответа не получает.

Безопасность​

  • Устранена утечка изоляции между ВЦОД на нескольких методах. Администратор ВЦОД больше не создаёт сети кластерных типов — маршрутизируемые (Routed) и Q-in-Q: такие сети дают тенанту присутствие в общем сегменте кластера и, как предписывает ролевая модель, доступны только роли Cluster master. В списке профилей ОС администратор, пользователь и наблюдатель ВЦОД больше не видят приватные образы чужих ВЦОД — только общие и привязанные к своему ВЦОД. Просмотр карточки роли теперь доступен только роли Cluster master. Правка прав применяется при обновлении автоматически.
  • Сессионные токены и токены принудительной смены пароля стали стойкими к подбору — формируются из криптостойкого источника случайности.
  • Защита от подбора пароля больше не обходится одновременными попытками входа. Раньше пачка параллельных запросов под одним логином успевала сделать заметно больше проверок пароля, чем задано порогом, а учётная запись так и не блокировалась; счётчик неудач и записи в журнале безопасности занижались.
  • Штатный контроль целостности журнала безопасности больше не даёт ложных срабатываний на большом журнале и после автоматической архивации старых записей. Реальная подделка записи по-прежнему обнаруживается.
  • Проверка конфигурации ВМ перестала давать ложные расхождения: на исправных машинах, на машинах со старым типом дискового контроллера (все унаследованные машины с Windows) и на машинах, запущенных не на владельце своего пула. Раньше из-за этого в журнал безопасности шёл поток ложных событий о нарушении целостности с наивысшим уровнем срочности.
  • Отказ в доступе к функциям Edge при выключенной соответствующей возможности снова фиксируется в журнале безопасности отдельным событием — регистрация перестала работать после унификации аудита и теперь восстановлена.
  • Неверно указанный уровень важности в настройках оповещений безопасности больше не оставляет рассылку включённой: набор настроек применяется целиком или не применяется вовсе. То же касается настроек архивирования журнала.
  • При сбое базы данных наружу больше не попадают внутренние детали — имена таблиц и ограничений остаются в журнале диспетчера.

Исправлено​

Состояние машины и операции над ней

  • Перезапуск машины больше не сбрасывает её признак «должна работать». Промежуточное выключение, из которого состоит любой перезапуск, центр принимал за выключение гостем и запоминал машину как остановленную администратором — после падения узла такая машина не поднималась автоматически, а приостановка отклонялась как «машина не запущена». Выключение гостем по-прежнему распознаётся и переводит машину в остановленные.
  • Работающая машина больше не помечается выключенной из-за задержанных событий узла. Если узел был отрезан от центра и после переподключения выливает накопленные события, устаревшие из них больше не перезаписывают актуальный статус.
  • Неудачное создание машины больше не оставляет её навсегда в состоянии «Создаётся»: машина переходит в «Создание не удалось» и разблокируется. То же исправление действует для клонирования и для создания Edge.
  • Неудачное удаление машины больше не оставляет её в состоянии «Удаляется» — возвращается состояние, которое было до удаления, и операцию можно повторить.
  • Приостановка выключенной машины отклоняется сразу и ничего в базе не меняет. Раньше операция принималась на любой машине, а при отказе узла центр помечал машину запущенной и терял её привязку к узлу — лечилось только правкой базы. То же исправление действует для возобновления машины.
  • Неудачный запуск, остановка или перезапуск больше не оставляют машину в противоречивом состоянии «работает, но узел не указан».
  • Неудачная смена настройки машины больше не расходится с тем, что действует на узле: при любом сбое возвращается прежнее значение. Касается объёма памяти (balloon), приоритета процессора, класса виртуальных процессоров, метки диска и ограничения скорости порта Edge.
  • Сбой связи с брокером сообщений больше не оставляет машину заблокированной навсегда: занятость снимается автоматически до того, как оператор увидит ошибку. Касается снимка состояния, отката на снимок, удаления снимка, добавления, изменения размера и удаления диска, ограничения скорости диска и сети, а также удаления Edge.
  • Два одновременных запроса к одной машине больше не проходят оба: занять машину может только один, второй сразу получает отказ «машина заблокирована» и на узел ничего не отправляет.
  • Операция над машиной больше не снимает блокировку, поставленную другой, ещё выполняющейся операцией.
  • На один запрос больше не приходит два ответа: защита от одновременной обработки сохраняется независимо от длительности операции.
  • Автоматический подъём машин больше не отправляет вторую команду запуска машине, у которой предыдущая ещё выполняется. Служебные машины кластера единообразно исключены и из обновления статуса, и из автоматического подъёма.
  • Повторный запуск и автоматический подъём машины, которую центр считает выключенной, а она работает, больше не порождают второй запуск и не портят состояние машины в базе.
  • Выбор узла для запуска машины и проверка на переполнение памяти узла дают согласованный результат: запуск больше не отклоняется с сообщением о нехватке памяти кластера при реально свободной памяти. Возобновление приостановленной машины корректно учитывает освободившуюся память.
  • Лимит скорости диска и сетевого порта, выставленный на работающей машине, снова доходит до неё и сохраняется после перезапуска. Лимит скорости порта Edge снова выставляется.

Перенос машины

  • Остановка, перезапуск и приостановка машины, перенесённой на другой узел без выключения, доходят до узла, где машина действительно работает. Раньше такая команда уходила на узел, который держит хранилище машины.
  • После успешного переноса запущенной машины на другой узел она больше не показывается выключенной или «останавливающейся»: пока перенос идёт, состоянием машины распоряжается сам перенос.
  • Машина, перенесённая без остановки на узел, который владеет её хранилищем, больше не числится запущенной удалённо — она поднимается на этом узле локально.
  • Перенос между хранилищами больше не может отчитаться успехом, потеряв машину: исходные данные удаляются только после подтверждённого применения конфигурации на приёмнике. Повторная доставка одного и того же ответа принимающего узла больше не уничтожает исходные данные второй раз.
  • Два запроса на перенос одной машины, поданные подряд, больше не запускают два переноса.
  • Отклонённый запрос на перенос называет настоящую причину отказа: неверный тип переноса отклоняется как неверный тип, запрос по несуществующей машине сообщает, что машина не найдена.
  • Прерванное клонирование больше не оставляет машину-призрак — запись со всеми занятыми адресами и портами консоли, которой нет ни на одном узле.
  • Прерванный импорт машины больше не оставляет её импортированной наполовину.

Пулы, диски и инвентаризация

  • После переезда пула на другой узел интерфейс показывает узел, на котором пул работает фактически: центр раз в минуту сверяет владельца с состоянием кластера. Пул, не запущенный ни на одном узле, показывается на последнем известном.
  • Заполненность пулов и размеры снимков снова обновляются. Узлы присылали эти данные по новому каналу, а центр их не понимал и молча выбрасывал — из-за чего создание машины с автоматическим выбором пула отвечало «пул не найден».
  • Список физических дисков кластера снова наполняется: инвентаризация оборудования прерывалась в самом начале и не записывала ничего — ни диски и корзины, ни физические сетевые интерфейсы и агрегаты, ни данные SMBIOS, при этом отвечая успехом. Отдельно исправлен сбор сетевых интерфейсов.
  • Физический диск больше не «залипает» в состоянии «онлайн в кластере»: при инвентаризации центр приводит этот признак к фактическому состоянию на узле, и диск снова доступен для операций.
  • Запоздавший ответ по операции над физическим диском больше не снимает защиту, поставленную уже следующей операцией над тем же диском.

ВЦОД, хранилище и сети

  • ВЦОД с зависшим резервом тома снова удаляется. Незавершённый резерв (ответ контроллера не пришёл) считался настоящим томом и навсегда запирал удаление.
  • Место в квоте ВЦОД, занятое незавершённым созданием хранилища или тома, больше не пропадает навсегда: такая бронь освобождается автоматически.
  • Сбой на последнем шаге удаления ВЦОД с хранилищем больше не оставляет неудаляемых остатков.
  • Удаление тома хранилища больше не падает, если его раздача уже снята на стороне хранилища: отказ «LUN не существует» распознаётся как уже выполненная работа.
  • В карточке тома доступное место означает остаток самого тома, а не свободное место пула.
  • Создание и изменение набора CHAP для iSCSI без встречной (mutual) пары логина и пароля отклоняется сразу понятной ошибкой, а не поздним отказом от узла. Переименование группы и смена только пароля сохраняют встречную пару.
  • Переименование группы инициаторов или группы аутентификации хранилища в уже занятое имя отклоняется понятной ошибкой ещё до обращения к контроллеру. Клиент API различает по коду ответа выключенную функцию Unified Storage, сбой инфраструктуры и ошибку ввода.
  • Создание сети больше не отклоняется с удалением сети из базы, когда на узлах она уже создана: каждый ответ засчитывается за конкретный узел. То же касается удаления и изменения сети.
  • Неудачное удаление Edge больше не уничтожает его безвозвратно: до подтверждённого удаления машины ничего необратимого не происходит, Edge и все его правила остаются на месте.
  • Неудачная отправка команды на узел больше не оставляет операцию числящейся выполняющейся. Касается операций с файловыми системами и пулами, запуска, остановки, перезапуска, удаления и настройки Edge, а также настройки iSCSI у ВЦОД.

Пользователи и API

  • При назначении роли указание несуществующей роли даёт понятную ошибку «роль не найдена» вместо сбоя базы данных; отказы «роль уже назначена» и «нельзя назначать роль системному пользователю» приходят под разными кодами.
  • Журнал API-запросов снова пополняется на кластерах, где его таблицу настраивали вручную, — а вместе с ним снова работает получение результата задачи по идентификатору, которое на таких кластерах отвечало «задача не найдена» на любой запрос. Там же начала действовать защита от повторного выполнения запроса. Отказ записи в журнал виден в журнале службы отдельной пометкой, а его массовость — сводкой раз в пять минут.

См. также​