Как отдать точку восстановления из цепочки
Когда использовать
Когда ВМ нужно поднять из копии: данные идут обратно — с кластера-хранителя на тот кластер, где ВМ будет работать. Хранитель в этом сценарии отдающая сторона, и его работа — вынуть из цепочки одну историческую точку и отправить её на указанный приёмник.
Порядок обратный привычному: сначала приёмник, потом отправитель. Восстанавливающий кластер открывает приём у себя и возвращает координаты своего узла. Только после этого хранитель запускает выгрузку. Выгрузка асинхронная: кластер подтверждает ретрансляцию сразу, а итог передачи приходит обратным вызовом.
Экранов для цепочек в веб-интерфейсе кластера нет: выгрузку запускает вызывающая сторона — GI или собственный планировщик восстановления. Работа с самой цепочкой — её создание, приём потока и ротация — в «Как управлять цепочками резервных копий».
Предусловия
- привилегия
14002(управление цепочками резервных копий) на кластере-хранителе; feature.backupвcluster.optionsхранителя равна1; при0выгрузка отвечает-25420;- версия vStack Center — 3.0.5;
- цепочка существует, её узел-владелец жив;
- известны координаты приёмника — адрес узла и порт, которые вернул восстанавливающий кластер, открыв приём у себя;
- известно короткое имя точки восстановления, которую нужно отдать.
Шаги
Шаг 1. Возьмите координаты приёмника
Приём открывает восстанавливающий кластер, а не хранитель. Из его ответа возьмите адрес узла-приёмника и порт: они пойдут в параметры выгрузки. Пока приёмник не открыт, выгрузку запускать бессмысленно — поток некуда подключать.
Шаг 2. Определите точку восстановления
Укажите короткое имя снимка — суффикс после @, без пути цепочки. Длина от 1 до
128 символов, состав — латинские буквы, цифры и знаки _, ., -. Пробел,
кириллицу, слеш и @ внутри имени кластер отклоняет кодом -25430. Выгрузка
отдаёт уже существующую точку и нового снимка не создаёт: то, чего в цепочке нет,
выгрузить нельзя.
Списка точек внутри цепочки подсистема не отдаёт, поэтому имена держите в своём реестре — рядом с путём цепочки, полученным при её создании.
Шаг 3. Запустите выгрузку
Запустите выгрузку на кластере-хранителе. Укажите полный путь цепочки, короткое имя точки восстановления и координаты приёмника — адрес его узла и порт.
Необязательный таймаут в секундах ограничивает установку TCP-соединения с приёмником, а не время передачи. Инкрементальная выдача зарезервирована и в текущей версии не работает: выгрузка всегда полная.
Ответ приходит немедленно — это подтверждение ретрансляции: запрос ушёл на узел-владелец пула. Данные в этот момент ещё не переданы.
Шаг 4. Дождитесь итога
Итог передачи приходит обратным вызовом от узла — с тем же идентификатором, что стоял в запросе. Операции, которая вернёт статус выгрузки по требованию, у подсистемы нет, поэтому обратный вызов — единственный источник результата. Сопоставляйте его с запросом по идентификатору и не считайте подтверждение ретрансляции успехом.
Проверка результата
Успех подтверждается с двух сторон. На стороне хранителя — обратным вызовом с итогом передачи. На стороне восстанавливающего кластера — состоянием приёма, который он открывал: именно там появляются данные и оттуда разворачивается ВМ.
Состояние цепочки после выгрузки не меняется: точка остаётся на месте, новых снимков не появляется. Отдать одну и ту же точку можно повторно, на новый приёмник.
Если не получилось
-25420, подсистема резервного копирования выключена. У хранителя
feature.backup в cluster.options равна 0. Проверка идёт до ретрансляции,
поэтому обратного вызова не будет вообще. Обход — включить подсистему на кластере,
который отдаёт данные.
-25430, недопустимый путь цепочки или имя снимка. Указан путь не вида
<pool>/.backup/<leaf> либо имя точки восстановления содержит символы вне набора
«латинские буквы, цифры, _, ., -». Кластер ретранслирует на узлы только пути
внутри .backup, поэтому попытка выгрузить датасет ВМ этой операцией отклоняется.
Обход — подставлять путь целиком таким, каким его вернуло создание цепочки, а имя
точки брать из своего реестра.
-25434, пул цепочки недоступен. Узел-владелец пула не отвечает, и отдавать
поток некому. Данные целы. Обход — вернуть узел в работу; перенести цепочку в другой
пул средствами подсистемы нельзя.
-25436, сбой операции с цепочкой. Общий код отказа. Он закрывает разные
причины, различить их по коду нельзя. Обход — повторить выгрузку, а при устойчивом
повторении смотреть узел-владелец пула и доступность приёмника по указанному адресу
и порту.
Пришло только подтверждение ретрансляции и больше ничего. Ответ на асинхронную выгрузку — не итог. Если обратного вызова нет долго, проверьте, что приёмник открыт и не закрылся по своему таймауту ожидания подключения: тогда выгрузку нужно запускать заново, после повторного открытия приёма.
Имя точки указано неверно. Проверить его заранее нечем — способа перечислить снимки цепочки у подсистемы нет. Ошибка вскроется только итогом передачи. Обход — вести реестр точек на своей стороне и передавать имя оттуда, а не набирать руками.
См. также
- Как управлять цепочками резервных копий — создание цепочки, приём потока, ротация и удаление.
- Резервное копирование кластер-кластер — роли кластеров и границы охвата подсистемы.
Методы API
Операции этой страницы в API: backup-dataset-send, vm-backup-restore — см.
Справочник API.