Переїзд сервера до іншого хостера
Той самий переїзд, про який думають, коли кажуть «треба переїжджати»: сервер стоїть в одного провайдера, має стояти в іншого, і ніхто не хоче збирати його наново з пам'яті. Ось процедура від початку до кінця.
Що переїжджає, а що ні
Переїжджає вся встановлена система: розділи, 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: правила фаєрволів деінде, білі списки в платіжних сервісів, репутація пошти.
- Потримайте старий сервер кілька днів. Це ще один рахунок і відкат, якому не потрібне відновлення з бекапу.
Усі опції утиліти з їхніми значеннями за замовчуванням — у довіднику опцій.
Спробуйте на своєму переїзді
Утиліта безкоштовна, сухий прогін не змінює нічого, а старий сервер лише читається.