reloca.toby XServer

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

С VPS на выделенный сервер

У виртуалки кончился диск, ядра или терпение к соседям. Система на ней в порядке и должна остаться такой, как есть, только на своём железе.

Что на самом деле меняется под системой

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

  • Диски перестают быть vda и становятся sda или nvme0n1. Всё, что в fstab или в загрузчике называет устройство вместо UUID, сломалось бы, поэтому копия сохраняет UUID, и имена перестают иметь значение.
  • Драйвер virtio уступает место настоящему контроллеру, который обязан быть в initramfs, иначе ядро вообще не доберётся до корня.
  • Прошивка может отличаться: многие VPS — это BIOS там, где железо UEFI, или наоборот.
  • Сетевая карта новая, с новым MAC и часто с новым именем.

Всё это утилита делает на фазе доработки: собирает initramfs с драйверами нового контроллера, ставит grub под ту прошивку, которая у цели действительно есть, переименовывает основной интерфейс в eth0 и привязывает его к новому MAC, а остальную систему не трогает.

Как завести VPS в переезд

Если VPS продолжает работать, готовить на нём не надо ничего: утилита читает его диски по ssh прямо под нагрузкой, и это on-line режим. Если копировать остановленным, нужен Live OS, и для VPS есть два пути.

curl -fsSL reloca.to/live | bash

Эта команда перезагружает машину прямо в Live через kexec, сохраняя адрес. Там, где kexec не работает (Hyper-V, Azure и несколько облаков), подключите reloca.to/live.iso через консоль провайдера или панель VPS и выберите в меню full.

Переезд

На новом сервере, загруженном в Live OS:

ssh -A root@НОВЫЙ-СЕРВЕР
curl -fsSL reloca.to | bash
reloca.to -n root@IP-VPS      # план, ничего не пишется
reloca.to root@IP-VPS

Два диска в новом сервере и нет аппаратного RAID? Соберите зеркало заодно:

reloca.to -d /dev/sda,/dev/sdb -o raid=1 root@IP-VPS

Утилита разложит пары md RAID1 послотно, поставит загрузчик на оба диска и добавит mdadm в перенесённую систему, если его там не было. VPS с одним диском становится сервером, который переживает потерю одного.

Что кусается на этом маршруте

  • cloud-init. VPS, поставленный из облачного образа, несёт его, и при первой загрузке он перепишет сеть и, возможно, имя хоста. Утилита по умолчанию отключает его работу с сетью и именем; -o cloudinit=keep, если есть причина оставить.
  • Диск меньше. Новый сервер не обязан быть больше. Если данные влезают, корень едет пофайлово в свежую файловую систему с тем же UUID и фичами, и загрузчик ничего не замечает.
  • Лицензии и белые списки. IP меняется, поэтому всё, что к нему привязано, надо обновить: правила фаерволов в других местах, платёжные сервисы, репутация почты.
  • Первая загрузка. Смотрите её на консоли нового сервера. У VPS была консоль в панели, у выделенного сервера это BMC, и только там видно первый старт.

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

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

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

curl -fsSL reloca.to | bash

Все опции