reloca.toby XServer
версия 1.1 от 2026-11-05

Все опции в одном месте

reloca.to работает вообще без опций: он читает обе машины и решает сам. Эта страница — для тех переездов, где одно из этих решений надо перебить. Всё это есть и в reloca.to -h на Live.

Командная строка

reloca.to [-n] [-y] [-i KEYFILE] [-d DISK] [-s STEP] [-o key=value]… [DONOR]. DONOR — это [root@]host[:port] старого сервера: в Live OS для off-line переезда или в своей системе для on-line. Режим определяется по ответу.

ФлагЧто делает
-n, --dry-runПечатать каждую команду и не менять ничего — ни на одной из машин. Состояние пишется в /run/reloca.to/dry/, поэтому настоящий запуск потом начинается с чистого.
-y, --yesОтвечать «да» на все вопросы, включая тот, где надо ввести имя диска. Для скриптов; без терминала и без -y любой вопрос — это отказ.
-i KEYFILE, --keyssh-ключ к старому серверу. Без него утилита делает сеансовый ключ и один раз спрашивает пароль.
-d DISK, --diskЦелевой диск на этой машине, когда их несколько: /dev/sda, /dev/nvme0n1, /dev/disk/by-id/…. Два диска через запятую вместе с -o raid=1.
-s STEP, --stepВыполнить одну фазу вместо всего переезда. Фазы идемпотентны: сделанное пропускается.
-o key=value,
--option
Опции ниже, по одному -o на каждую. Неизвестный ключ отклоняется, поэтому опечатка не может тихо ничего не сделать; так же отклоняется строка, соединяющая две опции запятой.
-V, --versionВерсия утилиты, путь к библиотеке и id сборки Live, на котором она работает.
-h, --helpТот же справочник, в терминале.

Фазы, которые можно запускать отдельно

Без -s утилита проходит их в этом порядке и спрашивает дважды: перед первой записью и перед переключением. С -s выполняется одна фаза — так повторяют упавшую фазу или смотрят план до того, как что-то произойдёт.

ФазаЧто делает
plan DONORТолько чтение: снять инвентарь обеих машин, записать /run/reloca.to/plan, напечатать сводку. На диски не пишется ничего.
check [PLAN]Проверить план, поправленный руками, и отказать с причиной, если он не сработает.
applyРазметка, LVM, swap, mkfs на этой машине — после того как вы прочитали, что на диске, и ввели его имя и размер.
transferКопирование томов: off-line — partclone и tar, on-line — reloca-agent проходами под нагрузкой.
postfix [ROOT]В chroot на копии: fstab, mdadm, initramfs с новыми драйверами, grub, сеть. Каждая правка пишется в лог как diff.
verify [ROOT]Десятки проверок, что копия загрузится: загрузочная запись, initramfs, cmdline, fstab, сеть. Код 3 означает «пока не перезагружайте».
cutoverСамо переключение: старый сервер уходит из сети, новый поднимается как перенесённая система.
inventory [DONOR]Сырые записи этой машины или донора: то, из чего строится план.
attachНазад в запущенную сессию tmux после обрыва ssh, или хвост лога, если сессии нет.
cleanupУбрать за утилитой: монтирования, активированные группы томов, пометки «только чтение», снимки предпроверки.

Опции

-o key=value, и так для каждого ключа: -o compress=none -o patience=600. Запятая принадлежит значению (driver=mod1,mod2, console=ttyS0,115200), поэтому опции ею не соединяются, а строка, которая это делает, отклоняется. Значение по умолчанию выделено; ключ без значения по умолчанию не делает ничего, пока вы его не задали. «on-line» и «off-line» помечают ключи, относящиеся только к одному режиму.

ОпцияЗначенияЧто делает
Режим, канал и сжатие
mode=detected | online | offlineКакой режим использовать, не полагаясь на автоопределение. Донор отвечает либо из Live OS (off-line relocation), либо из своей работающей системы (on-line relocation).
compress=auto | zstd[:LEVEL] | lz4 | noneOn-line: каждый кадр данных сжимается на доноре, а auto выбирает уровень (от 1 до 7) по скорости процессора донора и канала, которые измеряются по ходу копирования. Off-line: потоковый компрессор, по умолчанию lz4. none — для 10 GbE, где одно ядро сжимает медленнее, чем передаёт канал.
cipher=aes128-gcm@openssh.com | chacha20-poly1305@openssh.comШифр канала данных. chacha20 — для процессоров без AES-NI, там он быстрее.
data=off-linessh | rawКанал данных при off-line переезде: второй sshd на доноре или busybox nc под watchdog'ом для доверенного канала, где шифрование становится узким местом.
sshd-port=off-line2222Порт sshd данных на доноре, если 2222 там уже занят.
watchdog=off-line15 minМинуты без прогресса на томе с data=raw, после которых передача убивается и повторяется: поток nc сам не заметит мёртвого собеседника.
Разметка нового сервера
root=auto | block | filesКак переезжает корень: блочно, если влезает в новый диск, или пофайлово в свежесозданную файловую систему. auto решает по размеру.
label=auto | gpt | dosТаблица разделов нового диска. auto повторяет донора и превращает dos в gpt свыше 2 TiB или под UEFI.
raid=1Два одинаковых диска нового сервера становятся парами md RAID1 послотно, с grub и ESP на обоих. -d /dev/sda,/dev/sdb называет их; если кандидатов ровно два, пара берётся сама.
fsck=quick | fullПосле блочной копии: проверка только для чтения (e2fsck -n, xfs_repair -n) или полный e2fsck -f на неизменённых томах.
redo=NСколько раз перезапускается упавший том: блочный — с нуля, пофайловый — после повторного mkfs.
boot-part=SIZEЗапросить отдельный слот /boot такого размера в начале диска для BIOS-цели свыше 2 TiB, где на доноре его нет. Пока не реализовано: фаза плана отказывает и говорит об этом.
On-line relocation
chunk=on-line64KГранулярность трекера записей, степень двойки. Меньше — меньше данных придётся переслать следующим проходом и больше битовая карта в памяти донора.
tracker=on-lineauto | bpf | ftraceКак отслеживаются записи на доноре: программа eBPF на tracepoint блочного слоя или ftrace там, где ядро для неё слишком старое (CentOS 7). auto пробует bpf и отступает к ftrace.
converge=on-line10 sТа пауза, которую вы заказываете: агент пересылает дельты, пока оставшаяся не будет передаваться столько секунд или меньше на измеренной скорости, и тогда морозит.
passes=on-line8Максимум проходов дельты. Агент сам поднимает этот предел, когда его измерения говорят, что ещё несколько проходов дадут заказанное окно и уложатся в бюджет терпения.
patience=on-line1800 sСколько дополнительного копирования стоит более короткая пауза. Агент измеряет, как быстро донор пишет и как быстро несёт канал, печатает, сколько проходов и минут стоила бы более короткая пауза, и останавливается на этом бюджете, а не копирует всю ночь.
max-est=on-line100 sСамая длинная пауза, на которую этот запуск имеет право, когда дельты перестали уменьшаться: если оценка не больше — морозит, если больше — запуск отказывается, ничего не морозится, донор остаётся нетронутым.
precheck=on-line1 | 0Перед настоящим переключением: заморозить, снять снимок копии, разморозить донора и прогнать доработку и проверку на этом снимке, пока донор работает дальше. Только потом догнать и заморозить по-настоящему. Стоит одного лишнего прохода дельты и находит незагружаемую цель, пока у вас ещё две машины.
precheck-dir=on-line/var/tmp/reloca.toГде предпроверка держит copy-on-write файлы своих снимков.
precheck-cow=on-line2GПространство copy-on-write на том для снимков предпроверки: в него должно поместиться всё, что доработка запишет в копию.
verify-hash=on-line1С замороженным донором прочитать каждый том с обеих сторон ещё раз и сравнить sha256. Самая сильная проверка, и стоит она полного чтения обоих.
stall=on-line300 sПолная тишина от донора такой длительности считается зависанием: передача падает с сообщением, а не висит до утра. 0 — не сдаваться никогда.
settle=on-line1000 msПосле закрытия каждой эпохи трекера ждать хотя бы столько записей, которые уже в пути, чтобы блок, поставленный в очередь до переключения, попал в правильный проход.
cutover-port=on-line2223Порт на новом сервере, который замороженный донор опрашивает за последней командой. Донор подключается сам, поэтому не надо логиниться на сервер с замороженными файловыми системами.
Перенесённая система: загрузка и сеть
nic=eth0Имя, которое получит основной интерфейс на новом сервере. Перенесённая система привязывается к нему, поэтому её сетевая конфигурация работает, как бы ни звалась новая карта.
donor-nic=IFACEКакой интерфейс старого сервера считать основным, если инвентарь не определил. По умолчанию — тот, что с маршрутом по умолчанию.
nic-pin=1 | 0Записать правило udev, привязывающее eth0 к MAC загрузочного интерфейса нового сервера. Выключите для цели, чей MAC ещё изменится, например для ВМ, которую собираетесь клонировать.
driver=MOD[,MOD]Дополнительные модули в initramfs перенесённой системы, когда автоопределения по modalias нового оборудования не хватает, чтобы добраться до корня.
console=ttyS0,115200Добавить serial-консоль в командную строку ядра перенесённой системы, чтобы сервер с BMC или серийным портом можно было смотреть при загрузке.
bootorder=pxe | localТолько UEFI: оставить PXE первым в NVRAM нового сервера (так он грузит Live, поэтому вторая попытка всегда возможна) или поставить диск первым.
cloudinit=disable | keepДонор, поставленный из облачного образа, несёт cloud-init, который перепишет сеть при первой загрузке и может переименовать хост. disable отключает только его сетевую конфигурацию и работу с именем хоста; keep не трогает ничего.
Переключение и предохранители
cutover=netdown | poweroff | kexec | noneЧто делает последняя фаза. netdown снимает донора с сети и перезагружает новый сервер в перенесённую систему; poweroff вместо этого гасит донора; kexec стартует перенесённое ядро без прохода через прошивку; none оставляет обе машины как есть и печатает то, что вы сделали бы руками.
expect=SERIAL | MACДонор обязан иметь этот DMI serial или этот MAC загрузочного интерфейса, иначе запуск останавливается, ничего не тронув. Защита от того, чтобы навести утилиту на чужую машину.
force=1Пропустить два отказа: «инвентарь изменился с момента плана» и «эта цель уже перенесена». Оба существуют, чтобы недоделанный запуск не записал поверх сделанного.
offline=1Работать без apt, на Live без доступа к зеркалу: документированная деградация, где XFS off-line отказывается совсем, а tmux и pv отсутствуют.
raw=DIRТолько -s inventory: сложить сырые файлы инвентаря в этот каталог. Так делаются тестовые фикстуры утилиты.

Коды выхода

То, что получает оболочка. Важен код 3: диск уже записан, поэтому надо устранить причину и повторить проверку, а не перезагружаться.

КодЗначение
0готово
1сбой во время работы, см. /run/reloca.to/log
2окружение: не полный Live, сбой apt или ssh, донор — эта же машина
3проверка не прошла: диск записан, не перезагружайте; устраните причину и повторите -s verify
4план неосуществим или исправленный план отклонён; ничего не записано

Если чего-то здесь нет или что-то непонятно — это ошибка этой страницы. Напишите нам, и мы её исправим.

Назад на главную