Миграция виртуальных машин между нодами Proxmox: live и offline

Плановый перенос машин между нодами часто оборачивается ночным простоем и риском потери данных. Мы настраиваем live- и offline-миграцию Proxmox под ключ: готовим кластер, проверяем целостность и держим план отката. Сервисы переезжают без длительных остановок, а ваша команда получает карту кластера и регламенты.
Часто задаваемые вопросы

Миграция Proxmox: где ломается перенос машин между нодами

При переносе виртуальных машин между нодами Proxmox задача выглядит линейной: скопировать память, переключить владение, погасить источник. На практике живая миграция идёт в несколько проходов — сначала переносится основной объём, затем догоняются изменённые страницы памяти. Если гость активно пишет в память (база данных, кэш, очередь), догон не сходится: перенос тянется десятки минут и заканчивается всё той же остановкой, которую никто не планировал.

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

Сеть — отдельный источник отказов. На целевой ноде другой мост, другие метки VLAN, адрес гостя уезжает в чужой сегмент, и сервис становится недоступен, хотя перенос формально прошёл. Кластер виртуализации добавляет свой слой: нода на время выходит из голосования, и при малом числе участников перенос блокирует соседние операции.

Простой сервиса здесь и есть цена ошибки. При офлайн-переносе окно недоступности равно времени копирования диска, а при ручных переключениях администратор поднимает сервис раньше, чем гость действительно стартовал. Дальше разбираем, как это закрывается.

Что даёт плановый перенос: простой, целостность, откат

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

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

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

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

Live и offline миграция Proxmox: сравнение режимов переноса

Оба режима решают одну задачу — перенести работающую виртуальную машину на другую ноду, но по-разному обходятся с её состоянием. При live-переносе память копируется итеративно: сначала весь объём, затем только изменённые страницы, а в конце машина на короткое время останавливается для финальной синхронизации и стартует уже на новом месте. Offline-перенос работает проще: машина гасится, диск и конфигурация переносятся как файлы, после чего она включается на новой ноде.

Выбор режима определяется не удобством, а типом хранилища и допустимым временем недоступности сервиса. Если диски лежат на разделяемом сетевом хранилище, доступном обеим нодам, переносить нужно только состояние памяти. С локальными дисками к состоянию добавляются блоки самого диска, и тогда режим упирается в нагрузку записи: пока идёт догон, машина продолжает писать, и при интенсивном вводе-выводе перенос не сходится — приходится останавливать её и переходить к offline-сценарию.

Вариант Когда подходит Ограничения режима
Live, общее хранилище Диски на разделяемом сетевом хранилище, обе ноды его видят Простой только на финальной синхронизации памяти; при высокой нагрузке запись опережает догон, и перенос не завершается
Live, локальные диски Нужно сохранить сервис, диски физически на ноде Копируется весь объём диска вместе со свободным местом; активная запись переводит перенос в режим с остановкой; проброс физических устройств переносится не всегда
Offline Нагруженные записью и ресурсоёмкие машины, окно обслуживания согласовано Машина недоступна весь перенос; переносятся диск и конфигурация целиком, время зависит от объёма данных
Экспорт и импорт Перенос между несвязанными кластерами или разными ветками платформы Ручные шаги на обеих сторонах, простой до полного переноса и проверки запуска

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

Этапы внедрения: от инвентаризации до передачи в эксплуатацию

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

  1. Аудит кластера. Снимаем инвентарь: машины, привязка к хранилищам, состояние кворума, сетевые мосты, права, гостевые дополнения. Отдельно отмечаем зависимости, из-за которых перенос без остановки невозможен.

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

  3. Настройка. Общее хранилище или репликация между узлами, сеть и адресация, ограничения по нагрузке, резервные копии перед партией. Узлы проходят штатные проверки состояния.

  4. Тестовый прогон. Второстепенная группа машин: замеряем время переключения, целостность данных, доступность сервисов, работу отката. По итогам правим состав партий и границы окна.

  5. Работа в окне. Переносим партиями, следим за загрузкой узлов и хранилищ, критичные сервисы идут первыми. Инженер на связи отвечает за переключение и откат.

  6. Приёмка и передача. Проверка сервисов по списку, сверка данных и журналов, фиксация результата с ответственными за системы. Отдаём регламент переноса, схему кластера и инструкции дежурной смене.

Что остаётся у вас: карта кластера, конфигурации, регламенты

После переноса у вас остаётся не отчёт о работах, а рабочий комплект, по которому кластер можно обслуживать и развивать без нашего участия. Все артефакты лежат в вашем репозитории и читаются штатными средствами Proxmox и обычным текстовым редактором.

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

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

Кейс: кластер из нескольких нод перевели без длительного простоя

Кластер на Proxmox из шести нод обслуживал продуктовый и тестовый контуры. Диски машин лежали локально на нодах, поэтому перенос без остановки был невозможен в принципе: каждую машину гасили, ждали освобождения блокировок, поднимали на целевой ноде и вручную проверяли доступность сервисов. Одно плановое обслуживание — 9 ручных операций на машину и окно в 30–40 минут, которые всегда ставили ночью.

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

После изменений простой машин на общем хранилище сократился до 1–2 секунд — сетевое соединение переезжает вместе с адресом, клиенты видят разве что короткий обрыв. Пакетный перенос крупной машины занимает 6–8 минут вместо 40 и запускается одной командой вместо девяти действий руками. Отдельно ушёл класс отказов: рассинхрон диска между нодами и зависшие блокировки при аварийном завершении переноса больше не всплывают.

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

Чем отличается live-перенос от offline и когда нужен каждый режим?

Разница не в скорости, а в том, что происходит с работающей машиной. В live-режиме память копируется циклами, пока гость продолжает обслуживать запросы, и останавливается виртуальная машина только на финальном переключении. В offline-режиме машину гасят, диск переносится целиком, и простой равен времени копирования.

Выбор режима задаёт тип диска. Если том лежит на общем хранилище, целевая нода видит его сразу, и переключение сводится к передаче состояния памяти. Локальные тома приходится копировать по сети: live-перенос крупного диска идёт часами и завершается лишь тогда, когда скорость записи гостя падает.

В Proxmox VE обе операции штатные, поэтому решают допустимое окно и состояние машины. Сервисам без собственного состояния хватает offline-переключения в техническое окно, а СУБД требуют согласованного порядка остановки — незаписанный кэш в памяти при жёстком гашении теряется.

Режим Когда подходит Ограничения
Live (online) Пауза недопустима, диск на общем хранилище Нужны совместимые процессоры и запас ресурсов на целевой ноде; при активной записи перенос затягивается
Offline (stop) Есть согласованное окно, тома локальные или крупные Простой равен времени копирования; нужен порядок остановки сервисов

Практический критерий: есть общее хранилище и пауза недопустима — live; тома локальные или окно согласовано — offline. Перед переключением проверяем кворум кластера, совместимость процессорных инструкций нод и запас ресурсов на целевой стороне — это и делает перенос плановой операцией с предсказуемым окном.

Частые технические сомнения: совместимость, окна работ, откат

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

Конфигурация гостевой системы отличается от целевой ноды — перенос возможен?

Да, если различия не касаются архитектуры процессора и поддерживаемого набора инструкций. Тип дискового контроллера, модель сетевого адаптера и привязку к мостам мы сверяем заранее и приводим к общему знаменателю на тестовом стенде, а не в момент переключения. Если целевая нода уступает по возможностям, часть параметров выносится в отдельный профиль конфигурации, чтобы гостевая система стартовала без правок внутри.

Сколько нужно окно работ и можно ли обойтись без простоя?

Живой перенос держит службу доступной: страницы памяти передаются на целевую ноду, а финальное переключение занимает доли секунды и укладывается в паузу, незаметную для пользователей. Холодный перенос требует остановки гостевой системы, зато снимает ограничения по нагрузке и объёму дисков. Окно планируем так, чтобы переносить группы машин последовательно и не выводить из строя связанные сервисы одновременно.

Что происходит при сбое и каков порядок отката?

До переключения исходная машина остаётся рабочей копией, поэтому откат — это возврат управления к ней, а не восстановление из резервной копии. Конфигурацию и снимки состояния мы сохраняем перед переносом, а после переключения проверяем доступность служб и целостность данных на целевой ноде. Если проверки не проходят, возврат занимает минуты: гостевая система поднимается на исходной ноде в прежнем виде.

Как перенос нагружает соседние ноды?

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

Обсудим вашу задачу: подберём режим и вернёмся с планом

Чтобы оценка работ опиралась на факты, а не на предположения, нужен срез текущего контура: число узлов в кластере Proxmox, задействованные типы хранилищ, схема сети и то, какие сервисы критичны к остановке. Этого уже достаточно, чтобы разделить парк машин на переносимые живьём и те, что придётся гасить в согласованное окно.

По готовности описания мы возвращаемся с рабочим комплектом, а не с общими словами:

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

Если часть данных ещё не собрана — это не повод откладывать: обсудим задачу в том объёме, который есть, недостающее уточним по ходу. Опишите контур и допустимые простой — дальше мы вернёмся с оценкой и планом переноса.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1141