Rescue-режим: відновлення сервера, який не завантажується
Rescue-режим — це завантаження сервера в мінімальну Linux-систему з мережі або з образу, в обхід дисків. Ваші дані при цьому не чіпаються: ви монтуєте кореневий розділ вручну, заходите в нього через chroot і лагодите те, що заважає нормальному завантаженню. Це штатний спосіб виправити fstab, GRUB, initramfs або пароль root без перевстановлення.
- Rescue не форматує диски й не чіпає розділів: усе, що буде зроблено, робите ви самі та вручну.
- Програмний масив треба зібрати командою
mdadm --assemble --scan, сам він не піднімається. - Томи LVM видно лише після
vgchange -ay. - Половина випадків незавантаження — одрук у
/etc/fstabабо UUID, що змінився після заміни диска. - Якщо rescue не допоміг, причина зазвичай у залізі: дивіться SMART і журнал SEL, а не перевстановлюйте систему.
Коли rescue розв'язує задачу, а коли ні
| Симптом | Ймовірна причина | Що робити в rescue |
|---|---|---|
| Консоль висить на рядку GRUB | злетів завантажувач або розмітка | chroot і перевстановлення GRUB на обидва диски |
| Kernel panic, no init found | пошкоджений initramfs, хибний root= | перезібрати initramfs, виправити конфіг GRUB |
| Завантаження стало в emergency mode | помилка в /etc/fstab | перевірити UUID, прибрати зайвий рядок |
| Масив у стані inactive | випав диск, збиті суперблоки | зібрати масив вручну, запустити ресинк |
| Диск не визначається взагалі | відмова носія або бекплейна | rescue не допоможе, потрібна діагностика заліза |
Як потрапити в rescue
Шляхів два. Перший — мережеве завантаження мінімальної системи, яке запускає провайдер на запит: сервер стартує з PXE-образу і пускає по SSH з тимчасовим паролем. Другий — самостійно, через консоль: під'єднайте ISO живої системи як віртуальний привід, див. статтю про IPMI та KVM-over-IP. Опція KVM/IPMI на ZevsHost коштує $5 на місяць і входить у тариф Dedicated Enterprise US.
Знайти і змонтувати кореневий розділ
Не монтуйте перший-ліпший розділ. Спершу подивіться, що взагалі є на дисках:
# які диски, розділи й файлові системи бачить система
lsblk -f
blkid
# стан програмних масивів
cat /proc/mdstat
mdadm --assemble --scan
mdadm --detail /dev/md0
# LVM: томи типово неактивні
pvs && vgs && lvs
vgchange -ay
Далі монтуємо корінь і службові файлові системи. Порядок важливий: спершу корінь, потім усе, що всередині нього.
mount /dev/md1 /mnt
mount /dev/md0 /mnt/boot
# для UEFI не забудьте розділ ESP
mount /dev/nvme0n1p1 /mnt/boot/efi
for d in dev proc sys run; do mount --rbind /$d /mnt/$d; done
chroot /mnt /bin/bash
Якщо chroot скаржиться на відсутність інтерпретатора, ви змонтували не той розділ: перевірте через ls /mnt, що в корені є etc, usr і var.
Типові ремонти
Помилка у fstab
# показати всі рядки fstab, які не резолвляться
findmnt --verify --verbose
# порівняти UUID із fstab з реальними
blkid | sort > /tmp/real-uuid.txt
grep -v '^#' /etc/fstab | grep UUID
Після заміни диска UUID змінюється, і старий рядок зупиняє завантаження. Впишіть новий UUID або додайте опцію nofail, щоб відсутність тому не блокувала старт. Сама процедура заміни розібрана у статті про заміну диска в RAID-масиві.
Завантажувач та initramfs
# Debian/Ubuntu, усередині chroot
grub-install /dev/sda && grub-install /dev/sdb
update-grub
update-initramfs -u -k all
# RHEL, AlmaLinux, Rocky
grub2-install /dev/sda && grub2-install /dev/sdb
grub2-mkconfig -o /boot/grub2/grub.cfg
dracut -f --regenerate-all
Ставте завантажувач на обидва диски дзеркала: машина, де GRUB живе лише на першому носії, після його відмови не підніметься.
Пароль root і журнали
# скидання пароля всередині chroot
passwd root
passwd -S root
# помилки попереднього завантаження, уже поза chroot
journalctl --directory=/mnt/var/log/journal -b -1 -p err
Не створюйте масив заново замість складання. Команда mdadm --create на наявних дисках перезаписує суперблоки і може знищити дані; для відновлення потрібна mdadm --assemble. Так само небезпечна будь-яка mkfs: імена пристроїв у rescue часто відрізняються від звичних. Перед кожною записувальною командою виконайте lsblk -f. Перед виходом перевірте себе: findmnt --verify без помилок, cat /proc/mdstat показує [UU], а ls /mnt/boot містить ядро та initrd потрібної версії. Відновлювати з резервної копії дешевше, ніж після хибної команди.
Перед виходом із rescue
- Вийдіть із chroot і відмонтуйте все у зворотному порядку:
umount -R /mnt. - Зупиніть масив коректно, якщо змінювали його склад:
mdadm --stop /dev/md0. - Зніміть режим мережевого завантаження, інакше сервер знову стартує в rescue.
- Після першого успішного завантаження перевірте диски за методикою зі статті про SMART-діагностику дисків.
Якщо незавантаження повторюється, причина майже завжди в залізі. Тоді має сенс запросити заміну носія або перенесення на іншу конфігурацію з лінійки виділених серверів.
Коротко
- Rescue завантажує окрему систему в пам'ять і не чіпає ваших дисків.
- Масив збирається через
mdadm --assemble --scan, LVM активується черезvgchange -ay. - Більшість поломок лікується в chroot: fstab, GRUB, initramfs, пароль root.
- Завантажувач завжди ставиться на обидва диски дзеркала.
mdadm --createіmkfsу rescue — команди, після яких відновлюють уже з резервної копії.