Безкоштовний інструмент переїзду від XServer

Переїзд сервера однією командою. З усім, що на ньому є.

reloca.to переносить робочий Linux-сервер з будь-якого майданчика на сервери XServer мережею: розділи, RAID і LVM, файлові системи, завантажувач і мережеві налаштування. Ви запускаєте одну команду — і отримуєте той самий сервер на новому залізі.

$curl -fsSL reloca.to | bash
Виконується на новому сервері, завантаженому в XServer Live OS. Старий сервер лише читається — жодних змін на ньому.

Як це працює

Це не «образ диска». reloca.to розуміє, що саме лежить на сервері, будує план під нове залізо й сам доводить систему до завантаження.

1Інвентаризація

Обидві машини завантажені в Live OS. Утиліта знімає диски, розділи, md RAID, LVM, файлові системи з їхніми можливостями, fstab, ядра, завантажувач і мережу — з обох боків.

2План

З двох інвентарів народжується текстовий план: нова розмітка, що копіювати блочно, а що файлами, які UUID зберегти. Його можна прочитати й виправити до першого запису.

3Розмітка

Новий диск розмічається за планом; swap і файлові системи створюються з тими самими UUID, label і набором можливостей, що й у джерела, — fstab і grub працюють далі.

4Передача

Томи летять мережею через partclone і tar зі стисненням lz4, захищеним каналом, з прогресом і ETA. Збій одного тому — повтор лише його.

5Доопрацювання

У chroot виправляються fstab, mdadm, initramfs із драйверами нового контролера, grub для BIOS або UEFI; мережевий інтерфейс перейменовується на eth0.

6Перевірка й перемикання

Десятки перевірок до перезавантаження: завантажувальний запис, initramfs, cmdline, мережа. Лише після зеленої перевірки старий сервер іде з мережі, а новий завантажується.

Встановлення і швидкий старт

Обидва сервери завантажені в XServer Live OS. На новому сервері (реципієнті), зайшовши по ssh:

# встановити утиліту (пакети, яких бракує, вона довантажить сама)
curl -fsSL reloca.to | bash

# сухий прогін: план і кожна команда, нічого не записується
reloca.to -n all 10.0.0.12 auto

# повний переїзд: план → підтвердження → розмітка → передача → доопрацювання → перевірка → cutover
reloca.to all 10.0.0.12 auto

10.0.0.12 — адреса старого сервера в Live, auto — єдиний диск нового. Утиліта сама називає машини source.reloca.to і destination.reloca.to, тож у промпті та в логах завжди видно, де ви.

Встановити й одразу запустити: curl -fsSL reloca.to | bash -s -- plan 10.0.0.12 auto

Чого утиліта ніколи не робить

  • Не пише на старий сервер — ні fsck, ні resize. Він лишається точкою відкату.
  • Не стирає диск, доки ви не прочитаєте, що на ньому зараз, і не введете його ім'я та розмір з екрана.
  • Не форматує «за замовчуванням»: кожна ФС створюється з можливостями джерела і звіряється одразу після mkfs.
  • Не перезавантажує новий сервер без зеленої перевірки.
  • Не чіпає інші диски нового сервера — на час роботи вони переводяться в read-only.

Інструкція з переносу

Повний цикл за фазами. Кожну можна запускати окремо — зроблене пропускається за маркерами, обрив ssh нічого не коштує (утиліта живе в tmux: reloca.to attach).

# 1. інвентар обох сторін і план → /run/reloca.to/plan
reloca.to plan 10.0.0.12 auto
$EDITOR /run/reloca.to/plan      # за бажанням поправити
reloca.to check                  # переперевірка правок

# 2. розмітка, LVM, swap, mkfs — після того, як ви підтвердите, що саме буде стерто
reloca.to apply

# 3. передача томів (повтор того, що впав: -o redo=4)
reloca.to transfer

# 4. chroot: fstab, mdadm, initramfs, grub, мережа (-n — лише diff'и)
reloca.to postfix

# 5. перевірки до перезавантаження; код 3 = не перезавантажувати, лагодити
reloca.to verify

# 6. старий сервер з мережі, новий — у мігровану ОС
reloca.to cutover kexec          # або netdown | poweroff | none
Код виходуЩо означає
0готово
1збій під час виконання — дивіться /run/reloca.to/log
2оточення: не full Live, apt/ssh не вдалися, донор — ця сама машина
3перевірка не пройшла: диск записано, не перезавантажувати; полагодити й повторити verify
4план нездійсненний або відхилений — нічого не записано

Корисні опції: -o root=files — переливати корінь файлами, якщо він не влазить; -o compress=none для 10 GbE; -o nic=eth1 — інше ім'я інтерфейсу; -y -i KEY -o callback=URL — без термінала, із задачі панелі.

Що підтримується

Переїзд «як є» між різним залізом — з програмного RAID на апаратний, з великих дисків на менші, з фізики на віртуалку.

ЗвідкиКудиСтатус
Debian 10–13, Ubuntu 18.04–24.04будь-який сервер XServer: dedicated з апаратним RAID, один диск, VPSготово
CentOS 7, Rocky / Alma / RHEL 8–9те самеу роботі
md RAID будь-якого рівня, LVM, LVM на md, звичайні розділи MBR/GPTодин диск або RAID-том контролера, GPT понад 2 TBготово
ext2/3/4, XFS; swap-розділи, LV і swap-файли; ESPблочне клонування або файлова копія з тими самими UUID і можливостямиготово
BIOS → BIOS, UEFI → UEFIUEFI → BIOS і BIOS → UEFI для Debian/Ubuntu (фізика → VM)готово
диск джерела більший або менший за новийкорінь розтягується або переливається файламиготово
ifupdown, netplan, systemd-networkd, ifcfg, NetworkManagerінтерфейс стає eth0, MAC оновлюєтьсяготово
Windows—окремий інструмент

Чому переїжджати до XServer

Ми зробили reloca.to для власних переїздів між дата-центрами — і віддаємо його безкоштовно всім, хто переїжджає до нас.

Безкоштовно й без простою «на вихідні»

Перенесення триває від пів години до кількох годин залежно від обсягу даних. Старий сервер працює до самого cutover.

Той самий сервер, нове залізо

Ті самі UUID, fstab, пакети, конфіги та сервіси. Змінюється лише те, що мусить змінитися: драйвери контролера, завантажувач, ім'я мережевого інтерфейсу.

Прозоро й перевірювано

Кожна команда друкується й потрапляє в лог — план і є runbook. Перед перезавантаженням десятки перевірок, а старий сервер лишається недоторканим для відкату.

Допоможемо, якщо щось нестандартне

Екзотична розмітка, стара ОС, власні скрипти — напишіть нам, розберемо разом. Інструмент розвивається на реальних переїздах клієнтів.