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Додати серійну консоль у командний рядок ядра перенесеної системи, щоб сервер із 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план нездійсненний або виправлений план відкинуто; нічого не записано

Якщо тут чогось немає або щось незрозуміло — це помилка цієї сторінки. Напишіть нам, і ми її виправимо.

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