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

Перенос ВМ: смена узла и смена пула

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

к сведению

Живая миграция появилась в 3.1.0: работающую машину переносят на другой узел без остановки, гостевая ОС при этом продолжает работать. Перенос данных между пулами по-прежнему требует остановленной машины.

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

Смена узла работает через размещение при запуске. При запуске машины узел выбирается явно, а без выбора vStack Center сам берёт наименее загруженный узел в состоянии ONLINE. Работает это не для всех машин: удалённый запуск и автоматическое размещение доступны машинам в NVMe-режиме дисков, а машина на virtio-blk запускается только на узле своего пула данных.

Смена пула — это миграция данных: полный цикл ZFS send/receive, затем перерегистрация дисков, снимков и самой машины, затем удаление исходного датасета. Операция долгая и односоставная: результат приходит после завершения всего цикла, а не после старта копирования, и прогресс копирования vStack Center не показывает.

ЗадачаЧто делатьЧто переноситсяКлючевое ограничение
Освободить узел под обслуживание, простой недопустимЖивая миграция на выбранный узелТолько исполнение; данные остаются в своём пулеС 3.1.0; нужна привилегия Live Migrate VM; машина должна быть запущена
Освободить узел под обслуживание, простой допустимОстановить машину и запустить её на выбранном узлеТолько исполнение; данные остаются в своём пулеНа virtio-blk запуск возможен только на узле пула
Освободить пул храненияМиграция машины на другой пулДанные: диски, снимки, регистрация ВМВМ остановлена; целевой пул отличается от исходного
Получить быструю копию рядомКлонирование машиныНичего не переносится — создаётся копияКлон всегда на пуле источника; операция идёт через API

Предусловия​

  • права на машину: Cluster master видит любую ВМ кластера; обычный пользователь работает только с машинами своих ВЦОД (виртуальных центров обработки данных). Для запуска и остановки порог роли в ВЦОД — role_id ≤ 3;
  • для смены пула — роль Cluster master: миграция открыта только ей;
  • целевой пул импортирован на узле: иначе vStack Center не определит узел пула и вернёт код -25307;
  • имя целевого пула вида z02 — две цифры после буквы;
  • квоты ВЦОД и ёмкость кластера позволяют запустить машину: при запуске проверяются и квоты, и переподписка памяти;
  • согласованное окно простоя;
  • версия vStack Center — 3.0.5 для клонирования ВМ, 3.1.0 для живой миграции; перенос через остановку и миграция данных между пулами работают и на более ранних версиях.

Шаг 1. Снять картину машины​

До любого переноса нужно знать три вещи: где машина сейчас, чем она пользуется и можно ли её вообще запустить на другом узле.

  1. Откройте Provider Data Center → All Virtual Machines и найдите машину. Колонка State показывает её состояние, Storage (GB) — сколько места она занимает.
  2. Откройте карточку машины и прочитайте блок General properties: узел исполнения (Node), ВЦОД машины, CPU (Cores), RAM, OS profile и VM configuration version.
  3. Прочитайте таблицу Disks — колонки Name, Slot, Disk size (GB), Sector size, IOps limit, MBps limit. По ней считают объём, который предстоит скопировать, и запоминают ограничения скорости.
  4. Пересчитайте снимки в таблице Snapshots — колонки Name, Date of creation, Size (GB). После миграции число снимков должно совпасть.
Что выписатьЗачем
Узел исполнения (Node)Понять, откуда машину предстоит увести
Пул данных машиныВыбрать целевой пул, отличный от исходного
Режим дисков — NVMe или virtio-blkОпределяет, можно ли запускать машину не на узле пула
Состояние (State)От него зависит, примет ли машина команду запуска или миграции
Число снимковСверка после переноса данных

Режим дисков на карточке не подписан отдельной строкой. Если машина на virtio-blk, это выясняется при попытке запустить её на чужом узле: запуск отклоняется с кодом -460.

Шаг 2. Остановить машину​

Обе операции требуют остановленной машины, поэтому шаг общий.

  1. Откройте карточку ВМ (или найдите машину в списке), нажмите Actions и выберите команду остановки.
  2. Если гостевая система не реагирует на ACPI, задайте таймаут жёсткого выключения (0–999 секунд) или откажитесь от ACPI-выключения.
  3. Дождитесь, пока State сменится на «остановлена». Пока идёт операция, машина заперта: другие команды над ней отбиваются.

Приостановленную машину команда остановки принимает так же, как работающую.

Задача A. Запустить машину на другом узле​

Это то, что нужно перед обслуживанием узла: данные остаются в своём пуле, меняется только место исполнения.

  1. Убедитесь, что машина в NVMe-режиме дисков. Машина на virtio-blk запускается только на узле своего пула данных: попытка запустить её на другом узле возвращает код -460.
  2. Откройте карточку ВМ, нажмите Actions и выберите команду запуска.
  3. Выберите целевой узел. Номер узла — от 1 до числа узлов кластера; если оставить автоматический выбор, vStack Center возьмёт наименее загруженный узел в состоянии ONLINE — это удобно при массовом запуске после обслуживания.
  4. Дождитесь, пока State сменится на «запущена», и проверьте поле Node в блоке General properties: узел, на котором машина действительно поднялась, показан там — и при явном выборе, и при автоматическом.

Когда подходящих узлов нет, приходит код -458.

Перезапуском узел не сменить: перезапуск берёт текущее размещение машины. Для смены узла нужна пара «остановить — запустить».

Задача B. Перенести данные в другой пул​

Это то, что нужно при исчерпании пула или выводе пула из эксплуатации. Миграция копирует данные потоком ZFS send/receive, перерегистрирует диски, снимки и машину, а затем удаляет исходный датасет.

  1. Выберите целевой пул. Откройте Provider Data Center → Storage Resources: таблица ZFS pools покажет Health, Consuming, Scrubbing, Resilvering, Current node и Capacity (RAW). Берите здоровый пул, по которому не идут восстановление и проверка целостности.
  2. Откройте пул и в разделе Properties сверьте Free с суммой Disk size (GB) всех дисков машины — свободного места должно хватить на все диски. Имя целевого пула должно быть вида z02.
  3. Убедитесь, что машина остановлена или создана и ещё не запускалась: другие состояния миграция не принимает и отвечает кодом -25306.
  4. Откройте карточку ВМ, нажмите Actions, выберите миграцию и укажите целевой пул.
  5. Дождитесь завершения цикла. Пока он идёт, машина заперта, а результат приходит один раз — после копирования, перерегистрации и удаления исходного датасета. Ход операции показывает панель журнала — кнопка LOG.
  6. Сверьте результат: число снимков в таблице Snapshots совпадает с замером до миграции, а в Storage Resources у исходного пула вырос остаток. Точное размещение дисков по пулам отдаёт API — см. Справочник API.
  7. Запустите машину.

Миграция на тот же пул запрещена и отклоняется с кодом -25305. Копирование идёт через ограниченный набор портов передачи. Когда все они заняты другими переносами, приходит код -25308. Повторите операцию позже.

Задача C. Быстрая копия вместо переноса​

Иногда задача решается копией, а не переносом: например, нужно проверить обновление на дубликате машины. Клон — это мгновенная copy-on-write-копия остановленной машины: операция занимает секунды независимо от размера дисков и почти не тратит ёмкость.

Клонирование в веб-интерфейсе не представлено: операцию выполняет администратор через API — см. Справочник API. Задаются только имя клона и описание.

  1. Остановите машину-источник: клонирование запущенной машины отклоняется с кодом -2603.
  2. Запустите клонирование и задайте имя клона.
  3. Дождитесь, пока клон появится в списке All Virtual Machines. Он создаётся той же цепочкой, что и новая машина: сначала запись, потом сборка на узле.

Клон наследует конфигурацию источника полностью и создаётся в том же ВЦОД и на том же пуле — переносом это не заменить. MAC-адреса генерируются заново, адреса выделяются как при обычном создании.

предупреждение

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

Завершение работ​

  1. Запустите машину и проверьте, что она поднялась: State в списке ВМ и поле Node на карточке.
  2. После смены пула сверьте освободившуюся ёмкость в Storage Resources: у исходного пула вырастет остаток. Исходный датасет удаляется в рамках цикла миграции — отдельной команды не требуется.
  3. Проверьте, что диски и снимки на месте: таблицы Disks и Snapshots на карточке машины. Ограничения скорости машина сохраняет — сверьте IOps limit и MBps limit у дисков, а ограничение полосы — у сетевых портов.
  4. Если машину переносили под обслуживание узла — выводите узел из работы только после того, как все его машины подняты на других узлах.

Проверка результата​

Что проверяемГде смотретьОжидаемо
Машина работает на нужном узлеКарточка ВМ, блок General propertiesПоле Node — выбранный узел
Машина запущенаСписок ВМ, колонка StateСостояние соответствует «работает»
Снимки на местеКарточка ВМ, таблица SnapshotsЧисло снимков совпадает с замером до миграции
Диски на местеКарточка ВМ, таблица DisksСостав дисков и ограничения скорости не изменились
Исходный пул освободилсяStorage Resources, Capacity (RAW)Заполненность исходного пула снизилась
Данные переехали в целевой пулЧерез APIПул машины и пул каждого диска — целевой

Если не получилось​

Что видитеПочемуЧто делать
Код ошибки -25300Миграция открыта только роли Cluster masterВойдите под ролью уровня кластера
Код ошибки -25306Машина не остановлена и не находится в состоянии «создана»Остановите машину и дождитесь фактического останова
Код ошибки -25305Целевой пул совпадает с исходнымВыберите другой пул: миграция на тот же пул запрещена
Код ошибки -25307Не удалось определить узел целевого пулаПул может быть не импортирован. Проверьте его в Storage Resources по колонке Current node
Код ошибки -25304Не удалось определить узел машиныПроверьте состояние узлов в Server Nodes
Код ошибки -25308Нет свободных портов передачиДождитесь завершения других переносов и повторите
Код ошибки -25310Цикл миграции не завершился: сбой перерегистрацииПроверьте состояние машины и её дисков на карточке; не запускайте новую миграцию до выяснения
Код ошибки -460Машина на virtio-blk: запуск возможен только на узле её пулаСменить узел исполнения нельзя. Перенесите данные в пул нужного узла миграцией
Код ошибки -459Windows в NVMe-режиме не завершила первичную настройкуЗавершите настройку на узле пула, затем запускайте удалённо
Код ошибки -458Нет доступных узлов в состоянии ONLINE для размещенияВерните узлы в работу или выберите узел вручную
Код ошибки -442, -443Выбран несуществующий узелВозьмите номер узла из таблицы Server Nodes
Код ошибки -457Машина уже запущенаОстановите её перед повторным запуском
Код ошибки -455Машина приостановленаВерните её в работу, затем запускайте
Код ошибки -409Машина заперта другой операциейДождитесь её завершения; запертая машина освобождается сама, когда узел ответит
Код ошибки -413, -414, -415Исчерпана квота ВЦОД по хранилищу, памяти или ядрамОсвободите квоту или расширьте её
Код ошибки -440Исчерпана память кластера с учётом переподпискиЗапускайте на другом узле или освободите память
Код ошибки -452При удалённом запуске не подключились диски по сетиЗапустите машину на узле её пула и проверьте связность фабрики
Код ошибки -2603Источник клона не остановленОстановите машину перед клонированием
Код ошибки -2605Машину ведёт сервис — например, программно-определяемый маршрутизатор (Edge)Сервисные машины не клонируются
Код ошибки -3001, -429Машины с таким идентификатором нет в области видимостиПроверьте машину и права на её ВЦОД
Миграция «зависла» без ответаРезультат приходит один раз, после всего циклаДождитесь: длительность зависит от объёма дисков. Прогресс копирования не показывается
Машина не запускается после миграцииИзменилось размещение или не хватает ресурсовПроверьте квоты и наличие узлов ONLINE; машину на virtio-blk запускайте на узле нового пула

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

Прогресс миграции недоступен: результат приходит по завершении цикла и не сообщает, сколько данных скопировано. Оценивайте по объёму дисков машины из таблицы Disks.

Целевой пул задаётся именем вида z02 — пул с именем другого вида целью миграции указать нельзя.

Отмены миграции нет. Если цикл провалился, состояние машины проверяют чтением её карточки, а не повторной командой.

См. также​

Методы API​

Операции этой страницы в API: vm-list, vm-get, vm-statuses, vm-snapshot-list, vms-stop, vms-start, vms-restart, vm-migration, vms-clone, pool-map-by-guid, pools-get, cluster-node-disable — см. Справочник API.