reloca.toby XServer

reloca.to/Инструкции

Переезд сервера к другому хостеру

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

Что переезжает, а что нет

Переезжает вся установленная система: разделы, md RAID и LVM, файловые системы с их UUID, каждый пакет, каждый конфиг, задания cron, сертификаты, скрипты, которые кто-то оставил в /opt три года назад. Ничего не переустанавливается, и список программ составлять не надо.

Не переезжает адрес. Новый сервер стоит в другой сети со своим IP, поэтому DNS придётся переключить после переезда. Лицензии, привязанные к MAC или machine id, тоже требуют внимания: machine id перенесённая система сохраняет, а сетевая карта у неё новая.

Что нужно

  • Новый сервер, загруженный в Live OS. В XServer это пункт меню загрузки в панели; утилита работает там, на новой машине.
  • Старый сервер, доступный по ssh под root. Он может работать в своей системе или тоже быть в Live. Утилита определит сама.
  • Сеть между ними. Работает всё от 100 Мбит и выше; чем быстрее, тем короче.

Доступ к панели старого провайдера, бэкап и чьё-либо согласие не нужны. От старой стороны требуется только прочитать диск по ssh.

Переезд по шагам

Зайдите на новый сервер и поставьте утилиту. Нужные пакеты она дотянет сама.

ssh -A root@НОВЫЙ-СЕРВЕР
curl -fsSL reloca.to | bash

Сначала посмотрите план. Сухой прогон читает обе машины, печатает, что он сделал бы, и не меняет ничего ни на одной.

reloca.to -n root@СТАРЫЙ-IP

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

Когда всё выглядит верно, запускайте переезд.

reloca.to root@СТАРЫЙ-IP

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

Пока оно копирует

Утилита живёт в сессии tmux, поэтому обрыв ssh ничего не стоит: зайдите снова и выполните reloca.to -s attach. Прогресс и оценка печатаются по каждому тому, а упавший том можно повторить отдельно: -o redo=4 -s transfer.

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

Переключение и путь назад

Последняя фаза снимает старый сервер с сети и грузит новый в перенесённую систему. Держите открытой консоль нового сервера: первую загрузку видно только там.

Если что-то не так, путь назад — это старый сервер. Его только читали и никогда не писали, поэтому на нём всё, что было. Включите, верните DNS, и ничего не потеряно. По той же причине утилита отказывается перезагружаться после неудачной проверки: код 3 означает, что диск записан, но система не поднимется, так что устраните причину и повторите reloca.to -s verify.

После переезда

  • Переключите DNS на новый адрес. Снизьте TTL за сутки заранее, и переключение займёт минуты.
  • Проверьте, что было привязано к старому IP: правила фаерволов в других местах, белые списки у платёжных сервисов, репутация почты.
  • Подержите старый сервер несколько дней. Это ещё один счёт и откат, которому не нужно восстановление из бэкапа.

Все опции утилиты с их значениями по умолчанию — в справочнике опций.

Попробуйте на своём переезде

Утилита бесплатна, сухой прогон не меняет ничего, а старый сервер только читается.

curl -fsSL reloca.to | bash

Все опции