microsrv:~$
Консоль

← Все записи

Репликация томов виртуальных машин: как не потерять данные при отказе хоста

ОпубликованоОбновлено5 мин чтения

Репликация томов виртуальных машин: как не потерять данные при отказе хостаРепликация томов виртуальных машин: как не потерять данные при отказе хоста

Вычисления можно заменить за секунды. Хранилище нельзя: если единственная копия файловой системы лежала на локальном SSD отозванного хоста, восстанавливать нечего.

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

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


1. Временное и постоянное хранилище: что происходит при отказе

Временный (локальный) диск привязан к жизненному циклу инстанса ВМ или физического хоста. Стоит удалить инстанс или столкнуться со сбоем оборудования — и данные исчезают вместе с сервером. Такой диск дёшев и быстр (высокие IOPS), но годится только для:

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

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

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


2. Репликация — не то же самое, что бэкап

Путаница между бэкапами и репликацией обходится дорого:

Резервная копия (например, снимки в объектном хранилище) Непрерывная репликация
Когда пишется По расписанию или вручную Постоянно / с коротким лагом
RPO Минуты–часы между точками Секунды или меньше
Назначение Откат после логической ошибки, атаки вируса-шифровальщика (ransomware) или ошибки пользователя Пережить отказ текущего хоста
Время восстановления Создать том из снапшота, примонтировать, поднять сервис Перепривязать уже синхронизированный том

Бэкапы нужны всегда. Но когда уведомление об отзыве хоста даёт 30–120 секунд до отключения, спешно разворачивать последний снимок из S3 слишком рискованно. Переключаться лучше на том, который непрерывно реплицировался параллельно с записью.


3. Синхронная и асинхронная репликация: цена RPO

Репликация бывает разной по гарантиям:

  • Синхронная. Запись считается завершённой, когда подтверждена на реплике. Минимальный RPO (для подтверждённых записей часто ≈ 0), выше задержка ввода-вывода (I/O latency).
  • Асинхронная. Запись подтверждается локально, реплика догоняет с задержкой. На задержку записи влияет меньше, но при внезапном отказе первичного узла теряются последние ещё не синхронизированные записи.
  • Периодические снимки. Проще в эксплуатации, худший RPO: по сути классический бэкап.

Строя оркестрацию поверх прерываемых ресурсов, заранее ответьте на вопрос: какой RPO допустим при аварийном отказе хоста? Для кэша CI — минуты. Для PostgreSQL с пользовательскими транзакциями — секунды или меньше. И помните: несохранённое состояние в памяти может пропасть при холодном перезапуске независимо от репликации.


4. Связка с живой миграцией и холодным перезапуском

Живая миграция переносит RAM и процессы. Диск при этом не копируется с нуля в момент переключения: целевой хост должен уже видеть актуальный том (через сетевое или распределённое хранилище либо заранее прогретую реплику). Иначе после stop-and-copy гостевая ОС поднимется без корневой файловой системы.

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

  1. вычислительные ресурсы на исходном хосте потеряны;
  2. оркестратор поднимает ВМ на новом узле;
  3. том подключается из реплики;
  4. сеть (см. eBPF-слой) возвращает стабильный IP и маршруты.

Данные на томе сохранены, приложение проходит обычную загрузку. Это не работа без простоя, но контролируемое восстановление вместо сценария «экземпляр исчез вместе с диском».


5. Как microsrv сохраняет тома

В платформе microsrv репликация хранилища — стандарт для всех клиентов:

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

Вместе с оркестратором и eBPF-сетью это превращает прерываемые мощности в ВМ, на которых можно держать и пакетные задачи, и сервисы с локальной файловой системой. Экономия — около 25% относительно тарифов крупных облаков.


6. Главные выводы и чек-лист

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

Источники и что почитать дальше

Как оценивать RPO: при синхронной репликации PostgreSQL подтверждённые записи имеют RPO≈0; при асинхронной последние секунды могут потеряться при внезапном отказе. Тестируйте оба пути: штатное вытеснение и холодный перезапуск.

FAQ

Репликация — это бэкап? Нет. Репликация переживает потерю хоста (RPO — секунды); бэкап (снапшоты в S3) откатывает логические ошибки. Нужно и то и другое.

Нужно ли чекпоинтить в S3 на Spot? Да, для инвариантов приложения, но не как единственная защита от потери файловой системы.

Запускайте виртуальные машины в недорогом облаке для разработчиков

microsrv автоматически управляет прерываемыми ресурсами облаков: переносит ВМ до отзыва хоста, сохраняя диски, IP-адреса и открытые соединения.

Перейти в консольЗадать вопрос